From 7103ded32ad041a4e41e17ea0aae94e36b100d0d Mon Sep 17 00:00:00 2001 From: 49fl Date: Mon, 28 Oct 2024 20:52:51 -0400 Subject: [PATCH] Guptaarnav 2024 10 28 (#4341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * accessing toast error correctly * wrapping try-catch around fs.stat on cli arg * implemented array push * changing arg execution order for sketch arc * addressing sketchFromKclValue error for Sketches in Uservals * addressing 'update to He inside a test not wrapped in act(...' error * yarn fmt fix * implemented polygon stdlib function * changing polygon inscribed arg description in docs * addressing cargo clippy warning * Add tangential arc unavailable reason tooltip * fixing tsc errors * preventing hidden dirs from showing up as projects and prohibits renaming projects as hidden * adding unit test for desktop listProjects * showing no completions when last typed word is a number * fmt * Make clippy happy * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * yarn tsc fix: added missing toast import in Home.tsx * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * regenerating markdown docs for incoming merge from main --------- Co-authored-by: arnav Co-authored-by: github-actions[bot] --- docs/kcl/index.md | 2 + docs/kcl/polygon.md | 60 + docs/kcl/push.md | 38 + docs/kcl/std.json | 16414 ++++++++++++++++ docs/kcl/types/PolygonData.md | 24 + ...Millimeter-scale-1-Google-Chrome-win32.png | Bin 56088 -> 56092 bytes ...Millimeter-scale-2-Google-Chrome-win32.png | Bin 48316 -> 48215 bytes ...e-with-none-z-up-1-Google-Chrome-win32.png | Bin 66156 -> 65787 bytes src/Toolbar.tsx | 27 +- .../ModelingPanes/MemoryPane.tsx | 21 +- src/components/UserSidebarMenu.test.tsx | 34 +- src/lib/desktop.test.ts | 131 + src/lib/desktop.ts | 5 + src/lib/getCurrentProjectFile.ts | 11 +- src/lib/toolbar.ts | 8 + src/routes/Home.tsx | 6 + src/wasm-lib/kcl/src/lsp/kcl/mod.rs | 32 + src/wasm-lib/kcl/src/lsp/tests.rs | 33 + src/wasm-lib/kcl/src/std/args.rs | 14 + src/wasm-lib/kcl/src/std/array.rs | 60 + src/wasm-lib/kcl/src/std/mod.rs | 2 + src/wasm-lib/kcl/src/std/shapes.rs | 201 +- src/wasm-lib/kcl/src/std/sketch.rs | 2 +- .../outputs/serial_test_example_polygon0.png | Bin 0 -> 47662 bytes .../outputs/serial_test_example_polygon1.png | Bin 0 -> 51370 bytes .../outputs/serial_test_example_push0.png | Bin 0 -> 19651 bytes .../inputs/no_visuals/array_elem_push.kcl | 12 + src/wasm-lib/tests/executor/no_visuals.rs | 1 + 28 files changed, 17111 insertions(+), 27 deletions(-) create mode 100644 docs/kcl/polygon.md create mode 100644 docs/kcl/push.md create mode 100644 docs/kcl/types/PolygonData.md create mode 100644 src/lib/desktop.test.ts create mode 100644 src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon0.png create mode 100644 src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon1.png create mode 100644 src/wasm-lib/kcl/tests/outputs/serial_test_example_push0.png create mode 100644 src/wasm-lib/tests/executor/inputs/no_visuals/array_elem_push.kcl diff --git a/docs/kcl/index.md b/docs/kcl/index.md index da2243646..75f3c19d4 100644 --- a/docs/kcl/index.md +++ b/docs/kcl/index.md @@ -74,10 +74,12 @@ layout: manual * [`patternTransform`](kcl/patternTransform) * [`pi`](kcl/pi) * [`polar`](kcl/polar) +* [`polygon`](kcl/polygon) * [`pow`](kcl/pow) * [`profileStart`](kcl/profileStart) * [`profileStartX`](kcl/profileStartX) * [`profileStartY`](kcl/profileStartY) +* [`push`](kcl/push) * [`reduce`](kcl/reduce) * [`rem`](kcl/rem) * [`revolve`](kcl/revolve) diff --git a/docs/kcl/polygon.md b/docs/kcl/polygon.md new file mode 100644 index 000000000..de75c3538 --- /dev/null +++ b/docs/kcl/polygon.md @@ -0,0 +1,60 @@ +--- +title: "polygon" +excerpt: "Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius." +layout: manual +--- + +Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius. + + + +```js +polygon(data: PolygonData, sketch_surface_or_group: SketchOrSurface, tag?: TagDeclarator) -> Sketch +``` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `data` | [`PolygonData`](/docs/kcl/types/PolygonData) | Data for drawing a polygon | Yes | +| `sketch_surface_or_group` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | A sketch surface or a sketch. | Yes | +| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | + +### Returns + +[`Sketch`](/docs/kcl/types/Sketch) - A sketch is a collection of paths. + + +### Examples + +```js +// Create a regular hexagon inscribed in a circle of radius 10 +hex = startSketchOn('XY') + |> polygon({ + radius: 10, + numSides: 6, + center: [0, 0], + inscribed: true + }, %) + +example = extrude(5, hex) +``` + +![Rendered example of polygon 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAC59UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqv+hrrnmmge/2Iu92Gtz1VX/w/3Wb/3Wd3PVVVddddVVV131PxN60IMexFVXXXXVVVddddX/JNdcc82D3/Ed3/GzXuzFXuy1Aa655poHc9VV/0Pdd999twL8wz/8w2//1m/91vf8wz/8w29z1VVXXXXVVVdd9T8HetCDHsRVV1111VVXXXXV/wTXXHPNg9/xHd/xs17ndV7nvXmmv/iLv+Cqq/6ne7mXeznu91u/9Vvf/Vu/9Vvf8w//8A+/zVVXXXXVVVddddV/P/SgBz2Iq6666qqrrrrqqv9O11xzzYM//MM//Lte7MVe7LUBLl68yF/8xV/w67/+61z1v4Nt/j87ceIEL/dyL8cbvMEbcL/77rvv1h/90R/9nN/6rd/6bq666qqrrrrqqqv++6AHPehBXHXVVVddddVVV/13eJ3XeZ33fsd3fMfPuuaaax4McPHiRf7iL/6CX//1X+eqq14Y2/xPdOLECV7u5V6ON3iDN+B+9913360/+qM/+jm/9Vu/9d1cddVVV1111VVX/ddDD3rQg7jqqquuuuqqq676r/SO7/iOn/U6r/M6733NNdc8GODixYv8xV/8Bb/+67/OVVf9d7HNf5QTJ07wci/3crz8y788J06cAOC+++679bd+67e++0d/9Ec/h6uuuuqqq6666qr/OuhBD3oQV1111VVXXXXVVf8V3vEd3/Gz3umd3umzeaaLFy/yF3/xF/z6r/86V131f4Vt7nfixAke+tCH8gZv8AacOHECgPvuu+/W3/qt3/ruH/3RH/0crrrqqquuuuqqq/7zoQc96EFcddVVV1111VVX/We55pprHvzar/3a7/VO7/ROn80zXbx4kb/4i7/g13/917nqqv8PTpw4wUMf+lBe7uVejoc+9KEA3Hfffbf+1m/91nf/6I/+6Odw1VVXXXXVVVdd9Z8HPehBD+Kqq6666qqrrrrqP9o111zz4Nd+7dd+r3d6p3f6bJ7p4sWL/MZv/AZ/8Rd/wVX/e9nmqn+7l3u5l+PlXu7leOhDHwrAfffdd+tv/dZvffdv//Zvf8999913K1ddddVVV1111VX/sdCDHvQgrrrqqquuuuqqq/6jXHPNNQ9+7dd+7fd6p3d6p8/mmS5evMiP//iP87SnPY2rrvrXss3/RSdOnOAd3uEdeOhDHwrAfffdd+s//MM//PaP/uiPfs599913K1ddddVVV1111VX/MdCDHvQgrrrqqquuuuqqq/69rrnmmge/9mu/9nu90zu902fzTE972tP48R//cS5evMhVV/1PY5v/CU6cOMHrv/7r83Iv93IA3Hfffbf+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137t136vd3qnd/psnunixYv85E/+JE9/+tO56qqr/vexzf80J06c4HVf93V52Zd9WQDOnj37jL//+7//rR/90R/9nPvuu+9Wrrrqqquuuuqq/y3Qgx70IK666qqrrrrqqv/5rrnmmge/9mu/9nu90zu902fzTE9/+tP5iZ/4CXZ3d/mvJImr/n+xzVX/s9jmv8KJEyd43dd9XV72ZV8WgPvuu+/Wf/iHf/jt3/qt3/qef/iHf/htrrrqqquuuuqq/+nQgx70IK666qqrrrrqqv+5rrnmmge/4zu+42e9zuu8znvzTL/5m7/JX/7lX7K7uwuAJK666v8S21z1H882/1bHjx/nZV/2ZXm913s97vdbv/Vb3/Nbv/Vb3/0P//APv81VV1111VVXXfU/FXrQgx7EVVddddVVV131P88111zz4A//8A//rhd7sRd7bZ7pN3/zN/mt3/otrrrqqn8921z1r2Ob53bixAle5mVehtd7vdfjfvfdd9+tX//1X/8+//AP//DbXHXVVVddddVV/9OgBz3oQVx11VVXXXXVVf9zvNiLvdhrf/iHf/h3XXPNNQ8G2N3d5S//8i/5rd/6La666qr/Xra56orjx4/zsi/7srzu674u97vvvvtu/dEf/dHP+a3f+q3v5qqrrrrqqquu+p8CPehBD+Kqq6666qqrrvrv947v+I6f9Tqv8zrvfc011zwYYHd3l7/8y7/kt37rt7jqqqv+b7DN/zXHjx/nZV/2ZXmZl3kZTpw4AcB9991362/91m9994/+6I9+DlddddVVV1111X839KAHPYirrrrqqquuuuq/zzu+4zt+1ju90zt9Ns+0u7vLX/7lX/Jbv/Vb/F8kiav+e9jmqv+dbPM/3fHjx3nIQx7C677u63LixAkA7rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqqv+u6AHPehBXHXVVVddddVV/7WuueaaB7/2a7/2e73TO73TZ/NMu7u7/OVf/iW/9Vu/xX8mSVx11X8X21z1n882/12OHz/OQx7yEF72ZV+WhzzkIQCcPXv2Gb/5m7/5XT/6oz/6OVx11VVXXXXVVf/V0IMe9CCuuuqqq6666qr/Gtdcc82DX/u1X/u93umd3umzeabd3V1+8zd/k7/6q7/ifpK46qqrXnS2uerfzjb/GV7mZV6Gl33Zl+UhD3kIAPfdd9+t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j3jEIzh16hT/8A//8Ns/+qM/+jlcddVVV1111VX/1xFcddVVV1111VX/59133323fv3Xf/373Hfffbe+yZu8Ca/0Sq/Ei+LChQsA7Ozs8NxsYxvb2MY2trHNVc+fbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc1Vz59tbGMb29jGNv/RJCGJ+0nifpIAOHXqFI985CO57777bv3Mz/zM1+Gqq6666qqrrvr/gOCqq6666qqrrvp/4b777rv1sz7rs14H4E3e5E14+MMfzgPZ5rlduHABgO3tbf41bGMb29jGNra56qr/y2xjG9vYxja2+a8mCUkASEISABsbG7zyK78yAF//9V//Plx11VVXXXXVVf9fEFx11VVXXXXVVf9v3Hfffbd+/dd//fucPHmSd3u3d+O/mm1sYxvb2MY2trnqqv8NbGMb29jGNraxzX+H7e1tAI6OjgCQxP0kcT9JvORLviQAn/mZn/k6//AP//DbXHXVVVddddVV/18QXHXVVVddddVV/6/81m/91nf/yI/8yGefPHmSj/iIj+CFuXDhAgA7Ozv8Z7ONbWxjG9vYxja2ueqq/yq2sY1tbGMb29jmf5qdnR0AlsslkrifJO4niVd6pVfi1KlT/OiP/ujn/MM//MNvc9VVV1111VVX/X9CcNVVV1111VVX/b/zoz/6o5/zW7/1W9/98Ic/nDd+4zfmfrb5n8o2trGNbWxjG9vY5qqrXhS2sY1tbGMb29jGNrb530wSkrifJB7xiEdw6tQp/uEf/uG3f+RHfuSzueqqq6666qqr/r+hctVVV1111VVX/b/0oz/6o59zzTXXPPhN3uRNXhvgl3/5l3luFy5cAGBnZ4f/6WzzopDEVf832eb/C9sA7OzsALBcLpHE/SQBcPLkSR7xiEdw33333fqZn/mZr8NVV1111VVXXfX/EcFVV1111VVXXfX/0n333Xfr13/917/Pfffdd+srvdIr8YhHPIL/D2xjG9vYxja2sY1tbGMb21z138s2trGNbWxjG9vYxja2sY1t/i+yjW1sYxvb2Oa5SeJ+kgA4efIkr/zKrwzAZ33WZ70OV1111VVXXXXV/1cEV1111VVXXXXV/1v33XffrV//9V//PidPnuRd3/VdOXnyJLa534ULFwDY2dnBNv/f2MY2trGNbWxjG9vYxja2sY1tbGMb21wFtrGNbWxjG9vYxja2sY1tbGMb29jm/xvb2MY2trHNv2RnZweA5XKJJCQBsFgseKmXeikAPvMzP/N17rvvvlu56qqrrrrqqqv+vyK46qqrrrrqqqv+X/uHf/iH3/76r//69zl58iQf8REfwQtjG9vYxja2sc1Vz59tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNba56XraxjW1sYxvb/EeRxEu91EuxWCz4+q//+vf5h3/4h9/mqquuuuqqq676/4zgqquuuuqqq676f++3fuu3vvtHfuRHPvvkyZO827u9G/e7cOECADs7O7wwtrGNbWxjG9vY5qqr/j+yjW1sYxvb2MY2/5F2dnYAWC6XAEjilV7plTh58iT/8A//8Nu/9Vu/9d1cddVVV1111VX/3xFcddVVV1111VVXAb/1W7/13f/wD//w26/4iq/IG73RG/EfxTa2sY1tbGObq6763842trGNbWxjG9v8V5OEJG688UZOnjzJP/zDP/z2Z37mZ74OV1111VVXXXXVVUBw1VVXXXXVVVddBZw9e/YZX//1X/8+9913362v9EqvxMMf/nAALly4AMDOzg7/kWxjG9vYxja2sY1trrrqfwLb2MY2trGNbWzz321nZweA5XIJwMmTJ3nJl3xJ7rvvvls/8zM/83W46qqrrrrqqquuuoLgqquuuuqqq6666pnuu+++Wz/rsz7rdU6ePMm7vuu7cvLkSS5cuADAzs4O/5VsYxvb2MY2trGNba666j+CbWxjG9vYxja2sc3/FovFgld6pVcC4Ou//uvfh6uuuuqqq6666qpnI7jqqquuuuqqq656gPvuu+/Wr//6r3+fkydP8uEf/uH8T2Ub29jGNraxjW1sY5ur/n+zjW1sYxvb2MY2trHN/2Y7OzsALJdLXvIlXxKAz/zMz3ydf/iHf/htrrrqqquuuuqqq56NylVXXXXVVVddddVz+a3f+q3vPnPmzIPe6Z3e6bNPnjzJ/1a2eVFJ4qr/+Wzz/5lt7re9vQ3AyZMnAfiRH/mRz/6Hf/iH3+aqq6666qqrrrrqOVG56qqrrrrqqquuej5++7d/+3te7MVe7LVf/MVf/LUBHvvYx7Kzs8NVz0kSV/3r2eaqF8w2/5Kbb76Z+/3DP/zDb//oj/7o53DVVVddddVVV131vNCDHvQgrrrqqquuuuqqq56fM2fOPOhzP/dzfxvgmmuueTBXXXXV/yj33XffrQAf8iEf8hCuuuqqq6666qqrnj/0oAc9iKuuuuqqq6666qoX5nVe53Xe+8Ve7MVei6uuuup/lN/6rd/6nrNnz95633333cpVV1111VVXXXXV84ce9KAHcdVVV1111VVXXXXVVVddddVVV1111VVX/Z9E5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+r+EcBlIqNer4rngAAAABJRU5ErkJggg==) + +```js +// Create a square circumscribed around a circle of radius 5 +square = startSketchOn('XY') + |> polygon({ + radius: 5.0, + numSides: 4, + center: [10, 10], + inscribed: false + }, %) +example = extrude(5, square) +``` + +![Rendered example of polygon 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADIcUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666v+Na6655sEA9913361cddVVV1111VVXXfX/AZWrrrrqqquuuuqqq/7Puuaaax782q/92u8F8E7v9E6ffd99993KM/3DP/zDb//DP/zD7/zWb/3Wd3PVVVddddVVV1111f9V6EEPehBXXXXVVVddddVVV/3fcc011zz4tV/7td/rdV7ndd77mmuueTAvgvvuu+/Wf/iHf/jt3/qt3/qef/iHf/htrrrqqquuuuqqq676vwI96EEP4qqrrrrqqquuuuqq/72uueaaB7/2a7/2e734i7/4a7/Yi73Ya/MAFy5c4MKFCzz1qU/lz/7sz3ijN3ojAH7lV36Fhz3sYTz84Q/nFV7hFXig++6779Z/+Id/+O1/+Id/+J377rvv1n/4h3/4ba666qqrrrrqqquu+t8KPehBD+Kqq6666qqrrrrqqv89rrnmmgefOXPmwS/2Yi/2Wu/0Tu/02TyXCxcu8Gd/9mc85SlP4alPfSr/kpMnT3LixAke/vCH87CHPYyHP/zhPNB999136z/8wz/89j/8wz/8zm/91m99N1ddddVVV1111VVX/W+CHvSgB3HVVVddddVVV1111f9s11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5gAsXLvDUpz6VCxcu8Cu/8iv8e508eZKHPexhPPzhD+cVXuEVeKD77rvv1rNnz97693//97/9D//wD7/zD//wD7/NVVddddVVV1111VX/k6EHPehBXHXVVVddddVVV131P8s111zz4Nd+7dd+L4B3eqd3+myey4ULF/izP/sznvrUp/LUpz6V/0wnT57k5V/+5Xn4wx/Owx72MB7ovvvuu/Uf/uEffvsf/uEffue3fuu3vpurrrrqqquuuuqqq/6nQQ960IO46qqrrrrqqquuuuq/3zXXXPPg137t136vF3/xF3/tF3uxF3ttHuDChQv82Z/9GRcvXuTP/uzP+O9y8uRJHvawh/Gwhz2MkydP8rCHPYwHuu+++279rd/6re/+h3/4h9/5h3/4h9/mqquuuuqqq6666qr/buhBD3oQV1111VVXXXXVVVf917vmmmse/Nqv/drv9eIv/uKv/WIv9mKvzXN56lOfylOe8hT+/M//nAsXLvA/0cmTJ3nYwx7GK7zCK/Cwhz2MB7rvvvtu/Yd/+Iff/od/+Iffue+++279h3/4h9/mqquuuuqqq6666qr/auhBD3oQV1111VVXXXXVVVf957vmmmsefObMmQe/2Iu92Gu9zuu8zntfc801D+YBLly4wJ/92Z/x1Kc+lac+9an8b3Py5ElOnDjBwx72MB7+8IfzsIc9jAe67777bv2Hf/iH3/6Hf/iH3/mt3/qt7+aqq6666qqrrrrqqv8K6EEPehBXXXXVVVddddVVV/3nuOaaax782q/92u/14i/+4q/9Yi/2Yq/NA1y4cIGnPvWpXLhwgV/91V/l/5qTJ0/ysIc9jIc97GG8wiu8Ag9033333Xr27Nlb//7v//63/+Ef/uF3/uEf/uG3ueqqq6666qqrrrrqPwN60IMexFVXXXXVVVddddVV/zGuueaaB7/Yi73Ya585c+ZB7/RO7/TZPJcLFy7w53/+5zz1qU/lqU99Ki+Ibf4vOXnyJAAv//Ivz8Mf/nAe9rCH8UD33Xffrf/wD//w2//wD//wO7/1W7/13Vx11VVXXXXVVVdd9R8FPehBD+Kqq6666qqrrrrqqn+7a6655sGv/dqv/V4v/uIv/tov9mIv9to8wIULF/jzP/9zAH71V3+V/21s85/h5MmTPOxhD+NhD3sYD3vYwzh58iQPdN999936W7/1W9/9D//wD7/zD//wD7/NVVddddVVV1111VX/VuhBD3oQV1111VVXXXXVVVe96K655poHv/Zrv/Z7XXPNNQ9+ndd5nffmuVy4cIE///M/58/+7M+4ePEiV/3LTpw4wcMe9jBe4RVegYc97GE80H333XfrP/zDP/z2P/zDP/zOfffdd+s//MM//DZXXXXVVVddddVVV72o0IMe9CCuuuqqq6666qqrrnrhXuzFXuy1X+zFXuy1Xud1Xue9r7nmmgfzABcuXODP//zPeepTn8pTn/pUrvr3OXHiBCdPnuTlX/7lOXnyJA972MN4oPvuu+/Wf/iHf/jt3/qt3/qef/iHf/htrrrqqquuuuqqq656YdCDHvQgrrrqqquuuuqqq656Ttdcc82DX/u1X/u9XvzFX/y1X+zFXuy1eYALFy5w8eJFnvrUp/Krv/qrXPWf68SJEzzsYQ/jYQ97GK/wCq/AA9133323nj179ta///u//+1/+Id/+J1/+Id/+G2uuuqqq6666qqrrnog9KAHPYirrrrqqquuuuqq/++uueaaB7/Yi73Ya585c+ZB7/RO7/TZPJcLFy7w53/+5zz1qU/lqU99Klf99zhx4gQAr/AKr8DDHvYwHvawh/FA9913363/8A//8Nv/8A//8Du/9Vu/9d1cddVVV1111VVXXYUe9KAHcdVVV1111VVXXfX/0TXXXPPg137t136vF3/xF3/tF3uxF3ttHuDChQv8+Z//OQC/+qu/ylX/M504cYKHPexhPOxhD+MVXuEVeKD77rvvVoDf+q3f+u5/+Id/+J1/+Id/+G2uuuqqq6666qqr/v9BD3rQg7jqqquuuuqqq676/+Caa6558Gu/9mu/F8A7vdM7fTbP5eLFi/zZn/0ZT3va03jqU5/K/za2+f/uxIkTPOxhD+MVXuEVeNjDHsYD3Xfffbf+wz/8w2//wz/8w+/8wz/8w2/fd999t3LVVVddddVVV131fx960IMexFVXXXXVVVddddX/Vddcc82DX/u1X/u9Xud1Xue9r7nmmgfzABcvXuTP/uzPeNrTnsZTn/pUrvq3s83/NCdOnOBhD3sYD3vYwzh58iQPe9jDeKD77rvv1n/4h3/47d/6rd/6nn/4h3/4ba666qqrrrrqqqv+b0IPetCDuOqqq6666qqrrvq/4pprrnnwa7/2a7/Xi7/4i7/2i73Yi702D3Dx4kUuXLjAU5/6VP78z/+cixcvctX/Hrb59zhx4gQPe9jDeNjDHsYrvMIr8ED33XffrWfPnr31t37rt77nvvvuu/Uf/uEffpurrrrqqquuuuqq/xvQgx70IK666qqrrrrqqqv+t7rmmmsefObMmQe/2Iu92Gu90zu902fzXC5evMif/dmf8bSnPY2nPvWpXHUVwIkTJzh58iQPfehDedjDHsbDHvYwHui+++679R/+4R9++x/+4R9+57d+67e+m6uuuuqqq6666qr/vdCDHvQgrrrqqquuuuqqq/43ueaaax782q/92u/14i/+4q/9Yi/2Yq/NA1y8eJE/+7M/A+DXfu3XuOqqF8WJEyd42MMexsMe9jBe/uVfnge67777bj179uytf//3f//b//AP//A7//AP//DbXHXVVVddddVVV/3vgR70oAdx1VVXXXXVVVdd9T/ZNddc8+DXfu3Xfi+Ad3qnd/psnsvFixf5sz/7M572tKfx1Kc+lauu+vc6ceIEL//yL8/DHvYwHvawh/FA9913363/8A//8Nv/8A//8Du/9Vu/9d1cddVVV1111VVX/c+GHvSgB3HVVVddddVVV131P80111zz4Nd+7dd+rxd/8Rd/7Rd7sRd7bR7g4sWL/Pmf/zkXL17kz//8z/n/wDZX/fc4ceIED3vYw3jYwx7GiRMneNjDHsYD3Xfffbf+wz/8w2//1m/91vf8wz/8w29z1VVXXXXVVVdd9T8LetCDHsRVV1111VVXXXXVf7drrrnmwa/92q/9Xi/+4i/+2i/2Yi/22jyXpz71qTztaU/jz//8z7l48SJX/fewzf93J06c4GEPexgv//Ivz8Me9jAe6L777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpurrrrqqquuuuqq/17oQQ96EFddddVVV1111VX/1a655poHnzlz5sEv9mIv9lqv8zqv897XXHPNg3mAixcv8ud//uc89alP5WlPexpX/f9im/8NTpw4wcmTJ3noQx/Kwx72MB72sIfxQPfdd9+t//AP//Db//AP//A7v/Vbv/XdXHXVVVddddVVV/3XQw960IO46qqrrrrqqquu+q9wzTXXPPi1X/u13+vFX/zFX/vFXuzFXpsHuHjxIk996lO5ePEiv/Zrv8ZVV/1Hs81/thMnTvCwhz2Mhz3sYbz8y788D3Tffffdevbs2Vv//u///rf/4R/+4Xf+4R/+4be56qqrrrrqqquu+s+HHvSgB3HVVVddddVVV131n+Gaa6558Iu92Iu99pkzZx70Tu/0Tp/Nc7l48SJ//ud/zlOf+lSe9rSncdVV/5vY5l9y4sQJXv7lX56HPexhPOxhD+OB7rvvvlv/4R/+4bf/4R/+4Xd+67d+67u56qqrrrrqqquu+s+BHvSgB3HVVVddddVVV131H+Waa6558Gu/9mu/14u/+Iu/9ou92Iu9Ng9w8eJF/vzP/xyAX/u1X+Oqq/4/OXHiBA972MN46EMfysMe9jBOnDjBA9133323/tZv/dZ3/8M//MPv/MM//MNvc9VVV1111VVXXfUfAz3oQQ/iqquuuuqqq6666t/qmmuuefBrv/Zrv9c111zz4Nd5ndd5b57LxYsX+fM//3P+4i/+gosXL3LVc7LNVf8/nThxgoc97GG83Mu9HA972MN4oPvuu+/Wf/iHf/jtf/iHf/id++6779Z/+Id/+G2uuuqqq6666qqr/m3Qgx70IK666qqrrrrqqqv+NV7sxV7stV/sxV7stV7ndV7nva+55poH8wAXL17kz//8z3na057G0572NK7638k2V/3XOXHiBCdOnODlX/7lOXHiBA972MN4oPvuu+/Wf/iHf/jt3/qt3/qef/iHf/htrrrqqquuuuqqq1506EEPehBXXXXVVVddddVVL8w111zz4Nd+7dd+rxd/8Rd/7Rd7sRd7bR7g4sWLXLx4kac+9an8+q//Oldd9a9lm6ue04kTJ3jYwx7GQx/6UF7+5V+eB7rvvvtuPXv27K1///d//9v/8A//8Dv/8A//8NtcddVVV1111VVXvWDoQQ96EFddddVVV1111VUPdM011zz4xV7sxV77zJkzD3qnd3qnz+a5XLx4kT//8z/naU97Gk972tO46qr/iWzzf8GJEycAePmXf3ke+tCH8rCHPYwHuu+++279h3/4h9/+h3/4h9/5rd/6re/mqquuuuqqq6666jmhBz3oQVx11VVXXXXVVVddc801D37t137t93rxF3/x136xF3ux1+YBLl68yJ//+Z8D8Ou//utcddX/R7b5n+DEiRM87GEP46EPfSgv//IvzwPdd999twL81m/91nf/wz/8w+/8wz/8w29z1VVXXXXVVVf9f4ce9KAHcdVVV1111VVX/f9zzTXXPPi1X/u13wvgnd7pnT6b53Lx4kX+/M//nL/4i7/g4sWLXHXVVf9+tvmPduLECR72sIfxci/3cjzsYQ/jge67775b/+Ef/uG3/+Ef/uF3/uEf/uG377vvvlu56qqrrrrqqqv+v0EPetCDuOqqq6666qqr/n+45pprHvzar/3a7/U6r/M6733NNdc8mAe4ePEif/EXf8HTnvY0nva0p3HVv51trrrqP4NtXpgTJ07wsIc9jIc+9KGcOHGChz3sYTzQfffdd+s//MM//PZv/dZvfc8//MM//DZXXXXVVVddddX/B+hBD3oQV1111VVXXXXV/03XXHPNg1/7tV/7vV78xV/8tV/sxV7stXmAixcvcvHiRZ72tKfx67/+61z1/5Ntrvq/68SJEzz0oQ/lYQ97GC/3ci/HA9133323nj179tbf+q3f+p777rvv1n/4h3/4ba666qqrrrrqqv+L0IMe9CCuuuqqq6666qr/G6655poHnzlz5sEv9mIv9lrv9E7v9Nk8l4sXL/IXf/EXPO1pT+NpT3saV131X802V/33OHHiBCdOnOChD30oD3vYw3joQx/KA9133323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111VVX/V+BHvSgB3HVVVddddVVV/3vdc011zz4tV/7td/rxV/8xV/7xV7sxV6bB7h48SJ/8Rd/AcCv//qvc9VV/5fZ5qoX3YkTJ3joQx/Kwx72MF7u5V6OB7rvvvtuBfit3/qt7/6Hf/iH3/mHf/iH3+aqq6666qqrrvrfCj3o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fydJ/EeRxH8ESQBsbW0BcPbs2Wdw1VVXXXXVVVf9WxBcddVVV1111VX/Jv/wD//wOwA333wzV131f40k/qeQxL+GJP41JPGiksR/N0m8qCTxH0kS/1EkcdVVV1111VVX/ZcguOqqq6666qqrrrrqqn8nSfxrSOJfQxL/GpL4zyKJF5UkXlSSeFFJ4kUliReFJF4UkviXSOI/giS2trYAuO+++27lqquuuuqqq676tyC46qqrrrrqqqv+Tc6ePXsrwLFjx7jqqv+LJPGvIYl/DUn8a0jiP4sk/rNI4kUlif8rJPEvkcS/ZGtrC4CzZ8/eylVXXXXVVVdd9W9BcNVVV1111VVXXXXVVS+AJP41JPE/hST+NSTxopLEfzdJvKgk8aKQxItCEv9Vtre3ueqqq6666qqr/l0Irrrqqquuuuqqf5P77rvvVoBjx45x1VX/l0niP4sk/jUk8a8hif8sknhRSeJFJYkXlSReVJJ4UUjiP4ok/iWSeFHcd999t3LVVVddddVVV/1bEFx11VVXXXXVVf9m9913360Ax44d46qrrrpCEv8akvjXkMS/hiReVJL415DEi0oSLypJ/E8nif9sW1tbANx33323ctVVV1111VVX/VsRXHXVVVddddVV/2Znz569FWBnZ4er/veQxP93kvjXkMS/hiT+NSTxP4Uk/jeRxItKEi8KSbwoJPEvkcS/RBLPz9bWFgBnz569lauuuuqqq6666t+K4Kqrrrrqqquuuuqq/1SS+J9IEv8akvjXkMR/Fkn8a0jiX0MSLypJvKgk8aKSxItKEi8qSbwoJPHfbWtrC4D77rvvVq666qqrrrrqqn8rgquuuuqqq6666t/svvvuuxXglltu4aqr/jeSxP8UkvjXkMS/hiT+s0jiRSWJF5Uk/qeTxL9EEv8SSVx11VVXXXXVVf8pCK666qqrrrrqqn+z++6771b+n5PEVf9/SOJfQxL/GpL415DEfxZJ/GeRxH80SbyoJPGikMR/FEn8a21tbQFw33333cpVV1111VVXXfVvRXDVVVddddVVV/2bnT179hkAx44d46qr/reSxL+GJP41JPGvIYn/LJL415DEi0oS/xkk8aKSxItKEv9RJPEfQRIPtL29DcDZs2efwVVXXXXVVVdd9W9FcNVVV1111VVX/Zvdd999twLs7Oxw1VX/m0niX0MS/xqS+M8iiX8NSfxrSOJFJYkXlSReVJL47yKJF4Uk/iWSuOqqq6666qqr/ssRXHXVVVddddVVV131f44k/rUk8T+FJP41JPGvIYn/LJJ4UUniRSWJF4UkXlSSeFFI4r+KJO533XXXAfAP//APv81VV1111VVXXfVvRXDVVVddddVVV/2bnT179laAY8eOcdVV/99I4l9DEv8akvjXkMS/hiReVJL4zyKJ/2iSeFFJ4j+KJP4lkviXSOKqq6666qqrrvoPQ3DVVVddddVVV/2b3XfffbcCHDt2jKuu+r9AEv8akvjXkMS/hiT+NSTxn0USLypJ/GeQxH8XSfxX29raAuC+++67lauuuuqqq6666t+K4Kqrrrrqqquu+ne57777bgU4duwYV/3fIYn/ryTxryGJfw1J/E8hiX8NSbyoJPGiksSLShIvCkm8qCTxopDEv0QS/xJJ/EskcdVVV1111VVX/YcguOqqq6666qqr/l3Onj17K8DOzg7/20jiqqueH0n8TyGJfw1J/GtI4j+LJF5UkviPJon/ra677joAzp49+wyuuuqqq6666qp/D4Krrrrqqquuuuqqq676d5LEv4Yk/jUk8a8hiX8NSbyoJPHfTRL/0STxopDEv0QS/xJJvDBbW1sA/P3f//1vc9VVV1111VVX/XsQXHXVVVddddVV/y733XffrQDHjh3jqqv+L5HEv4Yk/jUk8a8hiX8NSfxnkcSLShIvKkm8qCTxopDEi0oS/1Ek8S+RxFVXXXXVVVdd9Z+O4Kqrrrrqqquu+ne57777bgU4duwYV131n00S/5Uk8a8hiX8NSfxrSOI/iyT+NSTxopLEi0oSLypJvCgk8R9JEv/Ztra2ALjvvvuezlVXXXXVVVdd9e9BcNVVV1111VVXXXXVVS+EJP41JPE/hST+NSTxn0USLypJ/EeTxItCEi8KSfxLJPEvkcTzs7W1BcDZs2efwVVXXXXVVVdd9e9BcNVVV1111VVX/bv8wz/8w+8A3HzzzVx11f8WkvifQhL/GpL415DEv4YkXlSS+O8mif9okrjqqquuuuqqq/7PILjqqquuuuqqq6666qp/gST+NSTxryGJfw1J/GtI4l9DEi8qSbyoJPGiksSLShIvCkn8R5LEv0QS/xJJPLetrS0Azp49eytXXXXVVVddddW/B8FVV1111VVXXfXvcvbs2VsB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rrrqqqv+N6IcP36cq6666qqrrrrqqqv+dzo6Orr0Z3/2Zz9zeHi4++Iv/uKvferUKR70oAfR9z333HMPDySJl3mZlwHgKU95Cs/t4Q9/OC/7si/LyZMnAfiRH/mRz/7SL/3Stzl79uytXHXVVVddddVVV131vxXl+PHjXHXVVVddddVVV131v9fh4eHuP/zDP/zOb//2b3/P5ubm8Uc96lEvff311/OIRzyC8+fPc3BwgCQAXuZlXgaApzzlKdxvsVjwsi/7stx4440A/MM//MNvf9Znfdbr/Omf/unPcNVVV1111VVXXXXV/3aU48ePc9VVV1111VVXXXXV/36Hh4e7f/qnf/ozZ8+evfXBD37wS584ceL49ddfT9/33HPPPQC8zMu8DABPfepTWSwWPPjBD+ZlX/ZlWSwW3Hfffbd+yZd8ydv86I/+6OccHh7uctVVV1111VVXXXXV/wWU48ePc9VVV1111VVXXXXV/x233nrr3/zZn/3ZzxweHu6+7Mu+7Gtff/31POIRj6Dve66//noAVqsVr/iKr8jJkycB+JEf+ZHP/tIv/dK3OXv27K1cddVVV1111VVXXfV/CXrQgx7EVVddddVVV1111VX/N11zzTUP/vAP//DverEXe7HX5vm47777bv2sz/qs17nvvvtu5aqrrrrqqquuuuqq/4sox48f56qrrrrqqquuuuqq/5sODw93f+u3fut7AK655poHb25uHge47777bv35n//5r/7SL/3Stzk8PNzlqquuuuqqq6666qr/q9CDHvQgrrrqqquuuuqqq676v++aa6558JkzZx58zTXXPPi3fuu3vpurrrrqqquuuuqqq/4/QA960IO46qqrrrrqqquuuuqqq6666qqrrrrqqqv+T6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwH4w+tvGVQZvwAAAABJRU5ErkJggg==) + + diff --git a/docs/kcl/push.md b/docs/kcl/push.md new file mode 100644 index 000000000..321786b07 --- /dev/null +++ b/docs/kcl/push.md @@ -0,0 +1,38 @@ +--- +title: "push" +excerpt: "Append an element to the end of an array." +layout: manual +--- + +Append an element to the end of an array. + +Returns a new array with the element appended. + +```js +push(array: [KclValue], elem: KclValue) -> KclValue +``` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | | Yes | +| `elem` | [`KclValue`](/docs/kcl/types/KclValue) | Any KCL value. | Yes | + +### Returns + +[`KclValue`](/docs/kcl/types/KclValue) - Any KCL value. + + +### Examples + +```js +arr = [1, 2, 3] +new_arr = push(arr, 4) +assertEqual(new_arr[3], 4, 0.00001, "4 was added to the end of the array") +``` + +![Rendered example of push 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) + + diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 6dcf0a703..058d12394 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -119614,6 +119614,4104 @@ "exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line(polar({ angle: 30, length: 5 }), %, $thing)\n |> line([0, 5], %)\n |> line([segEndX(thing), 0], %)\n |> line([-20, 10], %)\n |> close(%)\n\nexample = extrude(5, exampleSketch)" ] }, + { + "name": "polygon", + "summary": "Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius.", + "description": "", + "tags": [], + "args": [ + { + "name": "data", + "type": "PolygonData", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "PolygonData", + "description": "Data for drawing a polygon", + "type": "object", + "required": [ + "center", + "numSides", + "radius" + ], + "properties": { + "radius": { + "description": "The radius of the polygon", + "type": "number", + "format": "double" + }, + "numSides": { + "description": "The number of sides in the polygon", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "center": { + "description": "The center point of the polygon", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "inscribed": { + "description": "Whether the polygon is inscribed (true) or circumscribed (false) about a circle with the specified radius", + "default": true, + "type": "boolean" + } + } + }, + "required": true + }, + { + "name": "sketch_surface_or_group", + "type": "SketchOrSurface", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "SketchOrSurface", + "description": "A sketch surface or a sketch.", + "anyOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + }, + { + "$ref": "#/components/schemas/Sketch" + } + ], + "definitions": { + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TagDeclarator", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true, + "definitions": { + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + } + } + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Sketch", + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + }, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "// Create a regular hexagon inscribed in a circle of radius 10\nhex = startSketchOn('XY')\n |> polygon({\n radius: 10,\n numSides: 6,\n center: [0, 0],\n inscribed: true\n }, %)\n\nexample = extrude(5, hex)", + "// Create a square circumscribed around a circle of radius 5\nsquare = startSketchOn('XY')\n |> polygon({\n radius: 5.0,\n numSides: 4,\n center: [10, 10],\n inscribed: false\n }, %)\nexample = extrude(5, square)" + ] + }, { "name": "pow", "summary": "Compute the number to a power.", @@ -123840,6 +127938,12322 @@ "sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle: -60, length: 14 }, %)\n |> angledLineToY({ angle: 30, to: profileStartY(%) }, %)" ] }, + { + "name": "push", + "summary": "Append an element to the end of an array.", + "description": "Returns a new array with the element appended.", + "tags": [], + "args": [ + { + "name": "array", + "type": "[KclValue]", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Array_of_KclValue", + "type": "array", + "items": { + "$ref": "#/components/schemas/KclValue" + }, + "definitions": { + "KclValue": { + "description": "Any KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UserVal" + ] + }, + "value": {}, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagIdentifier" + ] + }, + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solids" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Solid" + } + } + } + }, + { + "description": "Data for an imported geometry.", + "type": "object", + "required": [ + "__meta", + "id", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportedGeometry" + ] + }, + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "expression", + "memory", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Function" + ] + }, + "expression": { + "$ref": "#/components/schemas/FunctionExpression" + }, + "memory": { + "$ref": "#/components/schemas/ProgramMemory" + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "FunctionExpression": { + "type": "object", + "required": [ + "body", + "end", + "params", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Parameter": { + "description": "Parameter of a KCL function.", + "type": "object", + "required": [ + "identifier", + "optional" + ], + "properties": { + "identifier": { + "description": "The parameter's label or name.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "optional": { + "description": "Is the parameter optional?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Identifier": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body", + "end", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BodyItem" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "BodyItem": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "items", + "path", + "raw_path", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportItem" + } + }, + "path": { + "type": "string" + }, + "raw_path": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "expression", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "expression": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "end", + "kind", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "declarations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableDeclarator" + } + }, + "visibility": { + "$ref": "#/components/schemas/ItemVisibility" + }, + "kind": { + "$ref": "#/components/schemas/VariableKind" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "argument": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ImportItem": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "name": { + "description": "Name of the item to import.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "alias": { + "description": "Rename the item using an identifier after \"as\".", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ], + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Expr": { + "description": "An expression can be evaluated to yield a single KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "params", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "elements", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "endElement", + "endInclusive", + "start", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "startElement": { + "$ref": "#/components/schemas/Expr" + }, + "endElement": { + "$ref": "#/components/schemas/Expr" + }, + "endInclusive": { + "description": "Is the `end_element` included in the range?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "properties", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectProperty" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "None" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + } + ] + }, + "LiteralValue": { + "anyOf": [ + { + "type": "integer", + "format": "int64" + }, + { + "type": "number", + "format": "double" + }, + { + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "BinaryOperator": { + "oneOf": [ + { + "description": "Add two numbers.", + "type": "string", + "enum": [ + "+" + ] + }, + { + "description": "Subtract two numbers.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Multiply two numbers.", + "type": "string", + "enum": [ + "*" + ] + }, + { + "description": "Divide two numbers.", + "type": "string", + "enum": [ + "/" + ] + }, + { + "description": "Modulo two numbers.", + "type": "string", + "enum": [ + "%" + ] + }, + { + "description": "Raise a number to a power.", + "type": "string", + "enum": [ + "^" + ] + }, + { + "description": "Are two numbers equal?", + "type": "string", + "enum": [ + "==" + ] + }, + { + "description": "Are two numbers not equal?", + "type": "string", + "enum": [ + "!=" + ] + }, + { + "description": "Is left greater than right", + "type": "string", + "enum": [ + ">" + ] + }, + { + "description": "Is left greater than or equal to right", + "type": "string", + "enum": [ + ">=" + ] + }, + { + "description": "Is left less than right", + "type": "string", + "enum": [ + "<" + ] + }, + { + "description": "Is left less than or equal to right", + "type": "string", + "enum": [ + "<=" + ] + } + ] + }, + "BinaryPart": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "UnaryOperator": { + "oneOf": [ + { + "description": "Negate a number.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Negate a boolean.", + "type": "string", + "enum": [ + "!" + ] + } + ] + }, + "MemberObject": { + "oneOf": [ + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "LiteralIdentifier": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ElseIf": { + "type": "object", + "required": [ + "cond", + "end", + "start", + "then_val" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeMeta": { + "type": "object", + "required": [ + "nonCodeNodes", + "start" + ], + "properties": { + "nonCodeNodes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + } + }, + "start": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeNode": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/NonCodeValue" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeValue": { + "oneOf": [ + { + "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "shebang" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "inlineComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "blockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLineBlockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLine" + ] + } + } + } + ] + }, + "CommentStyle": { + "oneOf": [ + { + "description": "Like // foo", + "type": "string", + "enum": [ + "line" + ] + }, + { + "description": "Like /* foo */", + "type": "string", + "enum": [ + "block" + ] + } + ] + }, + "ObjectProperty": { + "type": "object", + "required": [ + "end", + "key", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "key": { + "$ref": "#/components/schemas/Identifier" + }, + "value": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "end", + "id", + "init", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "id": { + "description": "The identifier of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "init": { + "description": "The value of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Expr" + } + ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "ItemVisibility": { + "type": "string", + "enum": [ + "default", + "export" + ] + }, + "VariableKind": { + "oneOf": [ + { + "description": "Declare a named constant.", + "type": "string", + "enum": [ + "const" + ] + }, + { + "description": "Declare a function.", + "type": "string", + "enum": [ + "fn" + ] + } + ] + }, + "ProgramMemory": { + "type": "object", + "required": [ + "currentEnv", + "environments" + ], + "properties": { + "environments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Environment" + } + }, + "currentEnv": { + "$ref": "#/components/schemas/EnvironmentRef" + }, + "return": { + "allOf": [ + { + "$ref": "#/components/schemas/KclValue" + } + ], + "nullable": true + } + } + }, + "Environment": { + "type": "object", + "required": [ + "bindings" + ], + "properties": { + "bindings": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/KclValue" + } + }, + "parent": { + "allOf": [ + { + "$ref": "#/components/schemas/EnvironmentRef" + } + ], + "nullable": true + } + } + }, + "EnvironmentRef": { + "description": "An index pointing to an environment.", + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "required": true + }, + { + "name": "elem", + "type": "KclValue", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "KclValue", + "description": "Any KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UserVal" + ] + }, + "value": {}, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagIdentifier" + ] + }, + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solids" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Solid" + } + } + } + }, + { + "description": "Data for an imported geometry.", + "type": "object", + "required": [ + "__meta", + "id", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportedGeometry" + ] + }, + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "expression", + "memory", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Function" + ] + }, + "expression": { + "$ref": "#/components/schemas/FunctionExpression" + }, + "memory": { + "$ref": "#/components/schemas/ProgramMemory" + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ], + "definitions": { + "KclValue": { + "description": "Any KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UserVal" + ] + }, + "value": {}, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagIdentifier" + ] + }, + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solids" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Solid" + } + } + } + }, + { + "description": "Data for an imported geometry.", + "type": "object", + "required": [ + "__meta", + "id", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportedGeometry" + ] + }, + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "expression", + "memory", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Function" + ] + }, + "expression": { + "$ref": "#/components/schemas/FunctionExpression" + }, + "memory": { + "$ref": "#/components/schemas/ProgramMemory" + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "FunctionExpression": { + "type": "object", + "required": [ + "body", + "end", + "params", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Parameter": { + "description": "Parameter of a KCL function.", + "type": "object", + "required": [ + "identifier", + "optional" + ], + "properties": { + "identifier": { + "description": "The parameter's label or name.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "optional": { + "description": "Is the parameter optional?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Identifier": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body", + "end", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BodyItem" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "BodyItem": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "items", + "path", + "raw_path", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportItem" + } + }, + "path": { + "type": "string" + }, + "raw_path": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "expression", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "expression": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "end", + "kind", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "declarations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableDeclarator" + } + }, + "visibility": { + "$ref": "#/components/schemas/ItemVisibility" + }, + "kind": { + "$ref": "#/components/schemas/VariableKind" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "argument": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ImportItem": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "name": { + "description": "Name of the item to import.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "alias": { + "description": "Rename the item using an identifier after \"as\".", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ], + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Expr": { + "description": "An expression can be evaluated to yield a single KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "params", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "elements", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "endElement", + "endInclusive", + "start", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "startElement": { + "$ref": "#/components/schemas/Expr" + }, + "endElement": { + "$ref": "#/components/schemas/Expr" + }, + "endInclusive": { + "description": "Is the `end_element` included in the range?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "properties", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectProperty" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "None" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + } + ] + }, + "LiteralValue": { + "anyOf": [ + { + "type": "integer", + "format": "int64" + }, + { + "type": "number", + "format": "double" + }, + { + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "BinaryOperator": { + "oneOf": [ + { + "description": "Add two numbers.", + "type": "string", + "enum": [ + "+" + ] + }, + { + "description": "Subtract two numbers.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Multiply two numbers.", + "type": "string", + "enum": [ + "*" + ] + }, + { + "description": "Divide two numbers.", + "type": "string", + "enum": [ + "/" + ] + }, + { + "description": "Modulo two numbers.", + "type": "string", + "enum": [ + "%" + ] + }, + { + "description": "Raise a number to a power.", + "type": "string", + "enum": [ + "^" + ] + }, + { + "description": "Are two numbers equal?", + "type": "string", + "enum": [ + "==" + ] + }, + { + "description": "Are two numbers not equal?", + "type": "string", + "enum": [ + "!=" + ] + }, + { + "description": "Is left greater than right", + "type": "string", + "enum": [ + ">" + ] + }, + { + "description": "Is left greater than or equal to right", + "type": "string", + "enum": [ + ">=" + ] + }, + { + "description": "Is left less than right", + "type": "string", + "enum": [ + "<" + ] + }, + { + "description": "Is left less than or equal to right", + "type": "string", + "enum": [ + "<=" + ] + } + ] + }, + "BinaryPart": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "UnaryOperator": { + "oneOf": [ + { + "description": "Negate a number.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Negate a boolean.", + "type": "string", + "enum": [ + "!" + ] + } + ] + }, + "MemberObject": { + "oneOf": [ + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "LiteralIdentifier": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ElseIf": { + "type": "object", + "required": [ + "cond", + "end", + "start", + "then_val" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeMeta": { + "type": "object", + "required": [ + "nonCodeNodes", + "start" + ], + "properties": { + "nonCodeNodes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + } + }, + "start": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeNode": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/NonCodeValue" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeValue": { + "oneOf": [ + { + "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "shebang" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "inlineComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "blockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLineBlockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLine" + ] + } + } + } + ] + }, + "CommentStyle": { + "oneOf": [ + { + "description": "Like // foo", + "type": "string", + "enum": [ + "line" + ] + }, + { + "description": "Like /* foo */", + "type": "string", + "enum": [ + "block" + ] + } + ] + }, + "ObjectProperty": { + "type": "object", + "required": [ + "end", + "key", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "key": { + "$ref": "#/components/schemas/Identifier" + }, + "value": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "end", + "id", + "init", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "id": { + "description": "The identifier of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "init": { + "description": "The value of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Expr" + } + ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "ItemVisibility": { + "type": "string", + "enum": [ + "default", + "export" + ] + }, + "VariableKind": { + "oneOf": [ + { + "description": "Declare a named constant.", + "type": "string", + "enum": [ + "const" + ] + }, + { + "description": "Declare a function.", + "type": "string", + "enum": [ + "fn" + ] + } + ] + }, + "ProgramMemory": { + "type": "object", + "required": [ + "currentEnv", + "environments" + ], + "properties": { + "environments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Environment" + } + }, + "currentEnv": { + "$ref": "#/components/schemas/EnvironmentRef" + }, + "return": { + "allOf": [ + { + "$ref": "#/components/schemas/KclValue" + } + ], + "nullable": true + } + } + }, + "Environment": { + "type": "object", + "required": [ + "bindings" + ], + "properties": { + "bindings": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/KclValue" + } + }, + "parent": { + "allOf": [ + { + "$ref": "#/components/schemas/EnvironmentRef" + } + ], + "nullable": true + } + } + }, + "EnvironmentRef": { + "description": "An index pointing to an environment.", + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "KclValue", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "KclValue", + "description": "Any KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UserVal" + ] + }, + "value": {}, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagIdentifier" + ] + }, + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solids" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Solid" + } + } + } + }, + { + "description": "Data for an imported geometry.", + "type": "object", + "required": [ + "__meta", + "id", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportedGeometry" + ] + }, + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "expression", + "memory", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Function" + ] + }, + "expression": { + "$ref": "#/components/schemas/FunctionExpression" + }, + "memory": { + "$ref": "#/components/schemas/ProgramMemory" + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ], + "definitions": { + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "oneOf": [ + { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "$ref": "#/components/schemas/Path" + } + }, + "additionalProperties": false + }, + { + "description": "The surface information for the tag.", + "type": "object", + "required": [ + "surface" + ], + "properties": { + "surface": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "additionalProperties": false + } + ], + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "Solid": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "Sketch": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "paths", + "start" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "FunctionExpression": { + "type": "object", + "required": [ + "body", + "end", + "params", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Parameter": { + "description": "Parameter of a KCL function.", + "type": "object", + "required": [ + "identifier", + "optional" + ], + "properties": { + "identifier": { + "description": "The parameter's label or name.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "optional": { + "description": "Is the parameter optional?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Identifier": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body", + "end", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BodyItem" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "BodyItem": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "items", + "path", + "raw_path", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportItem" + } + }, + "path": { + "type": "string" + }, + "raw_path": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "expression", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "expression": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "end", + "kind", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "declarations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableDeclarator" + } + }, + "visibility": { + "$ref": "#/components/schemas/ItemVisibility" + }, + "kind": { + "$ref": "#/components/schemas/VariableKind" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "argument": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ImportItem": { + "type": "object", + "required": [ + "end", + "name", + "start" + ], + "properties": { + "name": { + "description": "Name of the item to import.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "alias": { + "description": "Rename the item using an identifier after \"as\".", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ], + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "Expr": { + "description": "An expression can be evaluated to yield a single KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "params", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "params": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } + }, + "body": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "body", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "body": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "elements", + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "endElement", + "endInclusive", + "start", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "startElement": { + "$ref": "#/components/schemas/Expr" + }, + "endElement": { + "$ref": "#/components/schemas/Expr" + }, + "endInclusive": { + "description": "Is the `end_element` included in the range?", + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "properties", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectProperty" + } + }, + "nonCodeMeta": { + "$ref": "#/components/schemas/NonCodeMeta" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", + "type": "object", + "required": [ + "end", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "None" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + } + ] + }, + "LiteralValue": { + "anyOf": [ + { + "type": "integer", + "format": "int64" + }, + { + "type": "number", + "format": "double" + }, + { + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "BinaryOperator": { + "oneOf": [ + { + "description": "Add two numbers.", + "type": "string", + "enum": [ + "+" + ] + }, + { + "description": "Subtract two numbers.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Multiply two numbers.", + "type": "string", + "enum": [ + "*" + ] + }, + { + "description": "Divide two numbers.", + "type": "string", + "enum": [ + "/" + ] + }, + { + "description": "Modulo two numbers.", + "type": "string", + "enum": [ + "%" + ] + }, + { + "description": "Raise a number to a power.", + "type": "string", + "enum": [ + "^" + ] + }, + { + "description": "Are two numbers equal?", + "type": "string", + "enum": [ + "==" + ] + }, + { + "description": "Are two numbers not equal?", + "type": "string", + "enum": [ + "!=" + ] + }, + { + "description": "Is left greater than right", + "type": "string", + "enum": [ + ">" + ] + }, + { + "description": "Is left greater than or equal to right", + "type": "string", + "enum": [ + ">=" + ] + }, + { + "description": "Is left less than right", + "type": "string", + "enum": [ + "<" + ] + }, + { + "description": "Is left less than or equal to right", + "type": "string", + "enum": [ + "<=" + ] + } + ] + }, + "BinaryPart": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "left", + "operator", + "right", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/BinaryOperator" + }, + "left": { + "$ref": "#/components/schemas/BinaryPart" + }, + "right": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "end", + "optional", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "callee": { + "$ref": "#/components/schemas/Identifier" + }, + "arguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Expr" + } + }, + "optional": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "argument", + "end", + "operator", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "operator": { + "$ref": "#/components/schemas/UnaryOperator" + }, + "argument": { + "$ref": "#/components/schemas/BinaryPart" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "end", + "final_else", + "start", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "else_ifs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ElseIf" + } + }, + "final_else": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "UnaryOperator": { + "oneOf": [ + { + "description": "Negate a number.", + "type": "string", + "enum": [ + "-" + ] + }, + { + "description": "Negate a boolean.", + "type": "string", + "enum": [ + "!" + ] + } + ] + }, + "MemberObject": { + "oneOf": [ + { + "type": "object", + "required": [ + "computed", + "end", + "object", + "property", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "object": { + "$ref": "#/components/schemas/MemberObject" + }, + "property": { + "$ref": "#/components/schemas/LiteralIdentifier" + }, + "computed": { + "type": "boolean" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "LiteralIdentifier": { + "oneOf": [ + { + "type": "object", + "required": [ + "end", + "name", + "start", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "type": "object", + "required": [ + "end", + "raw", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/LiteralValue" + }, + "raw": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + } + ] + }, + "ElseIf": { + "type": "object", + "required": [ + "cond", + "end", + "start", + "then_val" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "cond": { + "$ref": "#/components/schemas/Expr" + }, + "then_val": { + "$ref": "#/components/schemas/Program" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeMeta": { + "type": "object", + "required": [ + "nonCodeNodes", + "start" + ], + "properties": { + "nonCodeNodes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + } + }, + "start": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NonCodeNode" + } + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeNode": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "$ref": "#/components/schemas/NonCodeValue" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "NonCodeValue": { + "oneOf": [ + { + "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "shebang" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "inlineComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "blockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", + "type": "object", + "required": [ + "style", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLineBlockComment" + ] + }, + "value": { + "type": "string" + }, + "style": { + "$ref": "#/components/schemas/CommentStyle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "newLine" + ] + } + } + } + ] + }, + "CommentStyle": { + "oneOf": [ + { + "description": "Like // foo", + "type": "string", + "enum": [ + "line" + ] + }, + { + "description": "Like /* foo */", + "type": "string", + "enum": [ + "block" + ] + } + ] + }, + "ObjectProperty": { + "type": "object", + "required": [ + "end", + "key", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "key": { + "$ref": "#/components/schemas/Identifier" + }, + "value": { + "$ref": "#/components/schemas/Expr" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "end", + "id", + "init", + "start" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "id": { + "description": "The identifier of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Identifier" + } + ] + }, + "init": { + "description": "The value of the variable.", + "allOf": [ + { + "$ref": "#/components/schemas/Expr" + } + ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + "ItemVisibility": { + "type": "string", + "enum": [ + "default", + "export" + ] + }, + "VariableKind": { + "oneOf": [ + { + "description": "Declare a named constant.", + "type": "string", + "enum": [ + "const" + ] + }, + { + "description": "Declare a function.", + "type": "string", + "enum": [ + "fn" + ] + } + ] + }, + "ProgramMemory": { + "type": "object", + "required": [ + "currentEnv", + "environments" + ], + "properties": { + "environments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Environment" + } + }, + "currentEnv": { + "$ref": "#/components/schemas/EnvironmentRef" + }, + "return": { + "allOf": [ + { + "$ref": "#/components/schemas/KclValue" + } + ], + "nullable": true + } + } + }, + "Environment": { + "type": "object", + "required": [ + "bindings" + ], + "properties": { + "bindings": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/KclValue" + } + }, + "parent": { + "allOf": [ + { + "$ref": "#/components/schemas/EnvironmentRef" + } + ], + "nullable": true + } + } + }, + "KclValue": { + "description": "Any KCL value.", + "oneOf": [ + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UserVal" + ] + }, + "value": {}, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagIdentifier" + ] + }, + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "end", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + } + }, + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Solids" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Solid" + } + } + } + }, + { + "description": "Data for an imported geometry.", + "type": "object", + "required": [ + "__meta", + "id", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ImportedGeometry" + ] + }, + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + }, + { + "type": "object", + "required": [ + "__meta", + "expression", + "memory", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Function" + ] + }, + "expression": { + "$ref": "#/components/schemas/FunctionExpression" + }, + "memory": { + "$ref": "#/components/schemas/ProgramMemory" + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + } + } + ] + }, + "EnvironmentRef": { + "description": "An index pointing to an environment.", + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "arr = [1, 2, 3]\nnew_arr = push(arr, 4)\nassertEqual(new_arr[3], 4, 0.00001, \"4 was added to the end of the array\")" + ] + }, { "name": "reduce", "summary": "Take a starting value. Then, for each element of an array, calculate the next value,", diff --git a/docs/kcl/types/PolygonData.md b/docs/kcl/types/PolygonData.md new file mode 100644 index 000000000..1f7a05429 --- /dev/null +++ b/docs/kcl/types/PolygonData.md @@ -0,0 +1,24 @@ +--- +title: "PolygonData" +excerpt: "Data for drawing a polygon" +layout: manual +--- + +Data for drawing a polygon + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `radius` |`number`| The radius of the polygon | No | +| `numSides` |`integer`| The number of sides in the polygon | No | +| `center` |`[number, number]`| The center point of the polygon | No | +| `inscribed` |`boolean`| Whether the polygon is inscribed (true) or circumscribed (false) about a circle with the specified radius | No | + + diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-1-Google-Chrome-win32.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-1-Google-Chrome-win32.png index d072cf76e575ed6b116181a35957e771ba896010..0c5da89c126d01fb4969879feb514d2cebf7f215 100644 GIT binary patch literal 56092 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 My;s>+(qLJkoacfu^$cxEOh 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 RQ4{8*4N3Q&5!{|lW2xbXl0 literal 56088 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

Lq$dH$zA7u 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�m=an=aJ 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 Pj&V;~Nh$}a=kY%PSLgIg diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-2-Google-Chrome-win32.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-2-Google-Chrome-win32.png index 0a291d1b7ec0c77a2bf316fdb4edf5de1b4a36f4..ab82fb0aa46073c6743667a9fe1eeccb77f3c303 100644 GIT binary patch literal 48215 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 z zfHtAJu<>~2FrX28{#wVGE5Ed2wH~L{&TB~x+%G~Gn}*Fhu0M26=W(h=pN4&GoU?s$ z^U{_^7&fd9=_!HPldwg85Sp~B7VlziXJ$BChn*hWD|G`12nLFZvoYUh6g~dgw5aLq zOCG0IISUBq%icB{G+&j)7)*M!s*uf==$M#bv)L*uz&#j}ey4q}h`|N$kf}w*)GO9T z@&@X;H1<*=TVL3}l~xSI{bzjhKtDPoE*wZCYaF4zF@NtNUORGDN<*8q zKDn+qRIqXzHD98- z$L~yg-<1YP*Q?w!^|o@H^joa+Qm)aO$jWGuhpzsZ@7Y zuW^co$JLzdmBA#^n=Oh`PU;yul|NL?ATFkHGcs^_cWw9hi*v;{H)3dV+w5I?Y)aXr z*y()XSyZoIsM?E*u&cs2v1xQG%Feg?r}a7$CaRXt2!XgTePq?1V;FsP`VvRFrKjpz zIJDHSddx14JGDHBfB@l4P<6YldyGXTOEi}vfGuvHb#lF|08hZ-KeNSqzV`x1dvruR zPoFf@=rrlh=U8R7_eqd1Af=Why)YoB5humsc}GgRV6tv?mRvii?NVB5#;9T8|9yV@ zADAr?Ow!K11Ou?C1n__qnEwaodLn z%_r$MJFx<+PheMnU8qW1K*0(WIZKV6d|rV2d+pRbcE^uDbqN~vj9RXH19)E3p(J=~1i6*nA*l*EOt=qo}Xk^i}HH}0py5+9V56bS$MEcd9m zAc&}$Br>ikmUBWQR&=o|)fX}LUTbGQHjW_oC3iFJz6+~>j@7g|=s5J1kCuzeZEGYO zK;*d>cuZbDbqo@vIC^PlY_6I|nj0OPr=AcJMXiyL=$cwSaiY3n^H4qJFyXFc#5KJw zhJg8Z;yEZRd24{q>?_RYo9mnr@p+`i{Len}Go#fOkE^$8ylNQePOzZwL@S#BA00F# z&eTH}8y^={+=uomD;fI@Xj|mg>kn^eg;UVYIxY4-I^ zi0XzKhFdNVPaLDbMGdwAM)xE%B%~cE>3RoJZnpCVKVzZ34~s<_`5!Hq&93g*8rxLg3_r1qBf!q0qC!tzk==8vg2sot zV8^?^zJZ=U0v;_(+n#JnR%lv*mRBV^#ODc+O@1)rH%Mp5jS{vRy;XLT4Z;1;mi(C*Y!xo(B0x<#}C0 z%W(TnpU(!nV(AY5E7bEENzS|b{xF&0u7RPE;7)z}m@dH6xSf39w_8A{-l3|91-&fg zC}`THy@mdm&4P$he)I(nBk;Si-@Y93D$ym`e&Ui~Q5M#rSIvVblW_ILi2c2&Zw!%C z!j%w@(XyM-k*>o4&e`XB_2RG2&dZQT%bV88T!h)nJF8^2;@(#jS<=U8;tSeRz5xl{ z8mY_>RS78Yc_-DqE9O&PNqJK%B#qsArn7$7zpe z$rNITAL8q|Emr*Wpy2bVUMy`k${Vga^^D7{7b9-Q;Vj-cucEs9ws`Bkz;~E5BZN32 zCnpDxy3tX~gg#q~tqY9sa1MX1?l37r<-s&9=tL8_|FwPZf^rnM{b6tCzcex`ITaP+ zbh_Lx5JrN#UszfonZ#l69v&zc`ZAzwR8up+^AUfCV7Q6!F;aH4ptGa1OEvE~ZoZr3 z1Acj20i6clxKa()(|uV%;kqxHZ}Ui{F*an z(|)H$sCJPg7dHFh>Eo(P*ILoOKc9$=D`G5sJK;3nQG44LMoX{LymMa4NFpK%ssKQQ zJjI<0VoT6f{WevE4%sK()iHrem^ z|CJVX^amXYLAZQl;@b`Pqz>btWJe=6zSOn2%Y(nn${@z@50}n$locYMH;K{kWWk&o z;kV_9e3(W#$Y3}|@?UQPXvSU)ToUiB7rPj6t3V{-|1eZH7vApDd%JW}cY0FiXux_s z`2P8GUYmTzsU>ue$jW=PNrmO*|6N8@*g&Bh&R^1(H}d&MNF7#j$xe93qP^;msV|Oi zOxbXyn=W294xYt79+i+kZoE(lF)=Wl((j)GcOuPo8NuK?bz3?y{80FNz`gFVRMt3uU!V7P&Afsp$L^z=}`{%3R0)v!^xb3$*9!I?O9Qo&gehizQj zAufYGuIH~->yV;m;RL@9ijn9O_m^USu#-yLCtNjl1$m(p3Y`fw7+;L~W4n^8MIUv- zhrAK0HfLL)OF5;(7D+DgulH;g34R7_w7%267X|%u zN46aKTr9-|F{3c3wVky~WCI`;Uq0((}(te{5>U)giK^-NQVlbZNJ9EQ1My7d9JbFVxK6uBG)t2*fs6b{t}71W=4QKlwh! zJnmT&EPP#_1uN6~7H)rh?oZN|mzR;9ks*c#tM{*HOWAZ$dA<%BTh#PRHDK2Y*c4e8 zK1NuFObb86geUXeiYj)?D}@SGXIEvQDccjzGcz+y29qU4&s9X8bEnAt8a->V8Zle`WZFI06Kih%S&v@C=f&`BOI_C8jQyIG2vFDwFz`!OP~Rx8sZsC# z@*FT-{!ee;8Bg^e{(ahrND9d~5<*6aGIMOQC9;!|z4s_2nb~EAjLc-kF%#Jwd+(J! zv-w{~{r<1}!TsQVbblZ8Iyfg^pYQd#KG%3(@Aqh3AO*0qzo94|MZZ6bH%p1Dd6ksZ zVz4Ot>({R)7B~o=1d)dNGg(`16WYbK@?+WM5p+`D$kk0x$n8I|4ODt~u&M9U-My>W zcOj|PkaDAj-W!t-@G8{ZcTzNuav9d}W@N7Z90UuJUga9mfZ)p9EL-8kOS>uLsu9&{ zE$7b`qda@d&h7#73eMp~cU5KO&)vo#7EXJ^!Kn*+_F@@REa$-{cw%d-BqFl;{ZGy~ zw&({|NqtC1Kc5 zGF7!qT;$Eh*!91`h+Trk?;Dkng1@@-?btN<`1sE{9@>WOTl$b5&_Ye2S#qAz)e5iYo-*3Y8LU4uDgXP}nu0Wgl57tq)8K?NNGB8X> z2WVxDsTcIT(OOPQE8k`aSNx)}-P~qYv{oLJ@K9+tp>og8Q4h3E)|W|-R)+Nqwt0>e zwnl>EhlsRfugV-dtZja2n9=%m+&^HwlIZ333-`%Qyzo7a)`8017O{PP=tRQB&Ud>Y zbj)BbIW2n@RYT&5l?_1{|d=c?aJ+D>|uj* z<<4c4FWGSe0nxd28D-2KE8mVO#*7p}D}LKfH|y@+l+rO1%`>sXs(f*Nho8+c zO^Gzva|!|nZz5VeU5zR0lBAK4)XS1ED&5ujhkjSvP1(m28;WU@QQVMC;uRxxU6k2QprX9j3fpc&?;G?>J5A!&K0PWskP7YLW9B#y>MP z$?#BzPPIH#H0)wALUfo}<2e`O(UC&|47a^$(JTcFNeu4vXw$yT;boAym&EumuC?CA zUE}F&*ynfjS5`I}JdP}nhDwzf4$m_a=;4Us21&aEE4Q;};O|q2B$FMp$JCD53eU7e z7592&xD#9XemX~3W?!`9A5r~v=4|R+xx}l+PiuO;hL+hpwm6YfQEhy@^-IPb=EUWf z%H$BJwm%@Jd_f4#*t{)}`z z-7#SD)akIZ4B3kg+7;t(RdgaCRmEN?9Hc;ToI=`9G^y8{Br=(dw&AW(r;|s6K)jc5 zmBkD;7~Pu~4zB*x{!CPk;+E6?#YaNe$P|HiSKDbNtKS&tz;@oNu>LS!^P6MZZemb$- zSD8k?=Ydm;N<7q%@#mS%TMsfK>U0Gp((g_?^PV9fO!{lzuSBM%Ga`Iq9k*$V!hIIX zG@gu+{k?0V!aSi@CU3^l6Q4*13=ppb{q#fWB`S+0BcgD|743!H8VE!V@s|+~+J<|!6Q>R))EkZL8ov&`e~&R}k0z-|F|CsL zZ+(0jX-k(b6#llE7!H~1Ol`B{ru^jlK!*n!!doh2W7t|>C;k1E&o!nJ|kzVI1Vn*wq(sg%271RNQ3GJ7pKKIPTgp4h*? zDp)mFm+XMAcFcwN@r%_=@w&`m`SGoHg^B&lujbb6G$(jl=fy`QF&MUP)kw{vgJp-2 zVWa%O;{LkIjpaK1rWFG-$g(WNllzxr(|MnUN@)*P_{i`u9ltRxi=?8@%%&O0*3dpqqy4nY&^owCc7qE*|niMcof>i!?EV7KGV3FiVDI1LqLFmob`cnth)+`wMyoacjM!UhEf9!nn-BeX{zE0~jYR zvKYLqCF}RxR?R;m)hft8M$|#iQL>anEScj6i7qfd1qMDv%POpmE`;m;I5-8sNbUc_ zlb(Ol7R-5jY?k7x$YVM;oK!nv+ZXJI0Z-8g1P7hdPElvZXTGg^+Sh2BcgWmvNu2&- zhf2B4K+2e<-MXIaL9U9es8weXW;>t7>Cm~Q(oI1T+qY4l85)fX#o})%J2^SQsG2vC zWT+2Hh-^y+c?vnVgIWa@M3uk&eUkXn zoH9<)gcmiV?!PSlIz#)k=IKbQjn~kHl$WtwTVe@g)*1u!rSr*82(aGhmFmJnHO5YSQ&DrAa=+l0|Cr;xMBp|A{C{5?x zPE7gY^8ucSUihMRe-ddwdbnOYVbwtNJQarEzPe6tzzztjUO`E1D+Tu4rfnmMo`>txPrEO`k%#m`-JkjPWCRR z3QGwWHGa_h`Z&s)mCXUu=`=E%#X#2;XT$i0OZa88!gXuLH$6>HHnOKL<-o7YJ90md zJv)91G3t4J8xud65ai|9!978Vh5~4Uq9ucB) zo$<|U6>|7eWzH29Ri!zXF?h>XGx7G9UKRele?NWt4EK|3i6PSNA)U>4EXe?fnJNB zN|sJc{uGTC`$>)r;lZbqS48K?y5B|V)SdSV#@E#-kSjX+cHs&+dNg5G%z15}j|K27 zJ8Vj{i}wN6H(+c8FRl^3lcU9Dpy|e z-ufOrG5n?7C_qK{S&04AR;j{80=-CeKABmEoYeI83XIU-=!Kn6G8E*clvPz7VPFB& zj((zfh2PNIsWf_0+<+b)MK=};uvq-8DSkXdz}G>Wc49uu&aNjkpLePfNl4ITWd&URn3nP0^)^y8%)5OrTH50>L_b5jnt}>J zvHW-UdvrYi1qArap>$WTU5kv0`h~tJEZw+R9Q`LJ2;#Vg>EZ2{F2|atTVl!hw_LW}b--@~#ab7QcHVk9n+EsUoht^?o zxDvFs0J1v(;wdi&Q-a|LlqA)-BAv~hO^D7%2{@D2cCpq5*< z)uRsbE?Q30R~1NHeDq(u;M*DVLfbFxfszhHNJgCaHTY87m7>rgifD`%hg!D0qN4S5 zW5oM)#=uEYxwpqQB*M&F*(sG{gR)Fp$>JmeiJUV<;R08u{8%ux=}L+Q6(a@5$ZEAw z=Yw96`R!RUI?P~VF$vFN+L?bLFM>?KmM5-eeAR^ss1E>rqwTiU4HXbvB&aZg$YoRH zofx2i0F_*5rgyftzYhz$iF3M!9V*;V3#H(A{<9&B0T&5qL5C5iw6@v(gN-)e3c*Ff zOfUf7K}xG=a0#-O>@QzJ-d?NRE?=3RoprFcj~Db1;N{&1oMeokM+E>Ff7`M&RRC%d z#x5_CvT~B)!%!`+{i2bnX)Kr7z~=8xm=$z|ne*=&InX+^TZvA`7*WA+V8~7J$cPBD z(F#ox(U_Jxc91tPG>Qhm{WyrlxCx939<2p~=2&TEuSi7r%FC5X#!!(2w3=nl#a8Fv zefcxD+1Tevs=L$g269gg33C{W+u@G7iiFa|ZSj&M8>rsP=CoBdr}6I4zoU}YylNji z&3aJW*7+sh{cSr_G$viiu#{q(*SJVhfDq}eKu+**n@MJJNajMRvAwTn{)&*F!mX=( zN$tUstj?*)6Tx_9*OA^5q3(-*t@#vg%hyo8Obw}ptczJgkLdEAcDg5gY*$DmSCgoZ zL{zeW$GTqxLT88ldf<&&kJQ)}gNUvhQI;E zf?rE$D>lL;0rx?qK331VHO_>cj8(IgQ}>6r$MLoY$V`LGEGrNI93SoDA_0vGsCd9X zz}`_|BnjqQuLpVYDJt1`J~bk5kdwS69qGD_9*x+4nWu__6x^vM1k#ueP}T)SGuR4R z+);mi1~G!~#G9WE6G73Te4VFAngWj3tx1PkjydHHvwKS46D4s@-;#5VR8ilFOcq(c zHM&|rujg(!9TPy`a(9xj0F?6@CljS6ek_CIoM z@Xj=}HC|9Muu#4=jh?UUdeL0m>=>9tR*~{})7pF=8DgOly&j&*mw^5#!>XvBs(m;< zbL4BFD!KWAK`>3S90UIgN{~mtC#IldY`g#avqo~SJFEBV{vLrva+c! z2bSy|sK+0)&TcepT}4j8K8I#LJ@ThG2|^zWCL1He!--HmIhrvsG0cWJSy=}y7Vb9% zbKnUW8xxCSrmcrG6y`P*&t z@$#b6)93uzD&7y40-J-gK(3auEN@ zWDw#aL(_y4Y;rT*xsg8=G&@v|Xp!D3^CUi|%R{`bgSX{=<>J)Vd%Z3@)EUe(yd^mi zBdugu`Gs@l>rHw;t(>KujnKJi^`Mky=gAnaOZ(%;?_H@3hgqK}Rxp0oAkZeS%dzZn zXMM0Ro%7B!KhprsYVvNQQPxLB<)i7H6uG<^+BfFPog*F_PCW4LwB~_NMUU-zmX`OM zdFF%3@H{AYNKc|Th(=JBJaI{ke>6mWQeQ@=^78PMo;lEB^hRQ*(1~Vy}_v@JI$!$9;ZKdO8ho#W20uN_l8=u3@KZT z$jnmd?TWV0F4H}X&u&vssRuXR|2${+ed#SOvY@f6*kw7@t8QUgX)Y_{vn!^_sl-2e z^P%bb7WqZ{#!~^tXC16;`sAqpg)plyPpFlsP38(7{@%*oPWtk!e48oN-|E8FpUiZt1-3H=m;n zg}T9GEfPFY2ldxZ19D%)NN{rKD-CZYHdP!W9hxx9Hw!vwb{+R$CzM{_J|{8wWdBXR zc@&C!z;f8_3-?ipZre64lEiIGO{u`sfOB0hXa2A!`M7`MncYAOo|!Xy9BC=*+EQA< z$Kt#hNzMC%qSc}}R`-|92DbGiH_un}gbTc}j=Oln>mjz5hd|VTp5%G2V{&~EQU!vb zMM{Su4wD`hR6Wc&uK?H3pFe+~m$^-_td_WCcXZ&Ct)i}>@fhbLk6lK$F?_%je5HxW zf?4q}s64A_Xz+p5d;R!utG2jfj7v!~&w0#DU^|CG!;%kHO+_huiD{7_-@Mbz@a zu~}Wg^xo-rl|0qGceTHE%C3(VbqhL!-x{(gU?2KN#&?7NX%=Mb6JT@))?owo>pQpcy(SY3H z$gDZ7_v)RL+xa7(`(OCU%j~P{^HC-peofAx(>qGzzv;G2zdW%|UhKxS>xkmGBkn%4 zREpwYVsjACt8R_#(B3rlw*Zb1M;_*LhLp&k3+d*(YlGqa7LuWlm~DeHw#$QMw}%jB{024cmt#q>2nu}CDmD)V6}QdFf}S1T5It{5;(i#gdUC%81aGKt(&C` zPid~GtE;1fvBIAaqPa{*JXK}_`z)V0L&0mG^=lH>wU;@D)BWd`9QR@gcNc>MGbc&S z-p-$+(~M%ZjDZ4jF?4%4NXc`-L?|AnBY%a!IRVG}p#}#x4*pCd6B+$f0*TJO<-3f@ zwQ_J(^cXV?GFZgI1&A1sB+_oQ`}?_0t0CiC_jXK?r0>UV%|68{+|k~@HYl7utXgoX zCZK70-H{KXJdlV#_2c^W>$DdBv%AX#XQua7^L|l5?8xi9nJ$$A%yf#tlQKFlOCsuY zKe~cdtBlN;+Ox#lB6qXoI=-}E$15FY<0M&oxq)Qt%mr5I` z!xV`UBCEwOP1_4!9d`f2NB($fteC>TXJ4#t+Ym1#e{cy(Kj17bUqbja&TdfhIm&0N zXgdts85cUkzECeR4T&1U4@hE6>vWoFCJ#;>q+p6xbhEw6BP(J>EHb0^msT;o2Ewt3)i_PnFB(7Ad z`QM5T>8c8Ae2y_^`I(u}+qiJ$^gDXurCAP*7)HO0FJG+C!$AN4W7u+dK&}!tN2t3A zZcPy6tIs{V(`H!ve@|y*5FXLj^Kx*!eXnx~iFnkddr4Qhq0_>1_dC9THDfUaQ<(tf z^+WF(LQ#dKr6t)k8%RN@f`5%${zQulpB{DX>wOX?u;L*ihfZ61QHH)ElT4pWu5j?S z=o`bloH<@a{g0EjgYfk`7@=GSa?>e!b8clvH^k{rj2X$vlbN{{-}+5Kixi3g$zuO@#Zq|M(&sT_KZjmaGM7PgM;bUvDWy{i z^S62m!~HMp%M~YyEBj~BZ(-wwedg(_dm_?f<*d47 zmgr&gVhV?KVYUyfe`&Eq`0Ef`sr2r69f1n0ROqL1qFT}?~IT_`SvbcJzKqGZ*ybTx&$S2Vps6d zG4&)>*p4D9Q%XBH7k_;IOqbuErTE2}(oii@UoB47kSm6tO3uc{MqFHc_2s{!!B4+x z9jFAeH2K86o^?VGw_0f^@1Hy4`}{tcE=n>qKuixZno-5CY!OlsAtAbOkl4Ez8Zw9~ zoYC_97a!yi>)vM!K2~LkoZG_5!B&@{%m2anD@D^cApC&|st-ESJCVvg^o{Z}~h8#G5R0W~5itA?-i z0$^x&pbVt#x>gG(dOE{#gPi*hc6^!6UTu#<9|DS`2zxlwz26g1aAj$fSOe`F5MM1j z*@MV0#yCA~@nG@e#k90wS#Ej?9AsR!hOkUcbsJ%v;N>{#Sd5V}xC^YF6*dDT3W5UrJ zhoMTCytCqo17L-9$fR`%;C>9)$$*=2dwG~b_Xt7}7R}O4alt(-W1Of$fWo=HmIpt+ zPhh4wWeztyq#fM8q6-rvh(co{OZm%LKPJikX#;lo(I9uPPtSv=5NywK~`$ZGYs0v<$Aw@fW@*dlMvMDgPmoCh#&!D z@SDKWd(E{YQS~5qujM#?&M%3}e26T99xV3!tN{iV?AGz0VM>pq%^&al`GdK8IJtT_ zBaf0zACJsYA0Av7938M)Q+`56aIVj;eR6GausFB38t|kjiC6DDPxV|E{aXSf@{r?O z6Ooo~im|95xA(!an3{57nKixN!$2%BbFK^&nv9e=c@u>-*h1b8-vmH+mUiXQK0Jtt zTL0-xtZECG3;YCH=c;L){Y!tA)y1$D79pjd->=LBHJOOmhsrQL6$247u>V%>O!$Ll zJgPn|!94?GR2M`!Sp4;!hJnEh6ay|%@fj5lCdWKreCu(*iMK3XQ-T8LCP2V&eksPll` z?)&SKrH&S%R{nM`MLGdrX390_MJUiW+DKj9S7I{@(#Zf*gFp*L^XDudWMpIjHdR#g z4X6Oh$&D78Je8HbgnR+fJ77!ab139uA1G*P9Rb@Fi|SXMqk~<38{iPEukj%SCP_e~ z3P4yT?@|cxG6?@+3&au8l6pfS1f(UmlSKU^Sv9Zk){g)x4^15v9?titPY(i{;t}Ue z*L%h!;+JNJ+?r;djyPDiDwOo-3u-zqF6bp#45(>q=01O-ck!DcYc$7U(S(DRW3b7r zz)p>L@#uD33!4QlI$HskecOrk?ZVvC zUqNnmt|QwsN2_04v^^%|ww`Q-D0>M>NlJbc^f&_kHmuk@l-+n1`TlvC^KGHGq=9GH zYHgxh(&)U`I8bTttkw|1t>2WZ05Uc#OW3t*jlqEE+OJd1?t#fskg5mzO)V;9K-n+? zwhOq8kob75CtJBM?I3~#IvoY_iiLz!n2j`Ut_FOBDWVg^8{3pkoNSsQh z8_cP}DFh6tKi&HKMir$lK%3R=xeQTDg82NyRy65Ru%*8?-ONZ=xZPlYvEB*v)eo1 zVSsfKSjo4#l;qBBc@Yi$RAHqAFGZe3M@wF+n_ctum>^(3W)*uKPxM%ieqB0B? zlA>c`fF1lQO)6BD7#PxWa#|McC(4$v20*0N&2u8BZeUFGG?R=(MB zf!bAGQPj zjy4Z&0P7kAMAgUF*7&s5)p^JIKCzge(`~zTp_KZU3FYZ54@d*A4r^~*MnOboXt>F3 z1?*TwCt-J)%PC~C)3X=CR8bdW*%wWm;wv53k{VuIe`x(#Dg}?|_nITnFb)h3ddX4E zUPd`>Od!AU!)_Fja2I^~MH#5+(mKKF>(Jt`IO94osse9b{uf3EiDNo zu#LC@M _38jCX$wx!F|8PpL{;$2!|Hl^U|Gus3_(Bz`&nc9@{A8*~QdCwX2c_fr EKadHEk^lez literal 48316 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-win32.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-win32.png index abd80123b9d4ecc9fe0f149dc05f81db24e8ce9c..ba30cd7e1a88d7d0c67306fb4801bab598fcfddc 100644 GIT binary patch literal 65787 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

IcE+uO4eST~7PXTb^DNd6-jE_b)pWHkX=}p2k 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 r^Zz&7?~a1tqn8NzD>~rV { @@ -336,6 +344,17 @@ const ToolbarItemTooltip = memo(function ToolbarItemContents({ )}

{itemConfig.description}

+ {/* Add disabled reason if item is disabled */} + {itemConfig.disabled && itemConfig.disabledReason && ( + <> +
+

+ {typeof itemConfig.disabledReason === 'function' + ? itemConfig.disabledReason(state) + : itemConfig.disabledReason} +

+ + )} {itemConfig.links.length > 0 && ( <>
diff --git a/src/components/ModelingSidebar/ModelingPanes/MemoryPane.tsx b/src/components/ModelingSidebar/ModelingPanes/MemoryPane.tsx index bec009240..af73f2839 100644 --- a/src/components/ModelingSidebar/ModelingPanes/MemoryPane.tsx +++ b/src/components/ModelingSidebar/ModelingPanes/MemoryPane.tsx @@ -88,8 +88,12 @@ export const MemoryPane = () => { export const processMemory = (programMemory: ProgramMemory) => { const processedMemory: any = {} for (const [key, val] of programMemory?.visibleEntries()) { - if (typeof val.value !== 'function') { - const sg = sketchFromKclValue(val, null) + if ( + (val.type === 'UserVal' && val.value.type === 'Sketch') || + // @ts-ignore + (val.type !== 'Function' && val.type !== 'UserVal') + ) { + const sg = sketchFromKclValue(val, key) if (val.type === 'Solid') { processedMemory[key] = val.value.map(({ ...rest }: ExtrudeSurface) => { return rest @@ -98,15 +102,16 @@ export const processMemory = (programMemory: ProgramMemory) => { processedMemory[key] = sg.paths.map(({ __geoMeta, ...rest }: Path) => { return rest }) - } else if ((val.type as any) === 'Function') { - processedMemory[key] = `__function(${(val as any)?.expression?.params - ?.map?.(({ identifier }: any) => identifier?.name || '') - .join(', ')})__` } else { processedMemory[key] = val.value } - } else if (key !== 'log') { - processedMemory[key] = '__function__' + //@ts-ignore + } else if (val.type === 'Function') { + processedMemory[key] = `__function(${(val as any)?.expression?.params + ?.map?.(({ identifier }: any) => identifier?.name || '') + .join(', ')})__` + } else { + processedMemory[key] = val.value } } return processedMemory diff --git a/src/components/UserSidebarMenu.test.tsx b/src/components/UserSidebarMenu.test.tsx index b89a080c5..169dd5fe4 100644 --- a/src/components/UserSidebarMenu.test.tsx +++ b/src/components/UserSidebarMenu.test.tsx @@ -1,4 +1,4 @@ -import { fireEvent, render, screen } from '@testing-library/react' +import { fireEvent, render, screen, waitFor } from '@testing-library/react' import UserSidebarMenu from './UserSidebarMenu' import { Route, @@ -13,7 +13,7 @@ import { CommandBarProvider } from './CommandBar/CommandBarProvider' type User = Models['User_type'] describe('UserSidebarMenu tests', () => { - test("Renders user's name and email if available", () => { + test("Renders user's name and email if available", async () => { const userWellFormed: User = { id: '8675309', name: 'Test User', @@ -39,13 +39,19 @@ describe('UserSidebarMenu tests', () => { fireEvent.click(screen.getByTestId('user-sidebar-toggle')) - expect(screen.getByTestId('username')).toHaveTextContent( - userWellFormed.name || '' - ) - expect(screen.getByTestId('email')).toHaveTextContent(userWellFormed.email) + await waitFor(() => { + expect(screen.getByTestId('username')).toHaveTextContent( + userWellFormed.name || '' + ) + }) + await waitFor(() => { + expect(screen.getByTestId('email')).toHaveTextContent( + userWellFormed.email + ) + }) }) - test("Renders just the user's email if no name is available", () => { + test("Renders just the user's email if no name is available", async () => { const userNoName: User = { id: '8675309', email: 'kittycad.sidebar.test@example.com', @@ -71,10 +77,12 @@ describe('UserSidebarMenu tests', () => { fireEvent.click(screen.getByTestId('user-sidebar-toggle')) - expect(screen.getByTestId('username')).toHaveTextContent(userNoName.email) + await waitFor(() => { + expect(screen.getByTestId('username')).toHaveTextContent(userNoName.email) + }) }) - test('Renders a menu button if no user avatar is available', () => { + test('Renders a menu button if no user avatar is available', async () => { const userNoAvatar: User = { id: '8675309', name: 'Test User', @@ -98,9 +106,11 @@ describe('UserSidebarMenu tests', () => { ) - expect(screen.getByTestId('user-sidebar-toggle')).toHaveTextContent( - 'User menu' - ) + await waitFor(() => { + expect(screen.getByTestId('user-sidebar-toggle')).toHaveTextContent( + 'User menu' + ) + }) }) }) diff --git a/src/lib/desktop.test.ts b/src/lib/desktop.test.ts new file mode 100644 index 000000000..922cfbf82 --- /dev/null +++ b/src/lib/desktop.test.ts @@ -0,0 +1,131 @@ +import { vi, describe, it, expect, beforeEach } from 'vitest' +import { listProjects } from './desktop' +import { DeepPartial } from './types' +import { Configuration } from 'wasm-lib/kcl/bindings/Configuration' + +// Mock the electron window global +const mockElectron = { + readdir: vi.fn(), + path: { + join: vi.fn(), + basename: vi.fn(), + dirname: vi.fn(), + }, + stat: vi.fn(), + statIsDirectory: vi.fn(), + exists: vi.fn(), + writeFile: vi.fn(), + readFile: vi.fn(), + os: { + isMac: false, + isWindows: false, + }, + process: { + env: {}, + }, + getPath: vi.fn(), + kittycad: vi.fn(), +} + +vi.stubGlobal('window', { electron: mockElectron }) + +describe('desktop utilities', () => { + const mockConfig: DeepPartial = { + settings: { + project: { + directory: '/test/projects', + }, + }, + } + + const mockFileSystem: { [key: string]: string[] } = { + '/test/projects': [ + '.hidden-project', + 'valid-project', + '.git', + 'project-without-kcl-files', + 'another-valid-project', + ], + '/test/projects/valid-project': ['file1.kcl', 'file2.stp'], + '/test/projects/project-without-kcl-files': ['file3.glb'], + '/test/projects/another-valid-project': ['file4.kcl'], + } + + beforeEach(() => { + vi.clearAllMocks() + + // Setup default mock implementations + mockElectron.path.join.mockImplementation((...parts: string[]) => + parts.join('/') + ) + mockElectron.path.basename.mockImplementation((path: string) => + path.split('/').pop() + ) + mockElectron.path.dirname.mockImplementation((path: string) => + path.split('/').slice(0, -1).join('/') + ) + + // Mock readdir to return the entries for the given path + mockElectron.readdir.mockImplementation(async (path: string) => { + return mockFileSystem[path] || [] + }) + + // Mock statIsDirectory to return true if the path exists in mockFileSystem + mockElectron.statIsDirectory.mockImplementation(async (path: string) => { + return path in mockFileSystem + }) + + // Mock stat to always resolve with dummy metadata + mockElectron.stat.mockResolvedValue({ + mtimeMs: 123, + atimeMs: 456, + ctimeMs: 789, + size: 100, + mode: 0o666, + }) + + mockElectron.exists.mockResolvedValue(true) + mockElectron.readFile.mockResolvedValue('') + mockElectron.writeFile.mockResolvedValue(undefined) + mockElectron.getPath.mockResolvedValue('/appData') + mockElectron.kittycad.mockResolvedValue({}) + }) + + describe('listProjects', () => { + it('does not list .git directories', async () => { + const projects = await listProjects(mockConfig) + expect(projects.map((p) => p.name)).not.toContain('.git') + }) + it('lists projects excluding hidden and without .kcl files', async () => { + const projects = await listProjects(mockConfig) + + // Verify only non-dot projects with .kcl files were included + expect(projects.map((p) => p.name)).toEqual([ + 'valid-project', + 'another-valid-project', + ]) + + // Verify we didn't try to get project info for dot directories + expect(mockElectron.stat).not.toHaveBeenCalledWith( + expect.stringContaining('/.hidden-project') + ) + expect(mockElectron.stat).not.toHaveBeenCalledWith( + expect.stringContaining('/.git') + ) + + // Verify that projects without .kcl files are not included + expect(projects.map((p) => p.name)).not.toContain( + 'project-without-kcl-files' + ) + }) + + it('handles empty project directory', async () => { + // Adjust mockFileSystem to simulate empty directory + mockFileSystem['/test/projects'] = [] + + const projects = await listProjects(mockConfig) + + expect(projects).toEqual([]) + }) + }) +}) diff --git a/src/lib/desktop.ts b/src/lib/desktop.ts index 247c36dd2..3e4c1e08d 100644 --- a/src/lib/desktop.ts +++ b/src/lib/desktop.ts @@ -139,6 +139,11 @@ export async function listProjects( const entries = await window.electron.readdir(projectDir) for (let entry of entries) { + // Skip directories that start with a dot + if (entry.startsWith('.')) { + continue + } + const projectPath = window.electron.path.join(projectDir, entry) // if it's not a directory ignore. const isDirectory = await window.electron.statIsDirectory(projectPath) diff --git a/src/lib/getCurrentProjectFile.ts b/src/lib/getCurrentProjectFile.ts index 27d25c4bb..d3638cb26 100644 --- a/src/lib/getCurrentProjectFile.ts +++ b/src/lib/getCurrentProjectFile.ts @@ -1,5 +1,6 @@ import * as path from 'path' import * as fs from 'fs/promises' +import { Stats } from 'fs' import { Models } from '@kittycad/lib/dist/types/src' import { PROJECT_ENTRYPOINT } from './constants' @@ -43,8 +44,16 @@ export default async function getCurrentProjectFile( ? sourcePath : path.join(process.cwd(), sourcePath) + let stats: Stats + try { + stats = await fs.stat(sourcePath) + } catch (error) { + return new Error( + `Unable to access the path: ${sourcePath}. Error: ${error}` + ) + } + // If the path is a directory, let's assume it is a project directory. - const stats = await fs.stat(sourcePath) if (stats.isDirectory()) { // Walk the directory and look for a kcl file. const files = await fs.readdir(sourcePath) diff --git a/src/lib/toolbar.ts b/src/lib/toolbar.ts index 988a29d47..751e8a118 100644 --- a/src/lib/toolbar.ts +++ b/src/lib/toolbar.ts @@ -39,6 +39,9 @@ export type ToolbarItem = { description: string links: { label: string; url: string }[] isActive?: (state: StateFrom) => boolean + disabledReason?: + | string + | ((state: StateFrom) => string | undefined) } export type ToolbarItemResolved = Omit< @@ -349,6 +352,11 @@ export const toolbarConfig: Record = { (!isEditingExistingSketch(state.context) && !state.matches({ Sketch: 'Tangential arc to' })) || pipeHasCircle(state.context), + disabledReason: (state) => + !isEditingExistingSketch(state.context) && + !state.matches({ Sketch: 'Tangential arc to' }) + ? "Cannot start a tangential arc because there's no previous line to be tangential to. Try drawing a line first or selecting an existing sketch to edit." + : undefined, title: 'Tangential Arc', hotkey: (state) => state.matches({ Sketch: 'Tangential arc to' }) ? ['Esc', 'A'] : 'A', diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx index f54fcbe51..d1a335089 100644 --- a/src/routes/Home.tsx +++ b/src/routes/Home.tsx @@ -4,6 +4,7 @@ import { AppHeader } from 'components/AppHeader' import ProjectCard from 'components/ProjectCard/ProjectCard' import { useNavigate, useSearchParams } from 'react-router-dom' import { Link } from 'react-router-dom' +import { toast } from 'react-hot-toast' import Loading from 'components/Loading' import { PATHS } from 'lib/paths' import { @@ -94,6 +95,11 @@ const Home = () => { new FormData(e.target as HTMLFormElement) ) + if (typeof newProjectName === 'string' && newProjectName.startsWith('.')) { + toast.error('Project names cannot start with a dot (.)') + return + } + if (newProjectName !== project.name) { send({ type: 'Rename project', diff --git a/src/wasm-lib/kcl/src/lsp/kcl/mod.rs b/src/wasm-lib/kcl/src/lsp/kcl/mod.rs index 061766bfa..0d3d8aa41 100644 --- a/src/wasm-lib/kcl/src/lsp/kcl/mod.rs +++ b/src/wasm-lib/kcl/src/lsp/kcl/mod.rs @@ -1041,6 +1041,38 @@ impl LanguageServer for Backend { tags: None, }]; + // Get the current line up to cursor + let Some(current_code) = self + .code_map + .get(params.text_document_position.text_document.uri.as_ref()) + else { + return Ok(Some(CompletionResponse::Array(completions))); + }; + let Ok(current_code) = std::str::from_utf8(¤t_code) else { + return Ok(Some(CompletionResponse::Array(completions))); + }; + + // Get the current line up to cursor, with bounds checking + if let Some(line) = current_code + .lines() + .nth(params.text_document_position.position.line as usize) + { + let char_pos = params.text_document_position.position.character as usize; + if char_pos <= line.len() { + let line_prefix = &line[..char_pos]; + // Get last word + let last_word = line_prefix + .split(|c: char| c.is_whitespace() || c.is_ascii_punctuation()) + .last() + .unwrap_or(""); + + // If the last word starts with a digit, return no completions + if !last_word.is_empty() && last_word.chars().next().unwrap().is_ascii_digit() { + return Ok(None); + } + } + } + completions.extend(self.stdlib_completions.values().cloned()); // Add more to the completions if we have more. diff --git a/src/wasm-lib/kcl/src/lsp/tests.rs b/src/wasm-lib/kcl/src/lsp/tests.rs index c56418dd9..606ec3370 100644 --- a/src/wasm-lib/kcl/src/lsp/tests.rs +++ b/src/wasm-lib/kcl/src/lsp/tests.rs @@ -3551,3 +3551,36 @@ const part001 = startSketchOn('XY') // Check the diagnostics. assert_eq!(diagnostics.len(), 2); } + +#[tokio::test(flavor = "multi_thread")] +async fn kcl_test_kcl_lsp_completions_number_literal() { + let server = kcl_lsp_server(false).await.unwrap(); + + server + .did_open(tower_lsp::lsp_types::DidOpenTextDocumentParams { + text_document: tower_lsp::lsp_types::TextDocumentItem { + uri: "file:///test.kcl".try_into().unwrap(), + language_id: "kcl".to_string(), + version: 1, + text: "const thing = 10".to_string(), + }, + }) + .await; + + let completions = server + .completion(tower_lsp::lsp_types::CompletionParams { + text_document_position: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "file:///test.kcl".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { line: 0, character: 15 }, + }, + context: None, + partial_result_params: Default::default(), + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + assert_eq!(completions.is_none(), true); +} diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index d0d40336b..95bf3a78a 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -459,6 +459,19 @@ impl Args { source_ranges: vec![self.source_range], })) } + + pub(crate) fn get_polygon_args( + &self, + ) -> Result< + ( + crate::std::shapes::PolygonData, + crate::std::shapes::SketchOrSurface, + Option, + ), + KclError, + > { + FromArgs::from_args(self, 0) + } } /// Types which impl this trait can be read out of the `Args` passed into a KCL function. @@ -652,6 +665,7 @@ impl_from_arg_via_json!(super::sketch::AngledLineData); impl_from_arg_via_json!(super::sketch::AngledLineToData); impl_from_arg_via_json!(super::sketch::AngledLineThatIntersectsData); impl_from_arg_via_json!(super::shapes::CircleData); +impl_from_arg_via_json!(super::shapes::PolygonData); impl_from_arg_via_json!(super::sketch::ArcData); impl_from_arg_via_json!(super::sketch::TangentialArcData); impl_from_arg_via_json!(super::sketch::BezierData); diff --git a/src/wasm-lib/kcl/src/std/array.rs b/src/wasm-lib/kcl/src/std/array.rs index 5ecc65858..ee41092ca 100644 --- a/src/wasm-lib/kcl/src/std/array.rs +++ b/src/wasm-lib/kcl/src/std/array.rs @@ -193,3 +193,63 @@ async fn call_reduce_closure<'a>( })?; Ok(out) } + +/// Append an element to the end of an array. +/// +/// Returns a new array with the element appended. +/// +/// ```no_run +/// let arr = [1, 2, 3] +/// let new_arr = push(arr, 4) +/// assertEqual(new_arr[3], 4, 0.00001, "4 was added to the end of the array") +/// ``` +#[stdlib { + name = "push", +}] +async fn inner_push(array: Vec, elem: KclValue, args: &Args) -> Result { + // Unwrap the KclValues to JValues for manipulation + let mut unwrapped_array = array + .into_iter() + .map(|k| match k { + KclValue::UserVal(user_val) => Ok(user_val.value), + _ => Err(KclError::Semantic(KclErrorDetails { + message: "Expected a UserVal in array".to_string(), + source_ranges: vec![args.source_range], + })), + }) + .collect::, _>>()?; + + // Unwrap the element + let unwrapped_elem = match elem { + KclValue::UserVal(user_val) => user_val.value, + _ => { + return Err(KclError::Semantic(KclErrorDetails { + message: "Expected a UserVal as element".to_string(), + source_ranges: vec![args.source_range], + })); + } + }; + + // Append the element to the array + unwrapped_array.push(unwrapped_elem); + + // Wrap the new array into a UserVal with the source range metadata + let uv = UserVal::new(vec![args.source_range.into()], unwrapped_array); + + // Return the new array wrapped as a KclValue::UserVal + Ok(KclValue::UserVal(uv)) +} + +pub async fn push(_exec_state: &mut ExecState, args: Args) -> Result { + // Extract the array and the element from the arguments + let (array_jvalues, elem): (Vec, KclValue) = FromArgs::from_args(&args, 0)?; + + // Convert the array of JValue into Vec + let array: Vec = array_jvalues + .into_iter() + .map(|jval| KclValue::UserVal(UserVal::new(vec![args.source_range.into()], jval))) + .collect(); + + // Call the inner_push function + inner_push(array, elem, &args).await +} diff --git a/src/wasm-lib/kcl/src/std/mod.rs b/src/wasm-lib/kcl/src/std/mod.rs index a8681457f..d8e52ff68 100644 --- a/src/wasm-lib/kcl/src/std/mod.rs +++ b/src/wasm-lib/kcl/src/std/mod.rs @@ -66,6 +66,7 @@ lazy_static! { Box::new(crate::std::segment::AngleToMatchLengthX), Box::new(crate::std::segment::AngleToMatchLengthY), Box::new(crate::std::shapes::Circle), + Box::new(crate::std::shapes::Polygon), Box::new(crate::std::sketch::LineTo), Box::new(crate::std::sketch::Line), Box::new(crate::std::sketch::XLineTo), @@ -99,6 +100,7 @@ lazy_static! { Box::new(crate::std::patterns::PatternTransform), Box::new(crate::std::array::Reduce), Box::new(crate::std::array::Map), + Box::new(crate::std::array::Push), Box::new(crate::std::chamfer::Chamfer), Box::new(crate::std::fillet::Fillet), Box::new(crate::std::fillet::GetOppositeEdge), diff --git a/src/wasm-lib/kcl/src/std/shapes.rs b/src/wasm-lib/kcl/src/std/shapes.rs index a1ff5d4ce..4a1d11822 100644 --- a/src/wasm-lib/kcl/src/std/shapes.rs +++ b/src/wasm-lib/kcl/src/std/shapes.rs @@ -15,7 +15,7 @@ use serde::{Deserialize, Serialize}; use crate::{ ast::types::TagDeclarator, - errors::KclError, + errors::{KclError, KclErrorDetails}, executor::{BasePath, ExecState, GeoMeta, KclValue, Path, Sketch, SketchSurface}, std::Args, }; @@ -24,6 +24,7 @@ use crate::{ #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(untagged)] + pub enum SketchOrSurface { SketchSurface(SketchSurface), Sketch(Box), @@ -141,3 +142,201 @@ async fn inner_circle( Ok(new_sketch) } + +/// Type of the polygon +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Default)] +#[ts(export)] +#[serde(rename_all = "lowercase")] +pub enum PolygonType { + #[default] + Inscribed, + Circumscribed, +} + +/// Data for drawing a polygon +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[ts(export)] +#[serde(rename_all = "camelCase")] +pub struct PolygonData { + /// The radius of the polygon + pub radius: f64, + /// The number of sides in the polygon + pub num_sides: u64, + /// The center point of the polygon + pub center: [f64; 2], + /// The type of the polygon (inscribed or circumscribed) + #[serde(skip)] + polygon_type: PolygonType, + /// Whether the polygon is inscribed (true) or circumscribed (false) about a circle with the specified radius + #[serde(default = "default_inscribed")] + pub inscribed: bool, +} + +fn default_inscribed() -> bool { + true +} + +/// Create a regular polygon with the specified number of sides and radius. +pub async fn polygon(exec_state: &mut ExecState, args: Args) -> Result { + let (data, sketch_surface_or_group, tag): (PolygonData, SketchOrSurface, Option) = + args.get_polygon_args()?; + + let sketch = inner_polygon(data, sketch_surface_or_group, tag, exec_state, args).await?; + Ok(KclValue::new_user_val(sketch.meta.clone(), sketch)) +} + +/// Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius. +/// +/// ```no_run +/// // Create a regular hexagon inscribed in a circle of radius 10 +/// hex = startSketchOn('XY') +/// |> polygon({ +/// radius: 10, +/// numSides: 6, +/// center: [0, 0], +/// inscribed: true, +/// }, %) +/// +/// example = extrude(5, hex) +/// ``` +/// +/// ```no_run +/// // Create a square circumscribed around a circle of radius 5 +/// square = startSketchOn('XY') +/// |> polygon({ +/// radius: 5.0, +/// numSides: 4, +/// center: [10, 10], +/// inscribed: false, +/// }, %) +/// example = extrude(5, square) +/// ``` +#[stdlib { + name = "polygon", +}] +async fn inner_polygon( + data: PolygonData, + sketch_surface_or_group: SketchOrSurface, + tag: Option, + exec_state: &mut ExecState, + args: Args, +) -> Result { + if data.num_sides < 3 { + return Err(KclError::Type(KclErrorDetails { + message: "Polygon must have at least 3 sides".to_string(), + source_ranges: vec![args.source_range], + })); + } + + if data.radius <= 0.0 { + return Err(KclError::Type(KclErrorDetails { + message: "Radius must be greater than 0".to_string(), + source_ranges: vec![args.source_range], + })); + } + + let sketch_surface = match sketch_surface_or_group { + SketchOrSurface::SketchSurface(surface) => surface, + SketchOrSurface::Sketch(group) => group.on, + }; + + let half_angle = std::f64::consts::PI / data.num_sides as f64; + + let radius_to_vertices = match data.polygon_type { + PolygonType::Inscribed => data.radius, + PolygonType::Circumscribed => data.radius / half_angle.cos(), + }; + + let angle_step = 2.0 * std::f64::consts::PI / data.num_sides as f64; + + let vertices: Vec<[f64; 2]> = (0..data.num_sides) + .map(|i| { + let angle = angle_step * i as f64; + [ + data.center[0] + radius_to_vertices * angle.cos(), + data.center[1] + radius_to_vertices * angle.sin(), + ] + }) + .collect(); + + let mut sketch = + crate::std::sketch::inner_start_profile_at(vertices[0], sketch_surface, None, exec_state, args.clone()).await?; + + // Draw all the lines with unique IDs and modified tags + for vertex in vertices.iter().skip(1) { + let from = sketch.current_pen_position()?; + let id = exec_state.id_generator.next_uuid(); + + args.batch_modeling_cmd( + id, + ModelingCmd::from(mcmd::ExtendPath { + path: sketch.id.into(), + segment: PathSegment::Line { + end: KPoint2d::from(*vertex).with_z(0.0).map(LengthUnit), + relative: false, + }, + }), + ) + .await?; + + let current_path = Path::ToPoint { + base: BasePath { + from: from.into(), + to: *vertex, + tag: tag.clone(), + geo_meta: GeoMeta { + id, + metadata: args.source_range.into(), + }, + }, + }; + + if let Some(tag) = &tag { + sketch.add_tag(tag, ¤t_path); + } + + sketch.paths.push(current_path); + } + + // Close the polygon by connecting back to the first vertex with a new ID + let from = sketch.current_pen_position()?; + let close_id = exec_state.id_generator.next_uuid(); + + args.batch_modeling_cmd( + close_id, + ModelingCmd::from(mcmd::ExtendPath { + path: sketch.id.into(), + segment: PathSegment::Line { + end: KPoint2d::from(vertices[0]).with_z(0.0).map(LengthUnit), + relative: false, + }, + }), + ) + .await?; + + let current_path = Path::ToPoint { + base: BasePath { + from: from.into(), + to: vertices[0], + tag: tag.clone(), + geo_meta: GeoMeta { + id: close_id, + metadata: args.source_range.into(), + }, + }, + }; + + if let Some(tag) = &tag { + sketch.add_tag(tag, ¤t_path); + } + + sketch.paths.push(current_path); + + args.batch_modeling_cmd( + exec_state.id_generator.next_uuid(), + ModelingCmd::from(mcmd::ClosePath { path_id: sketch.id }), + ) + .await?; + + Ok(sketch) +} diff --git a/src/wasm-lib/kcl/src/std/sketch.rs b/src/wasm-lib/kcl/src/std/sketch.rs index b6bc9d9c1..8deb9cb2d 100644 --- a/src/wasm-lib/kcl/src/std/sketch.rs +++ b/src/wasm-lib/kcl/src/std/sketch.rs @@ -1501,7 +1501,7 @@ pub(crate) async fn inner_arc( (center, a_start, a_end, *radius, end) } ArcData::CenterToRadius { center, to, radius } => { - let (angle_start, angle_end) = arc_angles(from, center.into(), to.into(), *radius, args.source_range)?; + let (angle_start, angle_end) = arc_angles(from, to.into(), center.into(), *radius, args.source_range)?; (center.into(), angle_start, angle_end, *radius, to.into()) } }; diff --git a/src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon0.png b/src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc2eaa56e822ca5e1dac23f39fe79e1ffa4848bd GIT binary patch literal 47662 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 Sz=Hp#PMQA1mLEUA^nU>R?luVk literal 0 HcmV?d00001 diff --git a/src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon1.png b/src/wasm-lib/kcl/tests/outputs/serial_test_example_polygon1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3c303c7e06cf86e74f1bba428e7af7aa50c3b2 GIT binary patch literal 51370 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 literal 0 HcmV?d00001 diff --git a/src/wasm-lib/tests/executor/inputs/no_visuals/array_elem_push.kcl b/src/wasm-lib/tests/executor/inputs/no_visuals/array_elem_push.kcl new file mode 100644 index 000000000..24c5bb7bf --- /dev/null +++ b/src/wasm-lib/tests/executor/inputs/no_visuals/array_elem_push.kcl @@ -0,0 +1,12 @@ +arr = [1, 2, 3] +new_arr1 = push(arr, 4) +new_arr2 = push(new_arr1, 5) +assertEqual(new_arr1[0], 1, 0.00001, "element 0 should not have changed") +assertEqual(new_arr1[1], 2, 0.00001, "element 1 should not have changed") +assertEqual(new_arr1[2], 3, 0.00001, "element 2 should not have changed") +assertEqual(new_arr1[3], 4, 0.00001, "4 was added to the end of the array") +assertEqual(new_arr2[0], 1, 0.00001, "element 0 should not have changed") +assertEqual(new_arr2[1], 2, 0.00001, "element 1 should not have changed") +assertEqual(new_arr2[2], 3, 0.00001, "element 2 should not have changed") +assertEqual(new_arr2[3], 4, 0.00001, "4 was added to the end of the array") +assertEqual(new_arr2[4], 5, 0.00001, "5 was added to the end of the array") diff --git a/src/wasm-lib/tests/executor/no_visuals.rs b/src/wasm-lib/tests/executor/no_visuals.rs index 921f55531..b5be2cad6 100644 --- a/src/wasm-lib/tests/executor/no_visuals.rs +++ b/src/wasm-lib/tests/executor/no_visuals.rs @@ -173,3 +173,4 @@ gen_test_parse_fail!( // ); gen_test!(add_lots); gen_test!(double_map); +gen_test!(array_elem_push);