mlx-bun 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +362 -0
  3. package/THIRD_PARTY_LICENSES.md +41 -0
  4. package/bin/mlx-bun.mjs +32 -0
  5. package/docs/curve-designer.html +303 -0
  6. package/docs/design/adapters-end-to-end.md +201 -0
  7. package/docs/design/compat-cli-surface-design.md +227 -0
  8. package/docs/design/docs-reorg-plan.md +152 -0
  9. package/docs/design/hlg-sampling.md +340 -0
  10. package/docs/design/memory-system.md +339 -0
  11. package/docs/design/optimization_plan.md +344 -0
  12. package/docs/design/parallel-slots.md +515 -0
  13. package/docs/design/runtime-isolation.md +247 -0
  14. package/docs/design/segmented-backward-training.md +508 -0
  15. package/docs/investigations/chunk-finetune-experiment.md +84 -0
  16. package/docs/investigations/curve-bisector-routing.md +123 -0
  17. package/docs/investigations/curve-runs/bisector-route.json +98 -0
  18. package/docs/investigations/curve-runs/bisector-trace.json +1393 -0
  19. package/docs/investigations/curve-runs/curve-terrain.json +1179 -0
  20. package/docs/investigations/curve-runs/curve-terrain.svg +42 -0
  21. package/docs/investigations/curve-terrain.html +105 -0
  22. package/docs/investigations/expert-offload-single-user-moe.md +292 -0
  23. package/docs/investigations/hlg-ab.html +34 -0
  24. package/docs/investigations/hlg-explorer.html +238 -0
  25. package/docs/investigations/hlg-figs/cliff.svg +1 -0
  26. package/docs/investigations/hlg-figs/cross.svg +1 -0
  27. package/docs/investigations/hlg-figs/edges.svg +1 -0
  28. package/docs/investigations/hlg-figs/k20-grids.svg +1 -0
  29. package/docs/investigations/hlg-figs/k20-peaks.svg +1 -0
  30. package/docs/investigations/hlg-figs/lw-curve.svg +1 -0
  31. package/docs/investigations/hlg-figs/terrain.svg +1 -0
  32. package/docs/investigations/hlg-report.html +262 -0
  33. package/docs/investigations/hlg-runs/hlg-ab.json +149 -0
  34. package/docs/investigations/hlg-runs/hlg-blind-prompts.md +87 -0
  35. package/docs/investigations/hlg-runs/hlg-blind.json +107 -0
  36. package/docs/investigations/hlg-runs/hlg-cliff.json +197 -0
  37. package/docs/investigations/hlg-runs/hlg-cross.json +505 -0
  38. package/docs/investigations/hlg-runs/hlg-edge.json +388 -0
  39. package/docs/investigations/hlg-runs/hlg-eval1.json +25 -0
  40. package/docs/investigations/hlg-runs/hlg-frontier.json +86 -0
  41. package/docs/investigations/hlg-runs/hlg-grid.json +242 -0
  42. package/docs/investigations/hlg-runs/hlg-grid2.json +343 -0
  43. package/docs/investigations/hlg-runs/hlg-lw-coarse.json +110 -0
  44. package/docs/investigations/hlg-runs/hlg-map.json +383 -0
  45. package/docs/investigations/hlg-runs/run0-original.log +159 -0
  46. package/docs/investigations/hlg-runs/runA-recommended.log +131 -0
  47. package/docs/investigations/hlg-runs/runAA-cliff-cpm5.log +26 -0
  48. package/docs/investigations/hlg-runs/runAB-grid2-e4b.log +18 -0
  49. package/docs/investigations/hlg-runs/runAC-peak-e4b-partial.log +25 -0
  50. package/docs/investigations/hlg-runs/runAD-ab-samples.log +8 -0
  51. package/docs/investigations/hlg-runs/runAE-edge-e4b.log +51 -0
  52. package/docs/investigations/hlg-runs/runAF-logit-calibration.log +10 -0
  53. package/docs/investigations/hlg-runs/runAG-eval-config2.log +16 -0
  54. package/docs/investigations/hlg-runs/runB-gain-variants.log +192 -0
  55. package/docs/investigations/hlg-runs/runC-pivots.log +162 -0
  56. package/docs/investigations/hlg-runs/runD-oetf.log +132 -0
  57. package/docs/investigations/hlg-runs/runE-eotf.log +162 -0
  58. package/docs/investigations/hlg-runs/runF-shaper-working.log +86 -0
  59. package/docs/investigations/hlg-runs/runG-shaper-sweep.log +101 -0
  60. package/docs/investigations/hlg-runs/runH-wsweep.log +176 -0
  61. package/docs/investigations/hlg-runs/runI-asweep.log +176 -0
  62. package/docs/investigations/hlg-runs/runJ-knobmap.log +49 -0
  63. package/docs/investigations/hlg-runs/runK-frontier.log +19 -0
  64. package/docs/investigations/hlg-runs/runL-widemap.log +65 -0
  65. package/docs/investigations/hlg-runs/runM-frontier-emb.log +15 -0
  66. package/docs/investigations/hlg-runs/runN-verify.log +116 -0
  67. package/docs/investigations/hlg-runs/runO-frontier-seed5000.log +15 -0
  68. package/docs/investigations/hlg-runs/runP-grid-AxSm.log +15 -0
  69. package/docs/investigations/hlg-runs/runQ-grid-tgW.log +15 -0
  70. package/docs/investigations/hlg-runs/runR-blind-transcript.log +79 -0
  71. package/docs/investigations/hlg-runs/runS-cross-coherence.log +33 -0
  72. package/docs/investigations/hlg-runs/runT-cross-cpm5.log +33 -0
  73. package/docs/investigations/hlg-runs/runU-cross-12b.log +33 -0
  74. package/docs/investigations/hlg-runs/runV-lw-e4b.log +22 -0
  75. package/docs/investigations/hlg-runs/runW-lw-12b.log +22 -0
  76. package/docs/investigations/hlg-runs/runX-lw-cpm5.log +22 -0
  77. package/docs/investigations/hlg-runs/runY-cliff-e4b.log +26 -0
  78. package/docs/investigations/hlg-runs/runZ-cliff-12b.log +26 -0
  79. package/docs/investigations/hlg-sampling-investigation.md +970 -0
  80. package/docs/investigations/lab-build-journal.md +157 -0
  81. package/docs/investigations/pi-builtin-investigation.md +308 -0
  82. package/docs/investigations/starter-model-port-handoff.md +323 -0
  83. package/docs/planning/IDEAS.md +26 -0
  84. package/docs/planning/PRODUCT_ROADMAP.md +426 -0
  85. package/docs/planning/ResearchTopics.md +119 -0
  86. package/docs/planning/chunk-task-roadmap.md +77 -0
  87. package/docs/planning/journal.md +155 -0
  88. package/docs/reference/distribution.md +121 -0
  89. package/docs/reference/embedding.md +168 -0
  90. package/docs/reference/library-api.md +153 -0
  91. package/docs/reference/server-api.md +224 -0
  92. package/docs/reference/server-config.md +243 -0
  93. package/docs/segmented-backward-handoff.md +148 -0
  94. package/package.json +68 -0
  95. package/src/anthropic.ts +491 -0
  96. package/src/chat-template.ts +186 -0
  97. package/src/cli.ts +1075 -0
  98. package/src/config.ts +229 -0
  99. package/src/curve-sampler.ts +122 -0
  100. package/src/dataset/generators.ts +1087 -0
  101. package/src/dataset/index.ts +12 -0
  102. package/src/dataset/job.ts +81 -0
  103. package/src/dataset/llm.ts +71 -0
  104. package/src/dataset/registry.ts +528 -0
  105. package/src/download.ts +283 -0
  106. package/src/eval/README.md +86 -0
  107. package/src/eval/kl-prompts.ts +29 -0
  108. package/src/eval/kl.ts +294 -0
  109. package/src/eval/quality-db.ts +92 -0
  110. package/src/eval/runner.ts +102 -0
  111. package/src/eval/score.ts +49 -0
  112. package/src/eval/tasks/bfcl.ts +500 -0
  113. package/src/eval/tasks/gsm8k.ts +85 -0
  114. package/src/eval/tasks/hashhop.ts +109 -0
  115. package/src/eval/tasks/humaneval.ts +252 -0
  116. package/src/eval/tasks/ifeval.ts +354 -0
  117. package/src/eval/tasks/mmlu.ts +145 -0
  118. package/src/evaldb.ts +199 -0
  119. package/src/expert-offload-build.ts +77 -0
  120. package/src/expert-offload.ts +61 -0
  121. package/src/expert-trace.ts +67 -0
  122. package/src/fit.ts +254 -0
  123. package/src/generate.ts +451 -0
  124. package/src/harness-pi.ts +177 -0
  125. package/src/hf-push.ts +628 -0
  126. package/src/index.ts +22 -0
  127. package/src/jobs/db.ts +139 -0
  128. package/src/jobs/index.ts +29 -0
  129. package/src/jobs/job-entry.ts +106 -0
  130. package/src/jobs/runner.ts +304 -0
  131. package/src/jobs/sse.ts +114 -0
  132. package/src/jobs/types.ts +58 -0
  133. package/src/kv-store.ts +185 -0
  134. package/src/lora.ts +314 -0
  135. package/src/md-modules.d.ts +7 -0
  136. package/src/mlx/array.ts +237 -0
  137. package/src/mlx/autograd.ts +267 -0
  138. package/src/mlx/checkpoint.ts +116 -0
  139. package/src/mlx/compile.ts +158 -0
  140. package/src/mlx/custom-vjp.ts +140 -0
  141. package/src/mlx/ffi.ts +433 -0
  142. package/src/mlx/metal-kernel.ts +130 -0
  143. package/src/mlx/ops.ts +707 -0
  144. package/src/mmap.ts +90 -0
  145. package/src/model/batched-mask.ts +204 -0
  146. package/src/model/batched-rotating.ts +300 -0
  147. package/src/model/compiled-decode.ts +681 -0
  148. package/src/model/factory.ts +27 -0
  149. package/src/model/fingerprint.ts +33 -0
  150. package/src/model/flash-attention.ts +674 -0
  151. package/src/model/fused-decode-kernel.ts +305 -0
  152. package/src/model/fused-geglu-kernel.ts +87 -0
  153. package/src/model/gemma4-base.ts +1616 -0
  154. package/src/model/gemma4.ts +1012 -0
  155. package/src/model/generated/gemma4-12b.ts +526 -0
  156. package/src/model/generated/gemma4-26b.ts +500 -0
  157. package/src/model/generated/gemma4-e4b.ts +757 -0
  158. package/src/model/generated/index.ts +18 -0
  159. package/src/model/minicpm5.ts +278 -0
  160. package/src/model/qwen3-delta.ts +224 -0
  161. package/src/model/qwen3_5.ts +429 -0
  162. package/src/model/support.ts +46 -0
  163. package/src/native-pack.ts +152 -0
  164. package/src/pi-provider.ts +95 -0
  165. package/src/pi-terminal.ts +264 -0
  166. package/src/pi-web.ts +924 -0
  167. package/src/preflight.ts +123 -0
  168. package/src/prompt-cache.ts +113 -0
  169. package/src/quantize/allocator.ts +627 -0
  170. package/src/quantize/calibration.ts +180 -0
  171. package/src/quantize/config-writer.ts +132 -0
  172. package/src/quantize/index.ts +57 -0
  173. package/src/quantize/job.ts +136 -0
  174. package/src/quantize/quantizer.ts +462 -0
  175. package/src/quantize/safetensors-writer.ts +171 -0
  176. package/src/quantize/sensitivity.ts +234 -0
  177. package/src/registry.ts +336 -0
  178. package/src/responses.ts +774 -0
  179. package/src/safetensors.ts +158 -0
  180. package/src/sampler.ts +517 -0
  181. package/src/serve/batch-scheduler.ts +362 -0
  182. package/src/serve/generation-gateway.ts +160 -0
  183. package/src/server.ts +1891 -0
  184. package/src/spec/drafter.ts +261 -0
  185. package/src/spec/generate.ts +221 -0
  186. package/src/status-page.html +497 -0
  187. package/src/tokenizer.ts +38 -0
  188. package/src/tool-call.ts +242 -0
  189. package/src/train/dataset.ts +461 -0
  190. package/src/train/export.ts +32 -0
  191. package/src/train/forward.ts +229 -0
  192. package/src/train/index.ts +43 -0
  193. package/src/train/job.ts +148 -0
  194. package/src/train/lora-params.ts +194 -0
  195. package/src/train/loss.ts +342 -0
  196. package/src/train/merge.ts +195 -0
  197. package/src/train/optimizer.ts +176 -0
  198. package/src/train/rank.ts +101 -0
  199. package/src/train/segmented.ts +520 -0
  200. package/src/train/trainer.ts +600 -0
  201. package/src/tui.ts +161 -0
  202. package/src/vision/embedder.ts +168 -0
  203. package/src/vision/preprocess.ts +247 -0
  204. package/src/vision/prompt.ts +158 -0
  205. package/src/vision/siglip.ts +599 -0
  206. package/src/web/app.html +2471 -0
  207. package/src/web/skills/web-research/SKILL.md +44 -0
  208. package/src/web/skills.ts +59 -0
  209. package/src/web-tools.ts +426 -0
  210. package/src/weights.ts +91 -0
