formulab 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +144 -0
- package/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/automotive/batteryRuntime.d.ts +14 -0
- package/dist/automotive/batteryRuntime.d.ts.map +1 -0
- package/dist/automotive/batteryRuntime.js +38 -0
- package/dist/automotive/batteryRuntime.js.map +1 -0
- package/dist/automotive/evCharging.d.ts +14 -0
- package/dist/automotive/evCharging.d.ts.map +1 -0
- package/dist/automotive/evCharging.js +48 -0
- package/dist/automotive/evCharging.js.map +1 -0
- package/dist/automotive/fuelEconomy.d.ts +15 -0
- package/dist/automotive/fuelEconomy.d.ts.map +1 -0
- package/dist/automotive/fuelEconomy.js +61 -0
- package/dist/automotive/fuelEconomy.js.map +1 -0
- package/dist/automotive/gearRatio.d.ts +15 -0
- package/dist/automotive/gearRatio.d.ts.map +1 -0
- package/dist/automotive/gearRatio.js +39 -0
- package/dist/automotive/gearRatio.js.map +1 -0
- package/dist/automotive/index.d.ts +9 -0
- package/dist/automotive/index.d.ts.map +1 -0
- package/dist/automotive/index.js +9 -0
- package/dist/automotive/index.js.map +1 -0
- package/dist/automotive/power.d.ts +14 -0
- package/dist/automotive/power.d.ts.map +1 -0
- package/dist/automotive/power.js +52 -0
- package/dist/automotive/power.js.map +1 -0
- package/dist/automotive/tireCompare.d.ts +9 -0
- package/dist/automotive/tireCompare.d.ts.map +1 -0
- package/dist/automotive/tireCompare.js +54 -0
- package/dist/automotive/tireCompare.js.map +1 -0
- package/dist/automotive/torque.d.ts +14 -0
- package/dist/automotive/torque.d.ts.map +1 -0
- package/dist/automotive/torque.js +52 -0
- package/dist/automotive/torque.js.map +1 -0
- package/dist/automotive/types.d.ts +114 -0
- package/dist/automotive/types.d.ts.map +1 -0
- package/dist/automotive/types.js +2 -0
- package/dist/automotive/types.js.map +1 -0
- package/dist/chemical/batch.d.ts +12 -0
- package/dist/chemical/batch.d.ts.map +1 -0
- package/dist/chemical/batch.js +36 -0
- package/dist/chemical/batch.js.map +1 -0
- package/dist/chemical/concentration.d.ts +15 -0
- package/dist/chemical/concentration.d.ts.map +1 -0
- package/dist/chemical/concentration.js +45 -0
- package/dist/chemical/concentration.js.map +1 -0
- package/dist/chemical/dilution.d.ts +12 -0
- package/dist/chemical/dilution.d.ts.map +1 -0
- package/dist/chemical/dilution.js +68 -0
- package/dist/chemical/dilution.js.map +1 -0
- package/dist/chemical/index.d.ts +9 -0
- package/dist/chemical/index.d.ts.map +1 -0
- package/dist/chemical/index.js +9 -0
- package/dist/chemical/index.js.map +1 -0
- package/dist/chemical/injectionCycle.d.ts +19 -0
- package/dist/chemical/injectionCycle.d.ts.map +1 -0
- package/dist/chemical/injectionCycle.js +170 -0
- package/dist/chemical/injectionCycle.js.map +1 -0
- package/dist/chemical/ph.d.ts +13 -0
- package/dist/chemical/ph.d.ts.map +1 -0
- package/dist/chemical/ph.js +83 -0
- package/dist/chemical/ph.js.map +1 -0
- package/dist/chemical/reactor.d.ts +19 -0
- package/dist/chemical/reactor.d.ts.map +1 -0
- package/dist/chemical/reactor.js +57 -0
- package/dist/chemical/reactor.js.map +1 -0
- package/dist/chemical/shelfLife.d.ts +15 -0
- package/dist/chemical/shelfLife.d.ts.map +1 -0
- package/dist/chemical/shelfLife.js +36 -0
- package/dist/chemical/shelfLife.js.map +1 -0
- package/dist/chemical/types.d.ts +144 -0
- package/dist/chemical/types.d.ts.map +1 -0
- package/dist/chemical/types.js +2 -0
- package/dist/chemical/types.js.map +1 -0
- package/dist/construction/aggregate.d.ts +33 -0
- package/dist/construction/aggregate.d.ts.map +1 -0
- package/dist/construction/aggregate.js +92 -0
- package/dist/construction/aggregate.js.map +1 -0
- package/dist/construction/beamLoad.d.ts +12 -0
- package/dist/construction/beamLoad.d.ts.map +1 -0
- package/dist/construction/beamLoad.js +156 -0
- package/dist/construction/beamLoad.js.map +1 -0
- package/dist/construction/brick.d.ts +17 -0
- package/dist/construction/brick.d.ts.map +1 -0
- package/dist/construction/brick.js +53 -0
- package/dist/construction/brick.js.map +1 -0
- package/dist/construction/concreteMix.d.ts +9 -0
- package/dist/construction/concreteMix.d.ts.map +1 -0
- package/dist/construction/concreteMix.js +31 -0
- package/dist/construction/concreteMix.js.map +1 -0
- package/dist/construction/earthwork.d.ts +13 -0
- package/dist/construction/earthwork.d.ts.map +1 -0
- package/dist/construction/earthwork.js +25 -0
- package/dist/construction/earthwork.js.map +1 -0
- package/dist/construction/formwork.d.ts +9 -0
- package/dist/construction/formwork.d.ts.map +1 -0
- package/dist/construction/formwork.js +61 -0
- package/dist/construction/formwork.js.map +1 -0
- package/dist/construction/index.d.ts +13 -0
- package/dist/construction/index.d.ts.map +1 -0
- package/dist/construction/index.js +13 -0
- package/dist/construction/index.js.map +1 -0
- package/dist/construction/pert.d.ts +15 -0
- package/dist/construction/pert.d.ts.map +1 -0
- package/dist/construction/pert.js +207 -0
- package/dist/construction/pert.js.map +1 -0
- package/dist/construction/rebar.d.ts +16 -0
- package/dist/construction/rebar.d.ts.map +1 -0
- package/dist/construction/rebar.js +43 -0
- package/dist/construction/rebar.js.map +1 -0
- package/dist/construction/roof.d.ts +16 -0
- package/dist/construction/roof.d.ts.map +1 -0
- package/dist/construction/roof.js +65 -0
- package/dist/construction/roof.js.map +1 -0
- package/dist/construction/slope.d.ts +14 -0
- package/dist/construction/slope.d.ts.map +1 -0
- package/dist/construction/slope.js +54 -0
- package/dist/construction/slope.js.map +1 -0
- package/dist/construction/stair.d.ts +17 -0
- package/dist/construction/stair.d.ts.map +1 -0
- package/dist/construction/stair.js +69 -0
- package/dist/construction/stair.js.map +1 -0
- package/dist/construction/types.d.ts +219 -0
- package/dist/construction/types.d.ts.map +1 -0
- package/dist/construction/types.js +2 -0
- package/dist/construction/types.js.map +1 -0
- package/dist/electronics/awg.d.ts +9 -0
- package/dist/electronics/awg.d.ts.map +1 -0
- package/dist/electronics/awg.js +66 -0
- package/dist/electronics/awg.js.map +1 -0
- package/dist/electronics/capacitor.d.ts +9 -0
- package/dist/electronics/capacitor.d.ts.map +1 -0
- package/dist/electronics/capacitor.js +51 -0
- package/dist/electronics/capacitor.js.map +1 -0
- package/dist/electronics/index.d.ts +12 -0
- package/dist/electronics/index.d.ts.map +1 -0
- package/dist/electronics/index.js +12 -0
- package/dist/electronics/index.js.map +1 -0
- package/dist/electronics/led.d.ts +9 -0
- package/dist/electronics/led.d.ts.map +1 -0
- package/dist/electronics/led.js +72 -0
- package/dist/electronics/led.js.map +1 -0
- package/dist/electronics/reflow.d.ts +12 -0
- package/dist/electronics/reflow.d.ts.map +1 -0
- package/dist/electronics/reflow.js +77 -0
- package/dist/electronics/reflow.js.map +1 -0
- package/dist/electronics/resistor.d.ts +8 -0
- package/dist/electronics/resistor.d.ts.map +1 -0
- package/dist/electronics/resistor.js +137 -0
- package/dist/electronics/resistor.js.map +1 -0
- package/dist/electronics/smt-takt.d.ts +8 -0
- package/dist/electronics/smt-takt.d.ts.map +1 -0
- package/dist/electronics/smt-takt.js +59 -0
- package/dist/electronics/smt-takt.js.map +1 -0
- package/dist/electronics/solder.d.ts +8 -0
- package/dist/electronics/solder.d.ts.map +1 -0
- package/dist/electronics/solder.js +46 -0
- package/dist/electronics/solder.js.map +1 -0
- package/dist/electronics/stencil.d.ts +9 -0
- package/dist/electronics/stencil.d.ts.map +1 -0
- package/dist/electronics/stencil.js +78 -0
- package/dist/electronics/stencil.js.map +1 -0
- package/dist/electronics/trace.d.ts +8 -0
- package/dist/electronics/trace.d.ts.map +1 -0
- package/dist/electronics/trace.js +75 -0
- package/dist/electronics/trace.js.map +1 -0
- package/dist/electronics/types.d.ts +145 -0
- package/dist/electronics/types.d.ts.map +1 -0
- package/dist/electronics/types.js +2 -0
- package/dist/electronics/types.js.map +1 -0
- package/dist/electronics/via.d.ts +12 -0
- package/dist/electronics/via.d.ts.map +1 -0
- package/dist/electronics/via.js +63 -0
- package/dist/electronics/via.js.map +1 -0
- package/dist/energy/carbonFootprint.d.ts +13 -0
- package/dist/energy/carbonFootprint.d.ts.map +1 -0
- package/dist/energy/carbonFootprint.js +41 -0
- package/dist/energy/carbonFootprint.js.map +1 -0
- package/dist/energy/compressedAirCost.d.ts +14 -0
- package/dist/energy/compressedAirCost.d.ts.map +1 -0
- package/dist/energy/compressedAirCost.js +39 -0
- package/dist/energy/compressedAirCost.js.map +1 -0
- package/dist/energy/index.d.ts +8 -0
- package/dist/energy/index.d.ts.map +1 -0
- package/dist/energy/index.js +8 -0
- package/dist/energy/index.js.map +1 -0
- package/dist/energy/motorEfficiency.d.ts +14 -0
- package/dist/energy/motorEfficiency.d.ts.map +1 -0
- package/dist/energy/motorEfficiency.js +47 -0
- package/dist/energy/motorEfficiency.js.map +1 -0
- package/dist/energy/pfCorrection.d.ts +15 -0
- package/dist/energy/pfCorrection.d.ts.map +1 -0
- package/dist/energy/pfCorrection.js +56 -0
- package/dist/energy/pfCorrection.js.map +1 -0
- package/dist/energy/powerCost.d.ts +15 -0
- package/dist/energy/powerCost.d.ts.map +1 -0
- package/dist/energy/powerCost.js +37 -0
- package/dist/energy/powerCost.js.map +1 -0
- package/dist/energy/types.d.ts +119 -0
- package/dist/energy/types.d.ts.map +1 -0
- package/dist/energy/types.js +2 -0
- package/dist/energy/types.js.map +1 -0
- package/dist/energy/vfdSavings.d.ts +16 -0
- package/dist/energy/vfdSavings.d.ts.map +1 -0
- package/dist/energy/vfdSavings.js +57 -0
- package/dist/energy/vfdSavings.js.map +1 -0
- package/dist/food/calorie.d.ts +13 -0
- package/dist/food/calorie.d.ts.map +1 -0
- package/dist/food/calorie.js +42 -0
- package/dist/food/calorie.js.map +1 -0
- package/dist/food/expiry.d.ts +13 -0
- package/dist/food/expiry.d.ts.map +1 -0
- package/dist/food/expiry.js +58 -0
- package/dist/food/expiry.js.map +1 -0
- package/dist/food/haccp.d.ts +18 -0
- package/dist/food/haccp.d.ts.map +1 -0
- package/dist/food/haccp.js +70 -0
- package/dist/food/haccp.js.map +1 -0
- package/dist/food/index.d.ts +6 -0
- package/dist/food/index.d.ts.map +1 -0
- package/dist/food/index.js +6 -0
- package/dist/food/index.js.map +1 -0
- package/dist/food/nutrition.d.ts +12 -0
- package/dist/food/nutrition.d.ts.map +1 -0
- package/dist/food/nutrition.js +75 -0
- package/dist/food/nutrition.js.map +1 -0
- package/dist/food/types.d.ts +104 -0
- package/dist/food/types.d.ts.map +1 -0
- package/dist/food/types.js +2 -0
- package/dist/food/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/logistics/cbm.d.ts +12 -0
- package/dist/logistics/cbm.d.ts.map +1 -0
- package/dist/logistics/cbm.js +37 -0
- package/dist/logistics/cbm.js.map +1 -0
- package/dist/logistics/containerFit.d.ts +12 -0
- package/dist/logistics/containerFit.d.ts.map +1 -0
- package/dist/logistics/containerFit.js +73 -0
- package/dist/logistics/containerFit.js.map +1 -0
- package/dist/logistics/dimWeight.d.ts +13 -0
- package/dist/logistics/dimWeight.d.ts.map +1 -0
- package/dist/logistics/dimWeight.js +50 -0
- package/dist/logistics/dimWeight.js.map +1 -0
- package/dist/logistics/eoq.d.ts +18 -0
- package/dist/logistics/eoq.d.ts.map +1 -0
- package/dist/logistics/eoq.js +42 -0
- package/dist/logistics/eoq.js.map +1 -0
- package/dist/logistics/fillRate.d.ts +22 -0
- package/dist/logistics/fillRate.d.ts.map +1 -0
- package/dist/logistics/fillRate.js +84 -0
- package/dist/logistics/fillRate.js.map +1 -0
- package/dist/logistics/freightClass.d.ts +12 -0
- package/dist/logistics/freightClass.d.ts.map +1 -0
- package/dist/logistics/freightClass.js +68 -0
- package/dist/logistics/freightClass.js.map +1 -0
- package/dist/logistics/index.d.ts +15 -0
- package/dist/logistics/index.d.ts.map +1 -0
- package/dist/logistics/index.js +15 -0
- package/dist/logistics/index.js.map +1 -0
- package/dist/logistics/kanban.d.ts +19 -0
- package/dist/logistics/kanban.d.ts.map +1 -0
- package/dist/logistics/kanban.js +48 -0
- package/dist/logistics/kanban.js.map +1 -0
- package/dist/logistics/pallet3d.d.ts +16 -0
- package/dist/logistics/pallet3d.d.ts.map +1 -0
- package/dist/logistics/pallet3d.js +380 -0
- package/dist/logistics/pallet3d.js.map +1 -0
- package/dist/logistics/palletStack.d.ts +12 -0
- package/dist/logistics/palletStack.d.ts.map +1 -0
- package/dist/logistics/palletStack.js +65 -0
- package/dist/logistics/palletStack.js.map +1 -0
- package/dist/logistics/pickTime.d.ts +17 -0
- package/dist/logistics/pickTime.d.ts.map +1 -0
- package/dist/logistics/pickTime.js +70 -0
- package/dist/logistics/pickTime.js.map +1 -0
- package/dist/logistics/safetyStock.d.ts +24 -0
- package/dist/logistics/safetyStock.d.ts.map +1 -0
- package/dist/logistics/safetyStock.js +99 -0
- package/dist/logistics/safetyStock.js.map +1 -0
- package/dist/logistics/shipping.d.ts +16 -0
- package/dist/logistics/shipping.d.ts.map +1 -0
- package/dist/logistics/shipping.js +115 -0
- package/dist/logistics/shipping.js.map +1 -0
- package/dist/logistics/tsp.d.ts +12 -0
- package/dist/logistics/tsp.d.ts.map +1 -0
- package/dist/logistics/tsp.js +166 -0
- package/dist/logistics/tsp.js.map +1 -0
- package/dist/logistics/types.d.ts +315 -0
- package/dist/logistics/types.d.ts.map +1 -0
- package/dist/logistics/types.js +5 -0
- package/dist/logistics/types.js.map +1 -0
- package/dist/metal/bearing.d.ts +11 -0
- package/dist/metal/bearing.d.ts.map +1 -0
- package/dist/metal/bearing.js +32 -0
- package/dist/metal/bearing.js.map +1 -0
- package/dist/metal/bendAllowance.d.ts +13 -0
- package/dist/metal/bendAllowance.d.ts.map +1 -0
- package/dist/metal/bendAllowance.js +75 -0
- package/dist/metal/bendAllowance.js.map +1 -0
- package/dist/metal/bolt.d.ts +32 -0
- package/dist/metal/bolt.d.ts.map +1 -0
- package/dist/metal/bolt.js +149 -0
- package/dist/metal/bolt.js.map +1 -0
- package/dist/metal/cutting.d.ts +10 -0
- package/dist/metal/cutting.d.ts.map +1 -0
- package/dist/metal/cutting.js +55 -0
- package/dist/metal/cutting.js.map +1 -0
- package/dist/metal/cuttingStock.d.ts +8 -0
- package/dist/metal/cuttingStock.d.ts.map +1 -0
- package/dist/metal/cuttingStock.js +89 -0
- package/dist/metal/cuttingStock.js.map +1 -0
- package/dist/metal/flatPattern.d.ts +12 -0
- package/dist/metal/flatPattern.d.ts.map +1 -0
- package/dist/metal/flatPattern.js +50 -0
- package/dist/metal/flatPattern.js.map +1 -0
- package/dist/metal/gear.d.ts +13 -0
- package/dist/metal/gear.d.ts.map +1 -0
- package/dist/metal/gear.js +79 -0
- package/dist/metal/gear.js.map +1 -0
- package/dist/metal/hardness.d.ts +15 -0
- package/dist/metal/hardness.d.ts.map +1 -0
- package/dist/metal/hardness.js +77 -0
- package/dist/metal/hardness.js.map +1 -0
- package/dist/metal/index.d.ts +24 -0
- package/dist/metal/index.d.ts.map +1 -0
- package/dist/metal/index.js +24 -0
- package/dist/metal/index.js.map +1 -0
- package/dist/metal/kFactorReverse.d.ts +19 -0
- package/dist/metal/kFactorReverse.d.ts.map +1 -0
- package/dist/metal/kFactorReverse.js +39 -0
- package/dist/metal/kFactorReverse.js.map +1 -0
- package/dist/metal/material.d.ts +5 -0
- package/dist/metal/material.d.ts.map +1 -0
- package/dist/metal/material.js +56 -0
- package/dist/metal/material.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +10 -0
- package/dist/metal/metalWeight.d.ts.map +1 -0
- package/dist/metal/metalWeight.js +82 -0
- package/dist/metal/metalWeight.js.map +1 -0
- package/dist/metal/pressFit.d.ts +15 -0
- package/dist/metal/pressFit.d.ts.map +1 -0
- package/dist/metal/pressFit.js +96 -0
- package/dist/metal/pressFit.js.map +1 -0
- package/dist/metal/pressTonnage.d.ts +13 -0
- package/dist/metal/pressTonnage.d.ts.map +1 -0
- package/dist/metal/pressTonnage.js +86 -0
- package/dist/metal/pressTonnage.js.map +1 -0
- package/dist/metal/roughness.d.ts +6 -0
- package/dist/metal/roughness.d.ts.map +1 -0
- package/dist/metal/roughness.js +62 -0
- package/dist/metal/roughness.js.map +1 -0
- package/dist/metal/screw.d.ts +7 -0
- package/dist/metal/screw.d.ts.map +1 -0
- package/dist/metal/screw.js +44 -0
- package/dist/metal/screw.js.map +1 -0
- package/dist/metal/spring.d.ts +11 -0
- package/dist/metal/spring.d.ts.map +1 -0
- package/dist/metal/spring.js +59 -0
- package/dist/metal/spring.js.map +1 -0
- package/dist/metal/tap.d.ts +16 -0
- package/dist/metal/tap.d.ts.map +1 -0
- package/dist/metal/tap.js +62 -0
- package/dist/metal/tap.js.map +1 -0
- package/dist/metal/thread.d.ts +8 -0
- package/dist/metal/thread.d.ts.map +1 -0
- package/dist/metal/thread.js +75 -0
- package/dist/metal/thread.js.map +1 -0
- package/dist/metal/tolerance.d.ts +6 -0
- package/dist/metal/tolerance.d.ts.map +1 -0
- package/dist/metal/tolerance.js +113 -0
- package/dist/metal/tolerance.js.map +1 -0
- package/dist/metal/types.d.ts +494 -0
- package/dist/metal/types.d.ts.map +1 -0
- package/dist/metal/types.js +2 -0
- package/dist/metal/types.js.map +1 -0
- package/dist/metal/vibration.d.ts +6 -0
- package/dist/metal/vibration.d.ts.map +1 -0
- package/dist/metal/vibration.js +153 -0
- package/dist/metal/vibration.js.map +1 -0
- package/dist/metal/weldHeat.d.ts +6 -0
- package/dist/metal/weldHeat.d.ts.map +1 -0
- package/dist/metal/weldHeat.js +138 -0
- package/dist/metal/weldHeat.js.map +1 -0
- package/dist/metal/welding.d.ts +6 -0
- package/dist/metal/welding.d.ts.map +1 -0
- package/dist/metal/welding.js +80 -0
- package/dist/metal/welding.js.map +1 -0
- package/dist/quality/aql.d.ts +10 -0
- package/dist/quality/aql.d.ts.map +1 -0
- package/dist/quality/aql.js +104 -0
- package/dist/quality/aql.js.map +1 -0
- package/dist/quality/cpk.d.ts +14 -0
- package/dist/quality/cpk.d.ts.map +1 -0
- package/dist/quality/cpk.js +44 -0
- package/dist/quality/cpk.js.map +1 -0
- package/dist/quality/cycle.d.ts +11 -0
- package/dist/quality/cycle.d.ts.map +1 -0
- package/dist/quality/cycle.js +55 -0
- package/dist/quality/cycle.js.map +1 -0
- package/dist/quality/downtime.d.ts +9 -0
- package/dist/quality/downtime.d.ts.map +1 -0
- package/dist/quality/downtime.js +28 -0
- package/dist/quality/downtime.js.map +1 -0
- package/dist/quality/dpmo.d.ts +10 -0
- package/dist/quality/dpmo.d.ts.map +1 -0
- package/dist/quality/dpmo.js +114 -0
- package/dist/quality/dpmo.js.map +1 -0
- package/dist/quality/index.d.ts +15 -0
- package/dist/quality/index.d.ts.map +1 -0
- package/dist/quality/index.js +15 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/quality/lineBalancing.d.ts +9 -0
- package/dist/quality/lineBalancing.d.ts.map +1 -0
- package/dist/quality/lineBalancing.js +185 -0
- package/dist/quality/lineBalancing.js.map +1 -0
- package/dist/quality/mtbf.d.ts +13 -0
- package/dist/quality/mtbf.d.ts.map +1 -0
- package/dist/quality/mtbf.js +48 -0
- package/dist/quality/mtbf.js.map +1 -0
- package/dist/quality/oee.d.ts +11 -0
- package/dist/quality/oee.d.ts.map +1 -0
- package/dist/quality/oee.js +43 -0
- package/dist/quality/oee.js.map +1 -0
- package/dist/quality/ppk.d.ts +15 -0
- package/dist/quality/ppk.d.ts.map +1 -0
- package/dist/quality/ppk.js +61 -0
- package/dist/quality/ppk.js.map +1 -0
- package/dist/quality/ppm.d.ts +9 -0
- package/dist/quality/ppm.d.ts.map +1 -0
- package/dist/quality/ppm.js +134 -0
- package/dist/quality/ppm.js.map +1 -0
- package/dist/quality/rpn.d.ts +11 -0
- package/dist/quality/rpn.d.ts.map +1 -0
- package/dist/quality/rpn.js +48 -0
- package/dist/quality/rpn.js.map +1 -0
- package/dist/quality/takt.d.ts +13 -0
- package/dist/quality/takt.d.ts.map +1 -0
- package/dist/quality/takt.js +44 -0
- package/dist/quality/takt.js.map +1 -0
- package/dist/quality/types.d.ts +261 -0
- package/dist/quality/types.d.ts.map +1 -0
- package/dist/quality/types.js +2 -0
- package/dist/quality/types.js.map +1 -0
- package/dist/quality/yield.d.ts +12 -0
- package/dist/quality/yield.d.ts.map +1 -0
- package/dist/quality/yield.js +56 -0
- package/dist/quality/yield.js.map +1 -0
- package/dist/safety/fallClearance.d.ts +12 -0
- package/dist/safety/fallClearance.d.ts.map +1 -0
- package/dist/safety/fallClearance.js +37 -0
- package/dist/safety/fallClearance.js.map +1 -0
- package/dist/safety/havsCalculate.d.ts +16 -0
- package/dist/safety/havsCalculate.d.ts.map +1 -0
- package/dist/safety/havsCalculate.js +103 -0
- package/dist/safety/havsCalculate.js.map +1 -0
- package/dist/safety/index.d.ts +8 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +8 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/safety/nioshLifting.d.ts +21 -0
- package/dist/safety/nioshLifting.d.ts.map +1 -0
- package/dist/safety/nioshLifting.js +164 -0
- package/dist/safety/nioshLifting.js.map +1 -0
- package/dist/safety/noiseExposure.d.ts +22 -0
- package/dist/safety/noiseExposure.d.ts.map +1 -0
- package/dist/safety/noiseExposure.js +76 -0
- package/dist/safety/noiseExposure.js.map +1 -0
- package/dist/safety/respiratorCalculate.d.ts +14 -0
- package/dist/safety/respiratorCalculate.d.ts.map +1 -0
- package/dist/safety/respiratorCalculate.js +90 -0
- package/dist/safety/respiratorCalculate.js.map +1 -0
- package/dist/safety/types.d.ts +93 -0
- package/dist/safety/types.d.ts.map +1 -0
- package/dist/safety/types.js +2 -0
- package/dist/safety/types.js.map +1 -0
- package/dist/safety/wbgtCalculate.d.ts +25 -0
- package/dist/safety/wbgtCalculate.d.ts.map +1 -0
- package/dist/safety/wbgtCalculate.js +65 -0
- package/dist/safety/wbgtCalculate.js.map +1 -0
- package/dist/utility/assignment.d.ts +11 -0
- package/dist/utility/assignment.d.ts.map +1 -0
- package/dist/utility/assignment.js +113 -0
- package/dist/utility/assignment.js.map +1 -0
- package/dist/utility/index.d.ts +4 -0
- package/dist/utility/index.d.ts.map +1 -0
- package/dist/utility/index.js +4 -0
- package/dist/utility/index.js.map +1 -0
- package/dist/utility/qrcode.d.ts +30 -0
- package/dist/utility/qrcode.d.ts.map +1 -0
- package/dist/utility/qrcode.js +30 -0
- package/dist/utility/qrcode.js.map +1 -0
- package/dist/utility/types.d.ts +64 -0
- package/dist/utility/types.d.ts.map +1 -0
- package/dist/utility/types.js +2 -0
- package/dist/utility/types.js.map +1 -0
- package/dist/utility/unit.d.ts +25 -0
- package/dist/utility/unit.d.ts.map +1 -0
- package/dist/utility/unit.js +136 -0
- package/dist/utility/unit.js.map +1 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +12 -0
- package/dist/utils.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reflow profile data for different solder paste types
|
|
3
|
+
*/
|
|
4
|
+
const REFLOW_PROFILES = {
|
|
5
|
+
sac305: {
|
|
6
|
+
pasteType: 'SAC305',
|
|
7
|
+
meltingPoint: 217,
|
|
8
|
+
preheatRate: '1.0-3.0',
|
|
9
|
+
preheatTemp: '150-200',
|
|
10
|
+
preheatTime: '60-120',
|
|
11
|
+
soakTemp: '150-200',
|
|
12
|
+
soakTime: '60-120',
|
|
13
|
+
peakTemp: '235-250',
|
|
14
|
+
timeAboveLiquidus: '60-90',
|
|
15
|
+
coolingRate: '<4.0',
|
|
16
|
+
totalProfileTime: '240-300',
|
|
17
|
+
},
|
|
18
|
+
sn63pb37: {
|
|
19
|
+
pasteType: 'Sn63Pb37',
|
|
20
|
+
meltingPoint: 183,
|
|
21
|
+
preheatRate: '1.0-2.5',
|
|
22
|
+
preheatTemp: '100-150',
|
|
23
|
+
preheatTime: '60-90',
|
|
24
|
+
soakTemp: '150-183',
|
|
25
|
+
soakTime: '60-90',
|
|
26
|
+
peakTemp: '210-230',
|
|
27
|
+
timeAboveLiquidus: '45-75',
|
|
28
|
+
coolingRate: '<4.0',
|
|
29
|
+
totalProfileTime: '180-240',
|
|
30
|
+
},
|
|
31
|
+
sac387: {
|
|
32
|
+
pasteType: 'SAC387',
|
|
33
|
+
meltingPoint: 217,
|
|
34
|
+
preheatRate: '1.0-3.0',
|
|
35
|
+
preheatTemp: '150-200',
|
|
36
|
+
preheatTime: '60-120',
|
|
37
|
+
soakTemp: '150-200',
|
|
38
|
+
soakTime: '60-120',
|
|
39
|
+
peakTemp: '240-260',
|
|
40
|
+
timeAboveLiquidus: '60-90',
|
|
41
|
+
coolingRate: '<4.0',
|
|
42
|
+
totalProfileTime: '240-300',
|
|
43
|
+
},
|
|
44
|
+
snbi58: {
|
|
45
|
+
pasteType: 'SnBi58',
|
|
46
|
+
meltingPoint: 138,
|
|
47
|
+
preheatRate: '0.5-2.0',
|
|
48
|
+
preheatTemp: '80-120',
|
|
49
|
+
preheatTime: '60-90',
|
|
50
|
+
soakTemp: '100-130',
|
|
51
|
+
soakTime: '60-90',
|
|
52
|
+
peakTemp: '160-180',
|
|
53
|
+
timeAboveLiquidus: '30-60',
|
|
54
|
+
coolingRate: '<3.0',
|
|
55
|
+
totalProfileTime: '180-240',
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const PASTE_TYPES = ['sac305', 'sn63pb37', 'sac387', 'snbi58'];
|
|
59
|
+
/**
|
|
60
|
+
* Get all available paste types
|
|
61
|
+
*/
|
|
62
|
+
export function getPasteTypes() {
|
|
63
|
+
return [...PASTE_TYPES];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get reflow profile for a specific solder paste type
|
|
67
|
+
* @param pasteType - The type of solder paste
|
|
68
|
+
* @returns Reflow profile or undefined if paste type is invalid
|
|
69
|
+
*/
|
|
70
|
+
export function reflowProfile(pasteType) {
|
|
71
|
+
const profile = REFLOW_PROFILES[pasteType];
|
|
72
|
+
if (!profile) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return { ...profile };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=reflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflow.js","sourceRoot":"","sources":["../../src/electronics/reflow.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,eAAe,GAAoC;IACvD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,OAAO;QAC1B,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,SAAS;KAC5B;CACF,CAAC;AAEF,MAAM,WAAW,GAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ResistorBands, ResistorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Decode resistor color bands to get resistance value
|
|
4
|
+
* @param input - Resistor band information (count and colors)
|
|
5
|
+
* @returns Decoded resistance, tolerance, and formatted string
|
|
6
|
+
*/
|
|
7
|
+
export declare function resistorDecode(input: ResistorBands): ResistorResult;
|
|
8
|
+
//# sourceMappingURL=resistor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resistor.d.ts","sourceRoot":"","sources":["../../src/electronics/resistor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAa,MAAM,YAAY,CAAC;AAoG3E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA4CnE"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color code values for resistor bands
|
|
3
|
+
*/
|
|
4
|
+
const COLOR_VALUES = {
|
|
5
|
+
black: 0,
|
|
6
|
+
brown: 1,
|
|
7
|
+
red: 2,
|
|
8
|
+
orange: 3,
|
|
9
|
+
yellow: 4,
|
|
10
|
+
green: 5,
|
|
11
|
+
blue: 6,
|
|
12
|
+
violet: 7,
|
|
13
|
+
grey: 8,
|
|
14
|
+
white: 9,
|
|
15
|
+
gold: -1, // used for multiplier (0.1) and tolerance (5%)
|
|
16
|
+
silver: -2, // used for multiplier (0.01) and tolerance (10%)
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Multiplier values for each color
|
|
20
|
+
*/
|
|
21
|
+
const MULTIPLIERS = {
|
|
22
|
+
black: 1,
|
|
23
|
+
brown: 10,
|
|
24
|
+
red: 100,
|
|
25
|
+
orange: 1000,
|
|
26
|
+
yellow: 10000,
|
|
27
|
+
green: 100000,
|
|
28
|
+
blue: 1000000,
|
|
29
|
+
violet: 10000000,
|
|
30
|
+
grey: 100000000,
|
|
31
|
+
white: 1000000000,
|
|
32
|
+
gold: 0.1,
|
|
33
|
+
silver: 0.01,
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Tolerance values for each color (percentage)
|
|
37
|
+
*/
|
|
38
|
+
const TOLERANCES = {
|
|
39
|
+
brown: 1,
|
|
40
|
+
red: 2,
|
|
41
|
+
green: 0.5,
|
|
42
|
+
blue: 0.25,
|
|
43
|
+
violet: 0.1,
|
|
44
|
+
grey: 0.05,
|
|
45
|
+
gold: 5,
|
|
46
|
+
silver: 10,
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Temperature coefficient values (ppm/C) for 6-band resistors
|
|
50
|
+
*/
|
|
51
|
+
const TEMP_COEFFICIENTS = {
|
|
52
|
+
black: 250,
|
|
53
|
+
brown: 100,
|
|
54
|
+
red: 50,
|
|
55
|
+
orange: 15,
|
|
56
|
+
yellow: 25,
|
|
57
|
+
green: 20,
|
|
58
|
+
blue: 10,
|
|
59
|
+
violet: 5,
|
|
60
|
+
grey: 1,
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Format resistance value with appropriate unit (Ohm, kOhm, MOhm)
|
|
64
|
+
*/
|
|
65
|
+
function formatResistance(resistance, tolerance, tempCoeff) {
|
|
66
|
+
let value;
|
|
67
|
+
let unit;
|
|
68
|
+
if (resistance >= 1000000) {
|
|
69
|
+
value = (resistance / 1000000).toString();
|
|
70
|
+
if (value.includes('.') && value.split('.')[1].length > 2) {
|
|
71
|
+
value = (resistance / 1000000).toFixed(2).replace(/\.?0+$/, '');
|
|
72
|
+
}
|
|
73
|
+
unit = 'M\u03A9';
|
|
74
|
+
}
|
|
75
|
+
else if (resistance >= 1000) {
|
|
76
|
+
value = (resistance / 1000).toString();
|
|
77
|
+
if (value.includes('.') && value.split('.')[1].length > 2) {
|
|
78
|
+
value = (resistance / 1000).toFixed(2).replace(/\.?0+$/, '');
|
|
79
|
+
}
|
|
80
|
+
unit = 'k\u03A9';
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
value = resistance.toString();
|
|
84
|
+
unit = '\u03A9';
|
|
85
|
+
}
|
|
86
|
+
let formatted = `${value}${unit} \u00B1${tolerance}%`;
|
|
87
|
+
if (tempCoeff !== undefined) {
|
|
88
|
+
formatted += ` ${tempCoeff}ppm/\u00B0C`;
|
|
89
|
+
}
|
|
90
|
+
return formatted;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decode resistor color bands to get resistance value
|
|
94
|
+
* @param input - Resistor band information (count and colors)
|
|
95
|
+
* @returns Decoded resistance, tolerance, and formatted string
|
|
96
|
+
*/
|
|
97
|
+
export function resistorDecode(input) {
|
|
98
|
+
const { bandCount, bands } = input;
|
|
99
|
+
let resistance;
|
|
100
|
+
let tolerance;
|
|
101
|
+
let tempCoeff;
|
|
102
|
+
if (bandCount === 4) {
|
|
103
|
+
// 4-band: digit1, digit2, multiplier, tolerance
|
|
104
|
+
const digit1 = COLOR_VALUES[bands[0]];
|
|
105
|
+
const digit2 = COLOR_VALUES[bands[1]];
|
|
106
|
+
const multiplier = MULTIPLIERS[bands[2]];
|
|
107
|
+
tolerance = TOLERANCES[bands[3]] ?? 20;
|
|
108
|
+
resistance = (digit1 * 10 + digit2) * multiplier;
|
|
109
|
+
}
|
|
110
|
+
else if (bandCount === 5) {
|
|
111
|
+
// 5-band: digit1, digit2, digit3, multiplier, tolerance
|
|
112
|
+
const digit1 = COLOR_VALUES[bands[0]];
|
|
113
|
+
const digit2 = COLOR_VALUES[bands[1]];
|
|
114
|
+
const digit3 = COLOR_VALUES[bands[2]];
|
|
115
|
+
const multiplier = MULTIPLIERS[bands[3]];
|
|
116
|
+
tolerance = TOLERANCES[bands[4]] ?? 20;
|
|
117
|
+
resistance = (digit1 * 100 + digit2 * 10 + digit3) * multiplier;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// 6-band: digit1, digit2, digit3, multiplier, tolerance, tempCoeff
|
|
121
|
+
const digit1 = COLOR_VALUES[bands[0]];
|
|
122
|
+
const digit2 = COLOR_VALUES[bands[1]];
|
|
123
|
+
const digit3 = COLOR_VALUES[bands[2]];
|
|
124
|
+
const multiplier = MULTIPLIERS[bands[3]];
|
|
125
|
+
tolerance = TOLERANCES[bands[4]] ?? 20;
|
|
126
|
+
tempCoeff = TEMP_COEFFICIENTS[bands[5]];
|
|
127
|
+
resistance = (digit1 * 100 + digit2 * 10 + digit3) * multiplier;
|
|
128
|
+
}
|
|
129
|
+
const formatted = formatResistance(resistance, tolerance, tempCoeff);
|
|
130
|
+
return {
|
|
131
|
+
resistance,
|
|
132
|
+
tolerance,
|
|
133
|
+
tempCoeff,
|
|
134
|
+
formatted,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=resistor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resistor.js","sourceRoot":"","sources":["../../src/electronics/resistor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SmtTaktInput, SmtTaktResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate SMT line takt time and throughput
|
|
4
|
+
* @param input - SMT line parameters
|
|
5
|
+
* @returns Takt time calculation results
|
|
6
|
+
*/
|
|
7
|
+
export declare function smtTakt(input: SmtTaktInput): SmtTaktResult;
|
|
8
|
+
//# sourceMappingURL=smt-takt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smt-takt.d.ts","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU9D;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA2D1D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round to specified decimal places
|
|
3
|
+
*/
|
|
4
|
+
function roundTo(value, decimals) {
|
|
5
|
+
const factor = Math.pow(10, decimals);
|
|
6
|
+
return Math.round(value * factor) / factor;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Calculate SMT line takt time and throughput
|
|
10
|
+
* @param input - SMT line parameters
|
|
11
|
+
* @returns Takt time calculation results
|
|
12
|
+
*/
|
|
13
|
+
export function smtTakt(input) {
|
|
14
|
+
const { placementRate, componentsPerBoard, boardsPerPanel, setupTimeSec, availableTimeMin, } = input;
|
|
15
|
+
// Guard against invalid inputs
|
|
16
|
+
if (componentsPerBoard <= 0) {
|
|
17
|
+
return {
|
|
18
|
+
placementTimeSec: 0,
|
|
19
|
+
totalCycleTimeSec: 0,
|
|
20
|
+
boardsPerHour: 0,
|
|
21
|
+
totalBoardsPerShift: 0,
|
|
22
|
+
lineUtilization: 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (placementRate <= 0) {
|
|
26
|
+
return {
|
|
27
|
+
placementTimeSec: 0,
|
|
28
|
+
totalCycleTimeSec: 0,
|
|
29
|
+
boardsPerHour: 0,
|
|
30
|
+
totalBoardsPerShift: 0,
|
|
31
|
+
lineUtilization: 0,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Calculate placement time per board (seconds)
|
|
35
|
+
// placementRate is in components per hour (cph)
|
|
36
|
+
// placementTime = (components / rate) * 3600
|
|
37
|
+
const placementTimeSec = roundTo((componentsPerBoard / placementRate) * 3600, 2);
|
|
38
|
+
// Total cycle time includes setup time
|
|
39
|
+
const totalCycleTimeSec = roundTo(placementTimeSec + setupTimeSec, 2);
|
|
40
|
+
// Boards per hour
|
|
41
|
+
const boardsPerHour = totalCycleTimeSec > 0 ? roundTo(3600 / totalCycleTimeSec, 2) : 0;
|
|
42
|
+
// Total boards per shift (available time in minutes * 60 / cycle time) * boards per panel
|
|
43
|
+
const availableTimeSec = availableTimeMin * 60;
|
|
44
|
+
const totalBoardsPerShift = totalCycleTimeSec > 0
|
|
45
|
+
? Math.floor((availableTimeSec / totalCycleTimeSec) * boardsPerPanel)
|
|
46
|
+
: 0;
|
|
47
|
+
// Line utilization: ratio of pure placement time to total cycle time
|
|
48
|
+
const lineUtilization = totalCycleTimeSec > 0
|
|
49
|
+
? roundTo((placementTimeSec / totalCycleTimeSec) * 100, 2)
|
|
50
|
+
: 0;
|
|
51
|
+
return {
|
|
52
|
+
placementTimeSec,
|
|
53
|
+
totalCycleTimeSec,
|
|
54
|
+
boardsPerHour,
|
|
55
|
+
totalBoardsPerShift,
|
|
56
|
+
lineUtilization,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=smt-takt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smt-takt.js","sourceRoot":"","sources":["../../src/electronics/smt-takt.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EACJ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,+BAA+B;IAC/B,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,gDAAgD;IAChD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjF,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAEtE,kBAAkB;IAClB,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvF,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAC/C,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,cAAc,CAAC;QACrE,CAAC,CAAC,CAAC,CAAC;IAEN,qEAAqE;IACrE,MAAM,eAAe,GAAG,iBAAiB,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SolderInput, SolderResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate solder paste consumption for SMT production
|
|
4
|
+
* @param input - Solder paste parameters
|
|
5
|
+
* @returns Solder paste volume and weight calculations
|
|
6
|
+
*/
|
|
7
|
+
export declare function solderPaste(input: SolderInput): SolderResult;
|
|
8
|
+
//# sourceMappingURL=solder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solder.d.ts","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU5D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAiD5D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round to specified decimal places
|
|
3
|
+
*/
|
|
4
|
+
function roundTo(value, decimals) {
|
|
5
|
+
const factor = Math.pow(10, decimals);
|
|
6
|
+
return Math.round(value * factor) / factor;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Calculate solder paste consumption for SMT production
|
|
10
|
+
* @param input - Solder paste parameters
|
|
11
|
+
* @returns Solder paste volume and weight calculations
|
|
12
|
+
*/
|
|
13
|
+
export function solderPaste(input) {
|
|
14
|
+
const { padCount, avgPadArea, stencilThickness, transferEfficiency, density, boardsPerPanel, panelCount, } = input;
|
|
15
|
+
// Guard against zero/negative values
|
|
16
|
+
if (padCount <= 0 || stencilThickness <= 0) {
|
|
17
|
+
return {
|
|
18
|
+
volumePerBoard: 0,
|
|
19
|
+
weightPerBoard: 0,
|
|
20
|
+
totalVolume: 0,
|
|
21
|
+
totalWeight: 0,
|
|
22
|
+
totalWeightKg: 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Volume per board (mm3)
|
|
26
|
+
// Volume = padCount * avgPadArea * stencilThickness * transferEfficiency
|
|
27
|
+
const volumePerBoard = roundTo(padCount * avgPadArea * stencilThickness * transferEfficiency, 4);
|
|
28
|
+
// Weight per board (g)
|
|
29
|
+
// Weight = volume * density / 1000 (density is g/cm3, volume is mm3)
|
|
30
|
+
// 1 cm3 = 1000 mm3, so divide by 1000
|
|
31
|
+
const weightPerBoard = roundTo(volumePerBoard * density / 1000, 4);
|
|
32
|
+
// Total boards = boardsPerPanel * panelCount
|
|
33
|
+
const totalBoards = boardsPerPanel * panelCount;
|
|
34
|
+
// Total volume and weight
|
|
35
|
+
const totalVolume = roundTo(volumePerBoard * totalBoards, 4);
|
|
36
|
+
const totalWeight = roundTo(weightPerBoard * totalBoards, 4);
|
|
37
|
+
const totalWeightKg = roundTo(totalWeight / 1000, 4);
|
|
38
|
+
return {
|
|
39
|
+
volumePerBoard,
|
|
40
|
+
weightPerBoard,
|
|
41
|
+
totalVolume,
|
|
42
|
+
totalWeight,
|
|
43
|
+
totalWeightKg,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=solder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solder.js","sourceRoot":"","sources":["../../src/electronics/solder.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,qCAAqC;IACrC,IAAI,QAAQ,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,yEAAyE;IACzE,MAAM,cAAc,GAAG,OAAO,CAC5B,QAAQ,GAAG,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,EAC7D,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,qEAAqE;IACrE,sCAAsC;IACtC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,6CAA6C;IAC7C,MAAM,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,cAAc;QACd,cAAc;QACd,WAAW;QACX,WAAW;QACX,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StencilInput, StencilResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate stencil aperture area ratio and aspect ratio
|
|
4
|
+
* @param input - Aperture dimensions, stencil thickness, and component type
|
|
5
|
+
* @returns Area ratio, aspect ratio, and pass/fail status
|
|
6
|
+
* @throws Error if dimensions are invalid
|
|
7
|
+
*/
|
|
8
|
+
export declare function stencilAperture(input: StencilInput): StencilResult;
|
|
9
|
+
//# sourceMappingURL=stencil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stencil.d.ts","sourceRoot":"","sources":["../../src/electronics/stencil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAmB7E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8DlE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round to specified decimal places
|
|
3
|
+
*/
|
|
4
|
+
function roundTo(value, decimals) {
|
|
5
|
+
const factor = Math.pow(10, decimals);
|
|
6
|
+
return Math.round(value * factor) / factor;
|
|
7
|
+
}
|
|
8
|
+
// Recommended minimums by component type (IPC-7525B guidelines)
|
|
9
|
+
const RECOMMENDATIONS = {
|
|
10
|
+
bga: { areaRatio: 0.66, aspectRatio: 1.5 }, // Fine pitch BGA
|
|
11
|
+
qfp: { areaRatio: 0.60, aspectRatio: 1.5 }, // QFP/QFN
|
|
12
|
+
chip: { areaRatio: 0.50, aspectRatio: 1.5 }, // 0402/0603 chip components
|
|
13
|
+
sot: { areaRatio: 0.55, aspectRatio: 1.5 }, // SOT/SOIC
|
|
14
|
+
general: { areaRatio: 0.50, aspectRatio: 1.5 }, // General purpose
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Calculate stencil aperture area ratio and aspect ratio
|
|
18
|
+
* @param input - Aperture dimensions, stencil thickness, and component type
|
|
19
|
+
* @returns Area ratio, aspect ratio, and pass/fail status
|
|
20
|
+
* @throws Error if dimensions are invalid
|
|
21
|
+
*/
|
|
22
|
+
export function stencilAperture(input) {
|
|
23
|
+
const { shape, apertureWidth, apertureLength, stencilThickness, componentType } = input;
|
|
24
|
+
// Validate inputs
|
|
25
|
+
if (apertureWidth <= 0 || stencilThickness <= 0) {
|
|
26
|
+
throw new Error('Aperture width and stencil thickness must be positive');
|
|
27
|
+
}
|
|
28
|
+
if (shape === 'rectangle' && apertureLength <= 0) {
|
|
29
|
+
throw new Error('Aperture length must be positive for rectangular apertures');
|
|
30
|
+
}
|
|
31
|
+
let apertureArea;
|
|
32
|
+
let perimeter;
|
|
33
|
+
if (shape === 'circle') {
|
|
34
|
+
// For circle: width is diameter
|
|
35
|
+
const radius = apertureWidth / 2;
|
|
36
|
+
apertureArea = Math.PI * radius * radius;
|
|
37
|
+
perimeter = Math.PI * apertureWidth;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Rectangle
|
|
41
|
+
apertureArea = apertureWidth * apertureLength;
|
|
42
|
+
perimeter = 2 * (apertureWidth + apertureLength);
|
|
43
|
+
}
|
|
44
|
+
// Wall area = perimeter * stencil thickness
|
|
45
|
+
const wallArea = perimeter * stencilThickness;
|
|
46
|
+
// Area ratio = aperture area / wall area
|
|
47
|
+
const areaRatio = apertureArea / wallArea;
|
|
48
|
+
// Aspect ratio = smallest aperture dimension / stencil thickness
|
|
49
|
+
const smallestDimension = shape === 'circle' ? apertureWidth : Math.min(apertureWidth, apertureLength);
|
|
50
|
+
const aspectRatio = smallestDimension / stencilThickness;
|
|
51
|
+
// Get recommendations for component type
|
|
52
|
+
const recommendations = RECOMMENDATIONS[componentType];
|
|
53
|
+
const areaRatioOk = areaRatio >= recommendations.areaRatio;
|
|
54
|
+
const aspectRatioOk = aspectRatio >= recommendations.aspectRatio;
|
|
55
|
+
// Determine overall status
|
|
56
|
+
let status;
|
|
57
|
+
if (areaRatioOk && aspectRatioOk) {
|
|
58
|
+
status = 'good';
|
|
59
|
+
}
|
|
60
|
+
else if (areaRatioOk || aspectRatioOk) {
|
|
61
|
+
status = 'marginal';
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
status = 'poor';
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
apertureArea: roundTo(apertureArea, 4),
|
|
68
|
+
wallArea: roundTo(wallArea, 4),
|
|
69
|
+
areaRatio: roundTo(areaRatio, 3),
|
|
70
|
+
aspectRatio: roundTo(aspectRatio, 2),
|
|
71
|
+
areaRatioOk,
|
|
72
|
+
aspectRatioOk,
|
|
73
|
+
recommendedAreaRatio: recommendations.areaRatio,
|
|
74
|
+
recommendedAspectRatio: recommendations.aspectRatio,
|
|
75
|
+
status,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=stencil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stencil.js","sourceRoot":"","sources":["../../src/electronics/stencil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TraceInput, TraceResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate PCB trace width using IPC-2221 formula
|
|
4
|
+
* @param input - Trace parameters (current, temp rise, copper weight, layer)
|
|
5
|
+
* @returns Trace width and related calculations
|
|
6
|
+
*/
|
|
7
|
+
export declare function traceWidth(input: TraceInput): TraceResult;
|
|
8
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/electronics/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAsC1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgDzD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round to specified decimal places
|
|
3
|
+
*/
|
|
4
|
+
function roundTo(value, decimals) {
|
|
5
|
+
const factor = Math.pow(10, decimals);
|
|
6
|
+
return Math.round(value * factor) / factor;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* IPC-2221 constants for trace width calculation
|
|
10
|
+
* k values differ between external and internal layers
|
|
11
|
+
*/
|
|
12
|
+
const IPC2221_CONSTANTS = {
|
|
13
|
+
external: {
|
|
14
|
+
k: 0.048,
|
|
15
|
+
b: 0.44,
|
|
16
|
+
c: 0.725,
|
|
17
|
+
},
|
|
18
|
+
internal: {
|
|
19
|
+
k: 0.024,
|
|
20
|
+
b: 0.44,
|
|
21
|
+
c: 0.725,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Copper thickness per oz/ft2 in mils
|
|
26
|
+
* 1 oz/ft2 = 1.378 mils (35 um)
|
|
27
|
+
*/
|
|
28
|
+
const COPPER_THICKNESS_PER_OZ = 1.378;
|
|
29
|
+
/**
|
|
30
|
+
* Copper resistivity at 25C in ohm-mil
|
|
31
|
+
*/
|
|
32
|
+
const COPPER_RESISTIVITY = 0.6787; // micro-ohm-inch = 0.6787 ohm-mil^2/inch
|
|
33
|
+
/**
|
|
34
|
+
* Calculate PCB trace width using IPC-2221 formula
|
|
35
|
+
* @param input - Trace parameters (current, temp rise, copper weight, layer)
|
|
36
|
+
* @returns Trace width and related calculations
|
|
37
|
+
*/
|
|
38
|
+
export function traceWidth(input) {
|
|
39
|
+
const { current, tempRise, copperWeight, layer } = input;
|
|
40
|
+
// Get constants for the layer type
|
|
41
|
+
const constants = IPC2221_CONSTANTS[layer];
|
|
42
|
+
// IPC-2221 formula:
|
|
43
|
+
// Area (mil^2) = (I / (k * dT^b))^(1/c)
|
|
44
|
+
// where:
|
|
45
|
+
// I = current in amps
|
|
46
|
+
// k = constant (0.048 external, 0.024 internal)
|
|
47
|
+
// dT = temperature rise in C
|
|
48
|
+
// b = 0.44
|
|
49
|
+
// c = 0.725
|
|
50
|
+
const crossSection = Math.pow(current / (constants.k * Math.pow(tempRise, constants.b)), 1 / constants.c);
|
|
51
|
+
// Copper thickness in mils
|
|
52
|
+
const copperThickness = copperWeight * COPPER_THICKNESS_PER_OZ;
|
|
53
|
+
// Width = Area / thickness
|
|
54
|
+
const widthMils = roundTo(crossSection / copperThickness, 4);
|
|
55
|
+
// Convert to mm (1 mil = 0.0254 mm)
|
|
56
|
+
const widthMm = roundTo(widthMils * 0.0254, 4);
|
|
57
|
+
// Calculate resistance per inch at 25C
|
|
58
|
+
// R = resistivity / Area (where resistivity is in micro-ohm-inch)
|
|
59
|
+
// Area is in mil^2
|
|
60
|
+
// R = 0.6787 / Area (micro-ohm/inch) = 0.6787e-6 / Area (ohm/inch)
|
|
61
|
+
const resistance = roundTo(COPPER_RESISTIVITY / crossSection * 1e-6, 8);
|
|
62
|
+
// Voltage drop per inch = I * R
|
|
63
|
+
const voltageDrop = roundTo(current * resistance, 8);
|
|
64
|
+
// Power loss per inch = I^2 * R
|
|
65
|
+
const powerLoss = roundTo(current * current * resistance, 8);
|
|
66
|
+
return {
|
|
67
|
+
widthMils,
|
|
68
|
+
widthMm,
|
|
69
|
+
crossSection: roundTo(crossSection, 4),
|
|
70
|
+
resistance,
|
|
71
|
+
voltageDrop,
|
|
72
|
+
powerLoss,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/electronics/trace.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;KACT;IACD,QAAQ,EAAE;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;KACT;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,yCAAyC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEzD,mCAAmC;IACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE3C,oBAAoB;IACpB,wCAAwC;IACxC,SAAS;IACT,wBAAwB;IACxB,kDAAkD;IAClD,+BAA+B;IAC/B,aAAa;IACb,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EACzD,CAAC,GAAG,SAAS,CAAC,CAAC,CAChB,CAAC;IAEF,2BAA2B;IAC3B,MAAM,eAAe,GAAG,YAAY,GAAG,uBAAuB,CAAC;IAE/D,2BAA2B;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAE7D,oCAAoC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE/C,uCAAuC;IACvC,kEAAkE;IAClE,mBAAmB;IACnB,mEAAmE;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAExE,gCAAgC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAErD,gCAAgC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO;QACL,SAAS;QACT,OAAO;QACP,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,UAAU;QACV,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
|