@@ -0,0 +1,505 @@
1
+ {
2
+ "model": "gemma-4-12B-it-OptiQ-4bit",
3
+ "base": {
4
+ "window": 6,
5
+ "shoulderA": 0.35,
6
+ "sM": 0.7,
7
+ "targetGap": 15,
8
+ "refGap": 4,
9
+ "lw": 1200
10
+ },
11
+ "vals": {
12
+ "shoulderA": [
13
+ 0.5,
14
+ 5,
15
+ 30,
16
+ 100
17
+ ],
18
+ "sM": [
19
+ 0.2,
20
+ 0.7,
21
+ 2,
22
+ 4
23
+ ],
24
+ "targetGap": [
25
+ 8,
26
+ 12,
27
+ 20,
28
+ 50
29
+ ],
30
+ "window": [
31
+ 3,
32
+ 5,
33
+ 10,
34
+ 30
35
+ ]
36
+ },
37
+ "planes": [
38
+ {
39
+ "y": "shoulderA",
40
+ "x": "targetGap"
41
+ },
42
+ {
43
+ "y": "shoulderA",
44
+ "x": "window"
45
+ },
46
+ {
47
+ "y": "sM",
48
+ "x": "targetGap"
49
+ },
50
+ {
51
+ "y": "sM",
52
+ "x": "window"
53
+ }
54
+ ],
55
+ "grid": [
56
+ {
57
+ "plane": "shoulderA×targetGap",
58
+ "shoulderA": 0.5,
59
+ "targetGap": 8,
60
+ "junk": 0.11678832116788321,
61
+ "ok": false
62
+ },
63
+ {
64
+ "plane": "shoulderA×targetGap",
65
+ "shoulderA": 0.5,
66
+ "targetGap": 12,
67
+ "junk": 0,
68
+ "ok": true
69
+ },
70
+ {
71
+ "plane": "shoulderA×targetGap",
72
+ "shoulderA": 0.5,
73
+ "targetGap": 20,
74
+ "junk": 0,
75
+ "ok": true
76
+ },
77
+ {
78
+ "plane": "shoulderA×targetGap",
79
+ "shoulderA": 0.5,
80
+ "targetGap": 50,
81
+ "junk": 0,
82
+ "ok": true
83
+ },
84
+ {
85
+ "plane": "shoulderA×targetGap",
86
+ "shoulderA": 5,
87
+ "targetGap": 8,
88
+ "junk": 0.17679558011049723,
89
+ "ok": false
90
+ },
91
+ {
92
+ "plane": "shoulderA×targetGap",
93
+ "shoulderA": 5,
94
+ "targetGap": 12,
95
+ "junk": 0,
96
+ "ok": true
97
+ },
98
+ {
99
+ "plane": "shoulderA×targetGap",
100
+ "shoulderA": 5,
101
+ "targetGap": 20,
102
+ "junk": 0,
103
+ "ok": true
104
+ },
105
+ {
106
+ "plane": "shoulderA×targetGap",
107
+ "shoulderA": 5,
108
+ "targetGap": 50,
109
+ "junk": 0,
110
+ "ok": true
111
+ },
112
+ {
113
+ "plane": "shoulderA×targetGap",
114
+ "shoulderA": 30,
115
+ "targetGap": 8,
116
+ "junk": 0.25,
117
+ "ok": false
118
+ },
119
+ {
120
+ "plane": "shoulderA×targetGap",
121
+ "shoulderA": 30,
122
+ "targetGap": 12,
123
+ "junk": 0,
124
+ "ok": true
125
+ },
126
+ {
127
+ "plane": "shoulderA×targetGap",
128
+ "shoulderA": 30,
129
+ "targetGap": 20,
130
+ "junk": 0,
131
+ "ok": true
132
+ },
133
+ {
134
+ "plane": "shoulderA×targetGap",
135
+ "shoulderA": 30,
136
+ "targetGap": 50,
137
+ "junk": 0,
138
+ "ok": true
139
+ },
140
+ {
141
+ "plane": "shoulderA×targetGap",
142
+ "shoulderA": 100,
143
+ "targetGap": 8,
144
+ "junk": 0.2721518987341772,
145
+ "ok": false
146
+ },
147
+ {
148
+ "plane": "shoulderA×targetGap",
149
+ "shoulderA": 100,
150
+ "targetGap": 12,
151
+ "junk": 0.21768707482993196,
152
+ "ok": false
153
+ },
154
+ {
155
+ "plane": "shoulderA×targetGap",
156
+ "shoulderA": 100,
157
+ "targetGap": 20,
158
+ "junk": 0,
159
+ "ok": true
160
+ },
161
+ {
162
+ "plane": "shoulderA×targetGap",
163
+ "shoulderA": 100,
164
+ "targetGap": 50,
165
+ "junk": 0,
166
+ "ok": true
167
+ },
168
+ {
169
+ "plane": "shoulderA×window",
170
+ "shoulderA": 0.5,
171
+ "window": 3,
172
+ "junk": 0.02142857142857143,
173
+ "ok": false
174
+ },
175
+ {
176
+ "plane": "shoulderA×window",
177
+ "shoulderA": 0.5,
178
+ "window": 5,
179
+ "junk": 0,
180
+ "ok": true
181
+ },
182
+ {
183
+ "plane": "shoulderA×window",
184
+ "shoulderA": 0.5,
185
+ "window": 10,
186
+ "junk": 0,
187
+ "ok": true
188
+ },
189
+ {
190
+ "plane": "shoulderA×window",
191
+ "shoulderA": 0.5,
192
+ "window": 30,
193
+ "junk": 0,
194
+ "ok": true
195
+ },
196
+ {
197
+ "plane": "shoulderA×window",
198
+ "shoulderA": 5,
199
+ "window": 3,
200
+ "junk": 0.02142857142857143,
201
+ "ok": false
202
+ },
203
+ {
204
+ "plane": "shoulderA×window",
205
+ "shoulderA": 5,
206
+ "window": 5,
207
+ "junk": 0,
208
+ "ok": true
209
+ },
210
+ {
211
+ "plane": "shoulderA×window",
212
+ "shoulderA": 5,
213
+ "window": 10,
214
+ "junk": 0,
215
+ "ok": true
216
+ },
217
+ {
218
+ "plane": "shoulderA×window",
219
+ "shoulderA": 5,
220
+ "window": 30,
221
+ "junk": 0,
222
+ "ok": true
223
+ },
224
+ {
225
+ "plane": "shoulderA×window",
226
+ "shoulderA": 30,
227
+ "window": 3,
228
+ "junk": 0.09333333333333334,
229
+ "ok": false
230
+ },
231
+ {
232
+ "plane": "shoulderA×window",
233
+ "shoulderA": 30,
234
+ "window": 5,
235
+ "junk": 0.02054794520547945,
236
+ "ok": false
237
+ },
238
+ {
239
+ "plane": "shoulderA×window",
240
+ "shoulderA": 30,
241
+ "window": 10,
242
+ "junk": 0,
243
+ "ok": true
244
+ },
245
+ {
246
+ "plane": "shoulderA×window",
247
+ "shoulderA": 30,
248
+ "window": 30,
249
+ "junk": 0,
250
+ "ok": true
251
+ },
252
+ {
253
+ "plane": "shoulderA×window",
254
+ "shoulderA": 100,
255
+ "window": 3,
256
+ "junk": 0.27388535031847133,
257
+ "ok": false
258
+ },
259
+ {
260
+ "plane": "shoulderA×window",
261
+ "shoulderA": 100,
262
+ "window": 5,
263
+ "junk": 0.2857142857142857,
264
+ "ok": false
265
+ },
266
+ {
267
+ "plane": "shoulderA×window",
268
+ "shoulderA": 100,
269
+ "window": 10,
270
+ "junk": 0,
271
+ "ok": true
272
+ },
273
+ {
274
+ "plane": "shoulderA×window",
275
+ "shoulderA": 100,
276
+ "window": 30,
277
+ "junk": 0.049019607843137254,
278
+ "ok": false
279
+ },
280
+ {
281
+ "plane": "sM×targetGap",
282
+ "sM": 0.2,
283
+ "targetGap": 8,
284
+ "junk": 0,
285
+ "ok": true
286
+ },
287
+ {
288
+ "plane": "sM×targetGap",
289
+ "sM": 0.2,
290
+ "targetGap": 12,
291
+ "junk": 0,
292
+ "ok": true
293
+ },
294
+ {
295
+ "plane": "sM×targetGap",
296
+ "sM": 0.2,
297
+ "targetGap": 20,
298
+ "junk": 0,
299
+ "ok": true
300
+ },
301
+ {
302
+ "plane": "sM×targetGap",
303
+ "sM": 0.2,
304
+ "targetGap": 50,
305
+ "junk": 0,
306
+ "ok": true
307
+ },
308
+ {
309
+ "plane": "sM×targetGap",
310
+ "sM": 0.7,
311
+ "targetGap": 8,
312
+ "junk": 0.19117647058823528,
313
+ "ok": false
314
+ },
315
+ {
316
+ "plane": "sM×targetGap",
317
+ "sM": 0.7,
318
+ "targetGap": 12,
319
+ "junk": 0,
320
+ "ok": true
321
+ },
322
+ {
323
+ "plane": "sM×targetGap",
324
+ "sM": 0.7,
325
+ "targetGap": 20,
326
+ "junk": 0,
327
+ "ok": true
328
+ },
329
+ {
330
+ "plane": "sM×targetGap",
331
+ "sM": 0.7,
332
+ "targetGap": 50,
333
+ "junk": 0,
334
+ "ok": true
335
+ },
336
+ {
337
+ "plane": "sM×targetGap",
338
+ "sM": 2,
339
+ "targetGap": 8,
340
+ "junk": 0.27631578947368424,
341
+ "ok": false
342
+ },
343
+ {
344
+ "plane": "sM×targetGap",
345
+ "sM": 2,
346
+ "targetGap": 12,
347
+ "junk": 0.08264462809917356,
348
+ "ok": false
349
+ },
350
+ {
351
+ "plane": "sM×targetGap",
352
+ "sM": 2,
353
+ "targetGap": 20,
354
+ "junk": 0,
355
+ "ok": true
356
+ },
357
+ {
358
+ "plane": "sM×targetGap",
359
+ "sM": 2,
360
+ "targetGap": 50,
361
+ "junk": 0,
362
+ "ok": true
363
+ },
364
+ {
365
+ "plane": "sM×targetGap",
366
+ "sM": 4,
367
+ "targetGap": 8,
368
+ "junk": 0.27388535031847133,
369
+ "ok": false
370
+ },
371
+ {
372
+ "plane": "sM×targetGap",
373
+ "sM": 4,
374
+ "targetGap": 12,
375
+ "junk": 0.15104166666666666,
376
+ "ok": false
377
+ },
378
+ {
379
+ "plane": "sM×targetGap",
380
+ "sM": 4,
381
+ "targetGap": 20,
382
+ "junk": 0,
383
+ "ok": true
384
+ },
385
+ {
386
+ "plane": "sM×targetGap",
387
+ "sM": 4,
388
+ "targetGap": 50,
389
+ "junk": 0,
390
+ "ok": true
391
+ },
392
+ {
393
+ "plane": "sM×window",
394
+ "sM": 0.2,
395
+ "window": 3,
396
+ "junk": 0.02142857142857143,
397
+ "ok": false
398
+ },
399
+ {
400
+ "plane": "sM×window",
401
+ "sM": 0.2,
402
+ "window": 5,
403
+ "junk": 0,
404
+ "ok": true
405
+ },
406
+ {
407
+ "plane": "sM×window",
408
+ "sM": 0.2,
409
+ "window": 10,
410
+ "junk": 0,
411
+ "ok": true
412
+ },
413
+ {
414
+ "plane": "sM×window",
415
+ "sM": 0.2,
416
+ "window": 30,
417
+ "junk": 0,
418
+ "ok": true
419
+ },
420
+ {
421
+ "plane": "sM×window",
422
+ "sM": 0.7,
423
+ "window": 3,
424
+ "junk": 0.02142857142857143,
425
+ "ok": false
426
+ },
427
+ {
428
+ "plane": "sM×window",
429
+ "sM": 0.7,
430
+ "window": 5,
431
+ "junk": 0,
432
+ "ok": true
433
+ },
434
+ {
435
+ "plane": "sM×window",
436
+ "sM": 0.7,
437
+ "window": 10,
438
+ "junk": 0,
439
+ "ok": true
440
+ },
441
+ {
442
+ "plane": "sM×window",
443
+ "sM": 0.7,
444
+ "window": 30,
445
+ "junk": 0,
446
+ "ok": true
447
+ },
448
+ {
449
+ "plane": "sM×window",
450
+ "sM": 2,
451
+ "window": 3,
452
+ "junk": 0.02142857142857143,
453
+ "ok": false
454
+ },
455
+ {
456
+ "plane": "sM×window",
457
+ "sM": 2,
458
+ "window": 5,
459
+ "junk": 0.020134228187919462,
460
+ "ok": false
461
+ },
462
+ {
463
+ "plane": "sM×window",
464
+ "sM": 2,
465
+ "window": 10,
466
+ "junk": 0,
467
+ "ok": true
468
+ },
469
+ {
470
+ "plane": "sM×window",
471
+ "sM": 2,
472
+ "window": 30,
473
+ "junk": 0,
474
+ "ok": true
475
+ },
476
+ {
477
+ "plane": "sM×window",
478
+ "sM": 4,
479
+ "window": 3,
480
+ "junk": 0.02142857142857143,
481
+ "ok": false
482
+ },
483
+ {
484
+ "plane": "sM×window",
485
+ "sM": 4,
486
+ "window": 5,
487
+ "junk": 0.020134228187919462,
488
+ "ok": false
489
+ },
490
+ {
491
+ "plane": "sM×window",
492
+ "sM": 4,
493
+ "window": 10,
494
+ "junk": 0,
495
+ "ok": true
496
+ },
497
+ {
498
+ "plane": "sM×window",
499
+ "sM": 4,
500
+ "window": 30,
501
+ "junk": 0,
502
+ "ok": true
503
+ }
504
+ ]
505
+ }