{
  "Uuid": "bf8b5211-4389-493f-b885-927e4248a5f4",
  "IsCustomNode": false,
  "Description": "",
  "Name": "AUTO-TAGGING-REST OF SOLIDS-PT2",
  "ElementResolver": {
    "ResolutionMap": {
      "Vector": {
        "Key": "Autodesk.DesignScript.Geometry.Vector",
        "Value": "ProtoGeometry.dll"
      },
      "List": {
        "Key": "List",
        "Value": "BuiltIn.ds"
      },
      "String": {
        "Key": "DSCore.String",
        "Value": "DSCoreNodes.dll"
      },
      "Geometry": {
        "Key": "Autodesk.DesignScript.Geometry.Geometry",
        "Value": "ProtoGeometry.dll"
      },
      "Polygon": {
        "Key": "Autodesk.DesignScript.Geometry.Polygon",
        "Value": "ProtoGeometry.dll"
      },
      "Autodesk.DesignScript.Geometry.Surface": {
        "Key": "Autodesk.DesignScript.Geometry.Surface",
        "Value": "ProtoGeometry.dll"
      },
      "Point": {
        "Key": "Autodesk.DesignScript.Geometry.Point",
        "Value": "ProtoGeometry.dll"
      },
      "Math": {
        "Key": "DSCore.Math",
        "Value": "DSCoreNodes.dll"
      }
    }
  },
  "Inputs": [
    {
      "Id": "b7ea293ad7a141bbb4aef7ee294bce88",
      "Name": "Views",
      "Type": "selection",
      "Type2": "dropdownSelection",
      "Value": "Section 1",
      "Description": "All views available in the current document.",
      "SelectedIndex": 30
    }
  ],
  "Outputs": [],
  "Nodes": [
    {
      "ConcreteType": "DSRevitNodesUI.Views, DSRevitNodesUI",
      "SelectedIndex": 30,
      "SelectedString": "Section 1",
      "Id": "b7ea293ad7a141bbb4aef7ee294bce88",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "55453aee85614dcb9a64da4afe85f459",
          "Name": "Views",
          "Description": "The selected Views",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All views available in the current document."
    },
    {
      "ConcreteType": "DSRevitNodesUI.ElementTypes, DSRevitNodesUI",
      "SelectedIndex": 345,
      "SelectedString": "TextNoteType",
      "Id": "d4e924fb58544c93aed40d3589a5d084",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "b552b4bcb0c347dd8b93a4cb75e4f27f",
          "Name": "Classes",
          "Description": "The selected Classes",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All element subclasses."
    },
    {
      "ConcreteType": "DSRevitNodesUI.ElementsOfType, DSRevitNodesUI",
      "Id": "d6090c54e36a4ce2832a4a0946a93d5e",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "b7a51d73dff44698846b6bcc325d1e46",
          "Name": "element class",
          "Description": "An element class.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f5357346cd5347f68520ef8bb27b0b50",
          "Name": "elements",
          "Description": "All elements in the active document of a given class.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All elements in the active document of a given class."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "401c2e0990184e438858e5e6e40d6bef",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "973022cb775043b99f1163e7381da117",
          "Name": "element",
          "Description": "Revit.Elements.Element",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "2386327a15d9400cbff01869c51a20ee",
          "Name": "parameterName",
          "Description": "The name of the parameter whose value you want to obtain.\n\nstring",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "ec57c197dd2345b4a90d4c60fe971687",
          "Name": "var[]..[]",
          "Description": "var[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Element.GetParameterValueByName@string",
      "Replication": "Longest",
      "Description": "Get the value of one of the element's parameters.\n\nElement.GetParameterValueByName (parameterName: string): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "19cb1b3bb82f4efe8f02becc2b1c9206",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "eaf4b4c5c4144cf69c2cf20549bfe981",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "\"Text Size\";"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "e7a8a2d43dc941deb66ec1e9c05aaf32",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "573a8b2bed5c43d6a674943065ae5b8a",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "\"Color\";"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "8190b35357fd4956a0132302a2b1d79e",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "2a0118f6a62f4803bb43b5bf628cc892",
          "Name": "element",
          "Description": "Revit.Elements.Element",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "1e3e7d92c62c4a64bf3d77438bff6d47",
          "Name": "parameterName",
          "Description": "The name of the parameter whose value you want to obtain.\n\nstring",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "2007184d805c42a0b53eb16e0af97f3e",
          "Name": "var[]..[]",
          "Description": "var[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Element.GetParameterValueByName@string",
      "Replication": "Longest",
      "Description": "Get the value of one of the element's parameters.\n\nElement.GetParameterValueByName (parameterName: string): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "2c10f11d9ff34612b48f7ca2cdfa38ce",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "e5af38a8a3da4e059764e51cddebe916",
          "Name": "x",
          "Description": "Basic type object to compare (e.g. bool, int, double, string, etc.)\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e760534ecd7442559fad9fb2abf6cb56",
          "Name": "y",
          "Description": "Basic type object to compare (e.g. bool, int, double, string, etc.)\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b255d4079395465f932452256a3f99f3",
          "Name": "bool",
          "Description": "Result of equality check",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "==@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Compares if x and y are equal\n\n== (x: var[]..[], y: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "dd306ccd75e94f91b5d420bc9252c0e7",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "1ab46272a84f4ca29a6a93bb282882eb",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "0;"
    },
    {
      "ConcreteType": "DSRevitNodesUI.HorizontalAlignment, DSRevitNodesUI",
      "SelectedIndex": 0,
      "SelectedString": "Center",
      "Id": "d3889c5d8a87410b94e0bbf0119a84a9",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "fbf73edac94546fcb454164f3016172f",
          "Name": "Horizontal Alignment",
          "Description": "The selected Horizontal Alignment",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Select the horizontal text alignment style."
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Load the Python Standard and DesignScript Libraries\r\nimport clr\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\nclr.AddReference('RevitServices')\r\nimport RevitServices\r\nfrom RevitServices.Persistence import DocumentManager\r\nfrom RevitServices.Transactions import TransactionManager\r\n\r\ndoc = DocumentManager.Instance.CurrentDBDocument\r\n\r\n# Obtener las notas de texto recién creadas\r\nnotas = UnwrapElement(IN[0])\r\n\r\n# Asegurar que la entrada se maneje como lista\r\nif not isinstance(notas, list):\r\n    notas = [notas]\r\n\r\nTransactionManager.Instance.EnsureInTransaction(doc)\r\n\r\nfor nota in notas:\r\n    try:\r\n        # Forzar la alineación absoluta al centro en ambos ejes\r\n        nota.HorizontalAlignment = HorizontalTextAlignment.Center\r\n        nota.VerticalAlignment = VerticalTextAlignment.Middle\r\n    except:\r\n        pass # Ignorar si el elemento no es una nota de texto válida\r\n\r\nTransactionManager.Instance.TransactionTaskDone()\r\n\r\n# Devuelve las notas ya centradas para que sigas trabajando\r\nOUT = \"¡Notas creadas y desvinculadas con éxito!\"",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "fc4dc95a4ab14e49aa1e2b197915c663",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "d0f12d07c7844bc38b11a48dc857c66b",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "806fe7ab7a034ef8bdaa47c12e1afe79",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "fa04a4d953fe43a18b3e15b27c3dd0ea",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "4dd039abf6594e48be1d85463e77a565",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f4dd0fc18dd24eb2800b87d69b1cc027",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "1a14c789a9834ba1ba9772fb0621adf3",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "4c3fdfed65a044c1964cf9175aba9bcd",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b33d208490a342d6a814b808790e02be",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "3a33b116c16e4e1ca7a6b3dba04e3165",
          "Name": "list",
          "Description": "The list to find the element in.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "57056ab5610546dc8a15d79839a9c777",
          "Name": "element",
          "Description": "The element whose index is to be returned.\n\nvar",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "a2e898553c7347dba71f55b54690534b",
          "Name": "int",
          "Description": "The index of the element in the list. Invalid index -1 will be returned if strict match not found.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.IndexOf@var[]..[],var",
      "Replication": "Auto",
      "Description": "Returns the index of the element in the given list. Match between given list and target element must be a strict match (i.e. int to int, double to double, string to string, object to object etc.)\n\nList.IndexOf (list: var[]..[], element: var): int"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "83504a64b4704957970787f4d38aff74",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "09f2be360a6a4ebeb90eccd0a67f7107",
          "Name": "list",
          "Description": "List to fetch an item from.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "890f62e7fb874bc591a3b905c8cbc85e",
          "Name": "index",
          "Description": "Index of the item to be fetched.\n\nint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "7643043143f0418d9da9a938a0f3bc5e",
          "Name": "item",
          "Description": "Item in the list at the given index.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.GetItemAtIndex@var[]..[],int",
      "Replication": "Auto",
      "Description": "Returns an item from the given list that's located at the specified index.\n\nList.GetItemAtIndex (list: var[]..[], index: int): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b8e05841d6b64dcb84cc4359c5948ac5",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "9f1c1bfe854a4c10add7a4fb946f2887",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7ad9bad6879e42ca8056e1cdd85fab43",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "431a1a712fb34a0eb46838d71c17584c",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "bcc5269b9c6f48ed95daf528b3f9b877",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "bfd9cecf4e854d0280cb9c98b34fb177",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "f8bbd219e24b403a9601d97d3ad34cee",
          "Name": "list",
          "Description": "list to be sorted\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "ceffd3e807b24ba2a857f1ff18563939",
          "Name": "keys",
          "Description": "list of keys, keys have to be sortable (e.g. numbers,strings)\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "966140a1006c4943a422ba08e00bda5e",
          "Name": "sortedList",
          "Description": "type: var[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "c91a1e1993224dea8462a91c8bbb4c31",
          "Name": "sortedKeys",
          "Description": "type: var[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.SortByKey@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Sort list based on its keys\n\nList.SortByKey (list: var[]..[], keys: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "c10c192ace0a4bd6b8e957b370be493f",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "33b4e66587a24586b751a6de92388ac2",
          "Name": "view",
          "Description": "Revit.Elements.Views.View",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "a99eb5d2296c483c80eeab613cc81f74",
          "Name": "int",
          "Description": "int",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Views.View.Scale",
      "Replication": "Auto",
      "Description": "The scale of the view.\n\nView.Scale: int"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "ca7da37ed4b444f1b8c54b30021ecfed",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "b821581d16af41509c34d8a366012c8a",
          "Name": "element",
          "Description": "Revit.Elements.Element",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d0229d490745418ca106f110143495d8",
          "Name": "string",
          "Description": "string",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Element.Name",
      "Replication": "Auto",
      "Description": "Get the Name of the Element\n\nElement.Name: string"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "f8fe39267e3744c593154b2789cb459b",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "9498c627b9804fee8740bd78e7a14671",
          "Name": "element",
          "Description": "Revit.Elements.Element",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "45e8ec4eabdc426ca4cf6b051cc8285c",
          "Name": "ElementType",
          "Description": "Element Type or Null.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Element.ElementType",
      "Replication": "Auto",
      "Description": "Returns the ElementType for this Element. Returns null if the Element cannot have an ElementType assigned.\n\nElement.ElementType: ElementType"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "6e3503bc5a6740e0821027b81b1eaa31",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "edc7a70a23e246aebd24fb728358013d",
          "Name": "num",
          "Description": "num",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e7bc2fc92e034c4e956b73dc50f53f2e",
          "Name": "",
          "Description": "is",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "is = (num >= 0.8) && (num <= 2.5);"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "6e48e643ce484003be5c4ced1d47cc80",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "2bc22cf1918147a499874cda9c0561ab",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "bdc97d5ad0f74bd9b866d8a3f89cbf76",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "c0b6a3f9ec554e9897d4fd57e38227bb",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "edee3d1f13974beca7c1b802794b56d8",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "5fad5faf12c740a3ad77b9ec45a1b6cd",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "36603a214b3a4052bd429b1ec7d8df5a",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "ed599b9c977e4ece9edc28d10dc0449d",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6bbf1083b4034a729b656101e194079c",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "0b6d288132fe4810a8b4068ae5551753",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Load the Python Standard and DesignScript Libraries\r\nimport sys\r\nimport clr\r\n# Inputs\r\nraw_texts = IN[0]          \r\neq_widths = IN[1]          \r\neq_heights = IN[2]         \r\navailable_sizes = IN[3]    \r\nview_scale = IN[4]         \r\n\r\nfont_width_factor = 0.75   \r\nmargin_factor = 0.85 # Condition for 85% available space\r\nbreak_chars = [\" \", \"-\", \",\", \"_\"] \r\n\r\n# Ensure list format and force texts to String\r\nif not isinstance(raw_texts, list): raw_texts = [raw_texts]\r\nraw_texts = [str(t) for t in raw_texts]\r\n\r\nif not isinstance(eq_widths, list): eq_widths = [eq_widths]\r\nif not isinstance(eq_heights, list): eq_heights = [eq_heights]\r\nif not isinstance(available_sizes, list): available_sizes = [available_sizes]\r\n\r\n# Sort available sizes from smallest to largest\r\navailable_sizes.sort()\r\n\r\n# Define the \"third smallest value\" (Index 2, e.g. 1.2mm)\r\nthreshold_index = min(2, len(available_sizes) - 1)\r\nthreshold_size = available_sizes[threshold_index]\r\n\r\nfinal_texts = []\r\nfinal_sizes = []\r\n\r\nfor text, width, height in zip(raw_texts, eq_widths, eq_heights):\r\n    \r\n    # 1. Identify short and long side of the bounding box (Model Space)\r\n    short_side = min(width, height)\r\n    long_side = max(width, height)\r\n    \r\n    safe_short_model = short_side * margin_factor\r\n    safe_long_model = long_side * margin_factor\r\n    \r\n    # --- PASS 1: Evaluate size assuming a SINGLE line ---\r\n    valid_sizes_1line = []\r\n    for size in available_sizes:\r\n        text_height_model = size * view_scale\r\n        text_length_model = len(text) * (size * font_width_factor) * view_scale\r\n        \r\n        if text_height_model <= safe_short_model and text_length_model <= safe_long_model:\r\n            valid_sizes_1line.append(size)\r\n            \r\n    ideal_size_1line = valid_sizes_1line[-1] if valid_sizes_1line else available_sizes[0]\r\n    \r\n    # Initially assume it stays on one line\r\n    final_text = text\r\n    final_size = ideal_size_1line\r\n    \r\n    # --- PASS 2: Line Break Evaluation and Readjustment ---\r\n    if ideal_size_1line <= threshold_size and len(text) > 1:\r\n        \r\n        # Find the separator closest to the midpoint\r\n        midpoint = len(text) // 2\r\n        best_break_idx = -1\r\n        min_dist = len(text)\r\n        best_char = \"\"\r\n        \r\n        for i, char in enumerate(text):\r\n            if char in break_chars:\r\n                dist = abs(i - midpoint)\r\n                if dist < min_dist:\r\n                    min_dist = dist\r\n                    best_break_idx = i\r\n                    best_char = char\r\n                    \r\n        # If a valid place to break was found:\r\n        if best_break_idx != -1:\r\n            # Temporarily separate lines to measure them\r\n            if best_char in [\" \", \"_\"]:\r\n                line1 = text[:best_break_idx]\r\n                line2 = text[best_break_idx+1:]\r\n                texto_roto = line1 + \"\\n\" + line2\r\n            else:\r\n                if best_break_idx + 1 < len(text) and text[best_break_idx + 1] == \" \":\r\n                    line1 = text[:best_break_idx+1]\r\n                    line2 = text[best_break_idx+2:]\r\n                    texto_roto = line1 + \"\\n\" + line2\r\n                else:\r\n                    line1 = text[:best_break_idx+1]\r\n                    line2 = text[best_break_idx+1:]\r\n                    texto_roto = line1 + \"\\n\" + line2\r\n                    \r\n            # RE-EVALUATE SIZE: Now width depends on the longest line\r\n            max_line_len = max(len(line1), len(line2))\r\n            valid_sizes_2line = []\r\n            \r\n            for size in available_sizes:\r\n                # Height = (Text Height * 2) + (Line spacing) = 2.5 times the size\r\n                height_2line_model = (2.5 * size) * view_scale\r\n                length_2line_model = max_line_len * (size * font_width_factor) * view_scale\r\n                \r\n                if height_2line_model <= safe_short_model and length_2line_model <= safe_long_model:\r\n                    valid_sizes_2line.append(size)\r\n            \r\n            # If 2 lines fit, extract the new ideal size\r\n            if valid_sizes_2line:\r\n                ideal_size_2line = valid_sizes_2line[-1]\r\n                \r\n                # GOLDEN RULE: Only apply the break if this allows us to use \r\n                # a font size equal to or greater than the original.\r\n                if ideal_size_2line >= ideal_size_1line:\r\n                    final_text = texto_roto\r\n                    final_size = ideal_size_2line\r\n\r\n    final_texts.append(final_text)\r\n    final_sizes.append(final_size)\r\n\r\n# Dual Output: [0] Texts for Node, [1] Sizes for List\r\nOUT = [final_texts, final_sizes]",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "e93e11215bd24ec28c6e0fa4d1a8e3bb",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "220fc0333d31434fa60eb4df1d5697bc",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "60d6a5272bde4e7bb8d1361f98214870",
          "Name": "IN[1]",
          "Description": "Input #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "92f678c3ee4649599c6ef5960dc6bb39",
          "Name": "IN[2]",
          "Description": "Input #2",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "b396d60a108448b4b15c46e28e68ccf3",
          "Name": "IN[3]",
          "Description": "Input #3",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "c683ae829414470ca6e32bbadc3b74c0",
          "Name": "IN[4]",
          "Description": "Input #4",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "4c3bfdcb6a5e4718b72e54b012eae3ac",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "3649e27a8a734747ac21f58169472705",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "ed52d15a0b5f4392a1109ef23b460dec",
          "Name": "x",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "901bce442e0f425a9f6aad4ccda56a73",
          "Name": "",
          "Description": "text",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "838d8bfbf5904623b89c9c3f40b0e979",
          "Name": "",
          "Description": "size",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "text=x[0];\nsize=x[1];"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "7e97348ae7b24e3a92ad7839da97ba40",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "2c9cbccce2a3478b9278816efba904aa",
          "Name": "x",
          "Description": "Integer or double value\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "751dc9dde6984a6f92ca7c3b2775123d",
          "Name": "y",
          "Description": "Integer or double value\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b3e34df7c2c24b45ba34cbcf395d8173",
          "Name": "bool",
          "Description": "Result of check",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "<=@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Compares if x is lower or equal to y\n\n<= (x: var[]..[], y: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "CoreNodeModels.Logic.RefactoredIf, CoreNodeModels",
      "Id": "394fb927e2fc4112a1043147152778d9",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "3c164c0c38224e14812500b7b871f2b2",
          "Name": "test",
          "Description": "Boolean test",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7b2804659db6412a98fedaebbaa8f3ec",
          "Name": "true",
          "Description": "Returned if test is true",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "80a2e70a1e4f45a4b126e90e632b1068",
          "Name": "false",
          "Description": "Returned if test is false",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "aa3555e924b24b09b78fdf6eeac9be29",
          "Name": "result",
          "Description": "Result block produced",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Auto",
      "Description": "Returns the result of either True or False input depending on what boolean value is toggled in the test input. Supports recursion which requires that only a single branch be executed. It's critical that that both True and False branches are isolated and do not interact with each other!"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "d1d647d7dfb04605b958c20ca6033556",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "435c0917940645ba94483ba7f9a3ed84",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "90;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "b990f74e87ee4f5e978800e1a5dcae98",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "b701438d898f4e93897fed05e694df87",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "0;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CustomNodes.Function, DynamoCore",
      "FunctionSignature": "e099f46f-fcca-475d-9733-410ca033a00d",
      "FunctionType": "Graph",
      "Id": "f373a7c975ff42edadade9ad3876dea7",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "446a99c877ea4d13ab2420c015775ba7",
          "Name": "element",
          "Description": "Element",
          "UsingDefaultValue": false,
          "Level": 1,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "708ec2720af248eb93f9474c77b9ea77",
          "Name": "detailLevel",
          "Description": "string\nDefault value : \"Medium\"",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "521a9ccc8d584199ae302e2956cc183b",
          "Name": "includeInvisibleObjects",
          "Description": "bool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "91d8f8de1f4a48019c70c8e0fea162a2",
          "Name": "view",
          "Description": "View\nDefault value : null",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a29b02abbd5a43b2ac9327fe695440a1",
          "Name": "returnGeometryWithoutInserts",
          "Description": "bool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "faad5b48e2774e6b92d8689e646a1724",
          "Name": "dynamoGeometry",
          "Description": "return value",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "11790a879c1f41f2a7d2df1a892acc7d",
          "Name": "revitGeometry",
          "Description": "return value",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "11f59eee861440f2866014487b4440ce",
          "Name": "subCategory",
          "Description": "return value",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Auto",
      "Description": "Returns Dynamo AND native Revit geometry of a given element"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Load the Python Standard and DesignScript Libraries\r\nimport clr\r\nimport math\r\n\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\nclr.AddReference('RevitNodes')\r\nimport Revit\r\nclr.ImportExtensions(Revit.GeometryConversion)\r\n\r\nclr.AddReference('RevitServices')\r\nimport RevitServices\r\nfrom RevitServices.Persistence import DocumentManager\r\nfrom RevitServices.Transactions import TransactionManager\r\n\r\ndoc = DocumentManager.Instance.CurrentDBDocument\r\n\r\n# Inputs from Dynamo\r\nviews = IN[0]             \r\nlocations = IN[1]         \r\ntexts = IN[2]             \r\nalignments = IN[3]        \r\nnote_types = IN[4]        \r\nkeep_readables = IN[5]    \r\nrotations = IN[6]         \r\n\r\n# CORRECTED helper function to ensure everything is a flat list\r\ndef to_list(obj):\r\n    if obj is None: \r\n        return [None]\r\n    if isinstance(obj, list): \r\n        return obj\r\n    \r\n    # If the object is a Revit Element (has an Id), it is a single item, not a list\r\n    if hasattr(obj, \"Id\"): \r\n        return [obj]\r\n        \r\n    # Check for other iterables\r\n    if hasattr(obj, '__iter__') and not isinstance(obj, str):\r\n        try:\r\n            # Confirm it actually supports len()\r\n            _ = len(obj) \r\n            return list(obj)\r\n        except TypeError:\r\n            return [obj]\r\n            \r\n    return [obj]\r\n\r\nviews = to_list(views)\r\nlocations = to_list(locations)\r\ntexts = to_list(texts)\r\nalignments = to_list(alignments)\r\nnote_types = to_list(note_types)\r\nkeep_readables = to_list(keep_readables)\r\nrotations = to_list(rotations)\r\n\r\n# Match lengths for processing multiple notes at once\r\nmax_len = max(len(views), len(locations), len(texts), len(alignments), len(note_types), len(keep_readables), len(rotations))\r\n\r\ndef pad_list(lst, size):\r\n    if not lst or len(lst) == 0: return [None] * size\r\n    return lst + [lst[-1]] * (size - len(lst))\r\n\r\nviews = pad_list(views, max_len)\r\nlocations = pad_list(locations, max_len)\r\ntexts = pad_list(texts, max_len)\r\nalignments = pad_list(alignments, max_len)\r\nnote_types = pad_list(note_types, max_len)\r\nkeep_readables = pad_list(keep_readables, max_len)\r\nrotations = pad_list(rotations, max_len)\r\n\r\nnotes = []\r\n\r\nTransactionManager.Instance.EnsureInTransaction(doc)\r\n\r\nfor view, loc, text, align, n_type, keep_read, rot in zip(views, locations, texts, alignments, note_types, keep_readables, rotations):\r\n    try:\r\n        if view is None or loc is None or text is None:\r\n            continue\r\n            \r\n        view_id = UnwrapElement(view).Id\r\n        \r\n        # 1. TEXT TYPE\r\n        if n_type:\r\n            type_id = UnwrapElement(n_type).Id\r\n        else:\r\n            type_id = doc.GetDefaultElementTypeId(ElementTypeGroup.TextNoteType)\r\n            \r\n        options = TextNoteOptions(type_id)\r\n        \r\n        # 2. ROTATION \r\n        if rot is not None:\r\n            options.Rotation = rot * (math.pi / 180.0)\r\n            \r\n        # 3. ALIGNMENT\r\n        if align:\r\n            align_str = str(align).lower()\r\n            if \"center\" in align_str:\r\n                options.HorizontalAlignment = HorizontalTextAlignment.Center\r\n            elif \"right\" in align_str:\r\n                options.HorizontalAlignment = HorizontalTextAlignment.Right\r\n            else:\r\n                options.HorizontalAlignment = HorizontalTextAlignment.Left\r\n                \r\n        # CREATE NOTE\r\n        note = TextNote.Create(doc, view_id, loc.ToXyz(), text, options)\r\n        \r\n        # 4. KEEP READABLE\r\n        if keep_read is not None:\r\n            param = note.get_Parameter(BuiltInParameter.TEXT_ALIGN_KEEP_READABLE)\r\n            if param and not param.IsReadOnly:\r\n                param.Set(1 if keep_read else 0)\r\n                \r\n        notes.append(note)\r\n    except Exception as e:\r\n        notes.append(\"Error: \" + str(e))\r\n\r\nTransactionManager.Instance.TransactionTaskDone()\r\n\r\nOUT = notes",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "c1515016a5474f089057d6d3464eddf8",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "4d4b096609a84ca0a25db3bec08b8d81",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "1f61ab11aa994139aec3694affa0c9f1",
          "Name": "IN[1]",
          "Description": "Input #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "771292aceafd45c08448ab5d5d01a0fd",
          "Name": "IN[2]",
          "Description": "Input #2",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "10fe43c95a0b4067993f03dc0032ec62",
          "Name": "IN[3]",
          "Description": "Input #3",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "35bc55307e1c490d98c5fb7ae2c4055c",
          "Name": "IN[4]",
          "Description": "Input #4",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "b195e7fe4e3e4bafab4c41aaafe7f55b",
          "Name": "IN[5]",
          "Description": "Input #5",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "5c983cf0d8ae438eb8a559b2ee485716",
          "Name": "IN[6]",
          "Description": "Input #6",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "61e4a7ba7a734a1ca3e3cc0b1a52b4dd",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "6edd5772a63142afa9c6cea900a49cf4",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "67e92479590647c5b5383088cbb9840e",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "45ce967e9ba54242af36f6c2c5bace28",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "1031134ab16a4cd0877dc8a9a16b422d",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7a4ae5f982d043d7a3244b0713a9814c",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "DSRevitNodesUI.Categories, DSRevitNodesUI",
      "SelectedIndex": 227,
      "SelectedString": "OST_FireAlarmDevices",
      "Id": "2f6758f5388448cc92dcfba05da931f6",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "6e707f6fa3574ea7bba061fc80cc5ecb",
          "Name": "Category",
          "Description": "The selected Category.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All built-in categories."
    },
    {
      "ConcreteType": "DSRevitNodesUI.Categories, DSRevitNodesUI",
      "SelectedIndex": 546,
      "SelectedString": "OST_SpecialityEquipment",
      "Id": "7fa5fb6fae3e4c51ad698c3dc8dff5ca",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "93302ba9e91844d09221ecd1ba5bc086",
          "Name": "Category",
          "Description": "The selected Category.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All built-in categories."
    },
    {
      "ConcreteType": "DSRevitNodesUI.Categories, DSRevitNodesUI",
      "SelectedIndex": 343,
      "SelectedString": "OST_MechanicalEquipment",
      "Id": "31c362758b25446bb51c89c330f3f1fb",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "35ab046c05b34473a83e54df21a18c22",
          "Name": "Category",
          "Description": "The selected Category.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All built-in categories."
    },
    {
      "ConcreteType": "DSRevitNodesUI.Categories, DSRevitNodesUI",
      "SelectedIndex": 208,
      "SelectedString": "OST_ElectricalEquipment",
      "Id": "01ce1b69bb9842919dfcb959d9ea7599",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "f813ccd480804ef8b81c3d06ae31fc97",
          "Name": "Category",
          "Description": "The selected Category.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "All built-in categories."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b31605dfe1344cbc8b23a268fd9fe8c1",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "86547a162285465a8c0f5052fc5d170e",
          "Name": "element",
          "Description": "Revit.Elements.Element",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "eff4ff1e337f4d4c86db91667f2deb2a",
          "Name": "Category",
          "Description": "Category",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Element.GetCategory",
      "Replication": "Auto",
      "Description": "Get Element Category\n\nElement.GetCategory: Category"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "232ac197dbd64f10938fe017a5bf34d7",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "ea180cf7505b40ed9058553c60447564",
          "Name": "list",
          "Description": "List to search in\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "d72309a46f064603a521c94ed6d6e175",
          "Name": "item",
          "Description": "Item to look for\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 1,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d63a6f589075449bacc5caf480b753ca",
          "Name": "bool",
          "Description": "True if list contains item, false if it doesn’t",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.Contains@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Determines if the given list contains the given item. This function searches through the sublists contained in it.\n\nList.Contains (list: var[]..[], item: var[]..[]): bool"
    },
    {
      "ConcreteType": "CoreNodeModels.CreateList, CoreNodeModels",
      "VariableInputPorts": true,
      "Id": "df8dfe8421954b43bf7440ea7d400cec",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "b070c20b39484bd29fe912a5dd28be4f",
          "Name": "item0",
          "Description": "Item Index #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "912ca2828d06430fb9220479a74d69bb",
          "Name": "item1",
          "Description": "Item Index #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "b869e7b34e3f4de4a2c096636353e9f6",
          "Name": "item2",
          "Description": "Item Index #2",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "d7db6a3d95cd41afafe9ee3b142fbb0a",
          "Name": "item3",
          "Description": "Item Index #3",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e73587368d0c4e8e9313e3cd81717b63",
          "Name": "list",
          "Description": "A list (type: var[]..[])",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Makes a new list from the given inputs"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "a2f36737fc1343ddbe3fcc08ef869795",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "cb6e275698d54915af7176d71ee1458b",
          "Name": "list",
          "Description": "List to flatten.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "51ccec77f2024733ad160e1aa5a20489",
          "Name": "amount",
          "Description": "Layers of list nesting to remove (-1 will remove all list nestings)\n\nint\nDefault value : -1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "3a7fd73d85e14706ad603abae860091e",
          "Name": "list",
          "Description": "Flattened list by amount",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.Flatten@var[]..[],int",
      "Replication": "Auto",
      "Description": "Flattens a nested list of lists by a certain amount.\n\nList.Flatten (list: var[]..[], amount: int = -1): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "7447bab2b7764ba69f8c4ce7d175fb13",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "302c2e236d8e44889919b602515a73e3",
          "Name": "view",
          "Description": "Revit.Elements.Views.View",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "603340acb0484db8b136576ba1d24c7d",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Views.View.Origin",
      "Replication": "Auto",
      "Description": "Returns the origin of the screen.\n\nView.Origin: Point"
    },
    {
      "ConcreteType": "CoreNodeModels.CreateList, CoreNodeModels",
      "VariableInputPorts": true,
      "Id": "86d1f5863e3a475395c998099b84e89a",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "61d5e98a0b034a7d9c25a9f9678ee0aa",
          "Name": "item0",
          "Description": "Item Index #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "5eff1cac0a6d40f08017864b5867cd1b",
          "Name": "item1",
          "Description": "Item Index #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "4459734f6b6f4b44b597c4430ae0922e",
          "Name": "list",
          "Description": "A list (type: var[]..[])",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Makes a new list from the given inputs"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "ab34fbb988ca44388a740738d076334a",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "02f61cae3a4b48148d8dfe57c6c6606d",
          "Name": "lists",
          "Description": "List of lists to be transposed\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d1c89f75bb344696818b133eee43b3ca",
          "Name": "lists",
          "Description": "List of transposed lists",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.Transpose@var[]..[]",
      "Replication": "Auto",
      "Description": "Swaps rows and columns in a list of lists. If there are some rows that are shorter than others, null values are inserted as place holders in the resultant array such that it is always rectangular.\n\nList.Transpose (lists: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "f644c567b91c4ecea5a44dcd5e9a87bd",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "6a86b299907d449d925532f870b64ae0",
          "Name": "view",
          "Description": "Revit.Elements.Views.View",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d3a87884dc0143aebae464e67ee885e6",
          "Name": "Vector",
          "Description": "Vector",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.Views.View.ViewDirection",
      "Replication": "Auto",
      "Description": "The direction towards the viewer.\n\nView.ViewDirection: Vector"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "dfb776d55987487fb82e8371552e0f11",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "fe5ffc79b9cd4dd69de6a60de26dd10a",
          "Name": "geom",
          "Description": "Geometry[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e34fe6157b8a46f68e59185ded580218",
          "Name": "BoundingBox",
          "Description": "Oriented bounding box arounding input geometries.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ByMinimumVolume@Autodesk.DesignScript.Geometry.Geometry[]",
      "Replication": "Auto",
      "Description": "Create a non-axis-aligned, minimum-volume, oriented bounding box around the input geometries.\n\nBoundingBox.ByMinimumVolume (geom: Geometry[]): BoundingBox"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "fb71f2714cc444d88a5ae42917d2ba5c",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "848d2130a60f47dd88529d3c82e55003",
          "Name": "familyInstance",
          "Description": "Revit.Elements.FamilyInstance",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "56b2309354ba4a30a2b5604ef57930c2",
          "Name": "Vector",
          "Description": "Vector",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Revit.Elements.FamilyInstance.FacingOrientation",
      "Replication": "Auto",
      "Description": "Gets the FacingOrientation of the family instance\n\nFamilyInstance.FacingOrientation: Vector"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "662c363b1b5846459aa0f8e96cac0df9",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "74171c1a68624230b55ba4533e2b4c51",
          "Name": "X",
          "Description": "X",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f98f20184ddc439c9784c65a32183f89",
          "Name": "",
          "Description": "DEPTH",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "DEPTH = X;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "95973a3fa68744bfade7fd8f7348ed08",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "cc0cdb11401f477d9911f3b0d2c8b9f6",
          "Name": "X",
          "Description": "X",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "5791c99694ae497b9c6496ee27242611",
          "Name": "",
          "Description": "WIDTH",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "WIDTH = X;"
    },
    {
      "ConcreteType": "CoreNodeModels.Logic.RefactoredIf, CoreNodeModels",
      "Id": "c6a7dca677ea424388605f56c2867ffa",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "2c6e1fceb0c54ec2b3825104dc15385c",
          "Name": "test",
          "Description": "Boolean test",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "66fda2b67e7b4df694d1b087b484825c",
          "Name": "true",
          "Description": "Returned if test is true",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "22618849c53e4c059c660fbdcdee9cd7",
          "Name": "false",
          "Description": "Returned if test is false",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "8c135afa16e24bdb881111409f2915ea",
          "Name": "result",
          "Description": "Result block produced",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Shortest",
      "Description": "Returns the result of either True or False input depending on what boolean value is toggled in the test input. Supports recursion which requires that only a single branch be executed. It's critical that that both True and False branches are isolated and do not interact with each other!"
    },
    {
      "ConcreteType": "CoreNodeModels.Logic.RefactoredIf, CoreNodeModels",
      "Id": "74f17e75c2ee44b0842a34980889903e",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "d8455cccd4ad4185b7556c026cb4035f",
          "Name": "test",
          "Description": "Boolean test",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "794c1bb1add04bc0a492677bef83e210",
          "Name": "true",
          "Description": "Returned if test is true",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "2de6d71e292a4d85a7f0844365ae20ca",
          "Name": "false",
          "Description": "Returned if test is false",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d4816f7789d1467693611339e35024ad",
          "Name": "result",
          "Description": "Result block produced",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Shortest",
      "Description": "Returns the result of either True or False input depending on what boolean value is toggled in the test input. Supports recursion which requires that only a single branch be executed. It's critical that that both True and False branches are isolated and do not interact with each other!"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "7e2f2b5f70be40ef94101394bdf0a34b",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "959947260df544ffa8acf2e2e4ee24c5",
          "Name": "num",
          "Description": "num",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "98c253ce72f14fe2a641c57cca875ae7",
          "Name": "",
          "Description": "isOutsideRange",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "isOutsideRange = (num > 0.5) || (num < -0.5);"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "625bb25192c6451890ad92216d308a91",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "b9ccd64d701e4465bdc3a936df29bcbc",
          "Name": "facingOrientation",
          "Description": "facingOrientation",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "68baea8485b74549b5b2e7ed9fbabcd0",
          "Name": "",
          "Description": "y",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "y = facingOrientation.Y;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "6ffd4186b45c47288f10561169ab2193",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "3281b396af1b4a7aa1e04cd86c3542b3",
          "Name": "MaxPoint",
          "Description": "MaxPoint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "1c44c0abc8af4286a98886d237940c93",
          "Name": "MinPoint",
          "Description": "MinPoint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f3ac27421af94b85af8a82de88129807",
          "Name": "",
          "Description": "width",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "0a5697bb890c406a8f0784f8b7248b25",
          "Name": "",
          "Description": "depth",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "b92dfb5347f5420d83d64df7a4455217",
          "Name": "",
          "Description": "height",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "width = MaxPoint.X - MinPoint.X;\ndepth = MaxPoint.Y - MinPoint.Y;\nheight = MaxPoint.Z - MinPoint.Z;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "7591aa87e98f40428b862068202e5e87",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "b6583c46f70e4281aa076fedd3b7dc7b",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "fe9037021ace4cd78ef18ccaa01caa77",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.MinPoint",
      "Replication": "Auto",
      "Description": "The minimum point\n\nBoundingBox.MinPoint: Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "785309d7d9dc441280686819736db83b",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "7d0bd8708b2243c29db28788d263eecd",
          "Name": "point",
          "Description": "Autodesk.DesignScript.Geometry.Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d8264fe2a1a2468dbb3eaadcebd8019e",
          "Name": "double",
          "Description": "double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.Y",
      "Replication": "Auto",
      "Description": "Get the Y component of a Point\n\nPoint.Y: double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "96780185f17d48918943b6a25717ba3f",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "29f6a69d228e4c2296e8d1b539b27a58",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b46cae0421ca41ef93cc9fc89d8c706f",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.MaxPoint",
      "Replication": "Auto",
      "Description": "The maximum point\n\nBoundingBox.MaxPoint: Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "cccf102e2d3440fdb26ca3aafe7b5aed",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "efbcdeabec4540138b8c19862226b84c",
          "Name": "solid",
          "Description": "Autodesk.DesignScript.Geometry.Solid",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "ccf49a2854cc4383a76a8e9a1520f9ab",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Solid.Centroid",
      "Replication": "Auto",
      "Description": "The centroid of the Solid\n\nSolid.Centroid ( ): Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "f897c365b2234df89b993f6a6a63a459",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "acc53307ce4f4ab3bb282ea01a692d25",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "96ec5b1770b94001b17cc7212f8e8b95",
          "Name": "Cuboid",
          "Description": "Returns cuboid representation of the bounding box.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ToCuboid",
      "Replication": "Auto",
      "Description": "Get the bounding box as a solid cuboid.\n\nBoundingBox.ToCuboid ( ): Cuboid"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "f69e8b071004497fb772dcadff8d57d9",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "446dbcf4f38b41a8841e896845834f25",
          "Name": "lista",
          "Description": "lista",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f53d04264dc44da0b3110a479214cccd",
          "Name": "objetivo",
          "Description": "objetivo",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "68c20296e03243c28a8aa2d2e987b1cf",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "Math.Abs(lista - objetivo);"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "8fac1a1d50b34654a64ee3052a576c6a",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "cbdb370acb20488b87a31b34f598577f",
          "Name": "point",
          "Description": "Autodesk.DesignScript.Geometry.Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b799bb5270df45feb54980291084b645",
          "Name": "double",
          "Description": "double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.Z",
      "Replication": "Auto",
      "Description": "Get the Z component of a Point\n\nPoint.Z: double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "d04fdaa73c224c49bed531350714f727",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "d138e399517749fa9193e8e69da0877d",
          "Name": "list",
          "Description": "List of comparable items to take the minimum value from\n\nvar[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "58ea154bc3644f80a25e3bc94dd3dc0e",
          "Name": "item",
          "Description": "Minimum item from the list.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.MinimumItem@var[]",
      "Replication": "Auto",
      "Description": "Returns the minimum value from a list.\n\nList.MinimumItem (list: var[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "c5eb12805fd74969abcfbafc21d8a573",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "7e1273db0fe94b8b8fa8e54ba4b0c4d5",
          "Name": "x",
          "Description": "Basic type object to compare (e.g. bool, int, double, string, etc.)\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "00c0a9688626414e8206eb9a5197a604",
          "Name": "y",
          "Description": "Basic type object to compare (e.g. bool, int, double, string, etc.)\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d3c5c025fd314067a7de1d64f94b15d9",
          "Name": "bool",
          "Description": "Result of equality check",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "==@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Compares if x and y are equal\n\n== (x: var[]..[], y: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "00b81ed400fa4d03b5e3b657de9fa754",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "513b2e907d414aeb91c15b10f7eab378",
          "Name": "min",
          "Description": "Point\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "df2476258d204a1e896a116c71255d52",
          "Name": "max",
          "Description": "Point\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 1, 1)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "ff7e4157eb104fcf870ead3c7e25121a",
          "Name": "BoundingBox",
          "Description": "BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ByCorners@Autodesk.DesignScript.Geometry.Point,Autodesk.DesignScript.Geometry.Point",
      "Replication": "Auto",
      "Description": "Creates the an axis-aligned BoundingBox spanning between the minimum Point and the maximum Point.\n\nBoundingBox.ByCorners (min: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), max: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 1, 1)): BoundingBox"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "716b3a807e3041ff975726ffa66ba7cd",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "83eeb29651974abf85f3fecdbcad5050",
          "Name": "list",
          "Description": "List to fetch an item from.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "608aabdacea4417aa8632e3b35155fa3",
          "Name": "index",
          "Description": "Index of the item to be fetched.\n\nint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f815fbb5ff674608918ff2530b1be467",
          "Name": "item",
          "Description": "Item in the list at the given index.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.GetItemAtIndex@var[]..[],int",
      "Replication": "Shortest",
      "Description": "Returns an item from the given list that's located at the specified index.\n\nList.GetItemAtIndex (list: var[]..[], index: int): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "ce563d22ff4e4495a909ced54cdd0181",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "f3abffd4549e4470b0d6d92eb4b1c20b",
          "Name": "list",
          "Description": "The list to find the element in.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "38b8b6b4833149649d8cd199f9bf1dba",
          "Name": "element",
          "Description": "The element whose index is to be returned.\n\nvar",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9656e5ec153a4bd5b4a481b094d65bfc",
          "Name": "int",
          "Description": "The index of the element in the list. Invalid index -1 will be returned if strict match not found.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.IndexOf@var[]..[],var",
      "Replication": "Auto",
      "Description": "Returns the index of the element in the given list. Match between given list and target element must be a strict match (i.e. int to int, double to double, string to string, object to object etc.)\n\nList.IndexOf (list: var[]..[], element: var): int"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "ecd8a021dabe488d90d0af6f82245868",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "f53ba7e98a414ad6959b82069c19dfdc",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "true;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "6adac5686dd94c9cad558749f61c37da",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "31ef4275dde94528a612d6a25726f17a",
          "Name": "list",
          "Description": "The list to find the element in.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "ade3084a22c54e318a73a8f2fc9e6f66",
          "Name": "element",
          "Description": "The element whose index is to be returned.\n\nvar",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "eb7320cc64294244a54ee0cc336f1c2c",
          "Name": "int",
          "Description": "The index of the element in the list. Invalid index -1 will be returned if strict match not found.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.IndexOf@var[]..[],var",
      "Replication": "Auto",
      "Description": "Returns the index of the element in the given list. Match between given list and target element must be a strict match (i.e. int to int, double to double, string to string, object to object etc.)\n\nList.IndexOf (list: var[]..[], element: var): int"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "9519578e652448ffb62d47a53ce1d504",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "8f345b4e95b74b9184990a657f603823",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "false;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "1cd63e851c5d4b5a8009b6f1a4c0cb2c",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "df4cebb85c114af08b32f837e4d4dbe8",
          "Name": "punto",
          "Description": "punto",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "7f82cd680218427387d20f05a36f53b5",
          "Name": "",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a1cb7614c6944034b5926adcaf463c24",
          "Name": "",
          "Description": "y",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "54b9dc0a31a542deae66cc4e86ce9be9",
          "Name": "",
          "Description": "z",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "x = punto.X;\ny = punto.Y;\nz = punto.Z;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "93cab830afac41559cb1a5cd916d0c41",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "5aaba89cc0ff4ffda35323a6c8170649",
          "Name": "list",
          "Description": "List to fetch an item from.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "00ba85cb43294540a6baf6ec98af7248",
          "Name": "index",
          "Description": "Index of the item to be fetched.\n\nint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6b68fedfc9c445d6955efc9d49698b52",
          "Name": "item",
          "Description": "Item in the list at the given index.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.GetItemAtIndex@var[]..[],int",
      "Replication": "Shortest",
      "Description": "Returns an item from the given list that's located at the specified index.\n\nList.GetItemAtIndex (list: var[]..[], index: int): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "df7639cbf29141a7bc42dd2ca52e4dc0",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "9db5a91c4b2045c39ef546505078d67c",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "087806839a504bd0b83a5a80155f8e81",
          "Name": "Cuboid",
          "Description": "Returns cuboid representation of the bounding box.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ToCuboid",
      "Replication": "Auto",
      "Description": "Get the bounding box as a solid cuboid.\n\nBoundingBox.ToCuboid ( ): Cuboid"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "cf6139748d034457922e601d2244b3dc",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "d2ed3e6efd7147448f8ace1cfaae7ce8",
          "Name": "origin",
          "Description": "Origin point of plane\n\nPoint\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e959c4885b904048920851b6fe6257bb",
          "Name": "normal",
          "Description": "Normal direction vector of plane\n\nVector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "1155f5db2ddf4cceb46e12effa41d577",
          "Name": "Plane",
          "Description": "Plane created by origin and normal",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Plane.ByOriginNormal@Autodesk.DesignScript.Geometry.Point,Autodesk.DesignScript.Geometry.Vector",
      "Replication": "Auto",
      "Description": "Create a Plane centered at root Point, with input normal Vector.\n\nPlane.ByOriginNormal (origin: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), normal: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)): Plane"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "229138e7945a4f29b42b7e84bc5dbd40",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "126cfd0f7a7243f988195cf1c82acdfe",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7e72ee3306ea429796d58818ebe6397b",
          "Name": "other",
          "Description": "Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f6995a98248b4c1bb102a0d715324c46",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.ClosestPointTo@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Auto",
      "Description": "Obtain the closest Point on this Geometry to the other\n\nGeometry.ClosestPointTo (other: Geometry): Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "5ac81f9fb3b34203a4abff798a1fb7c6",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "c5674bd730b046d19e4d7df6de64ca5d",
          "Name": "list",
          "Description": "List to fetch an item from.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "90157004ba4348aaa77d728b81980833",
          "Name": "index",
          "Description": "Index of the item to be fetched.\n\nint",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "407f4f10e7bf4b5d96861a9d5d90ed5b",
          "Name": "item",
          "Description": "Item in the list at the given index.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.GetItemAtIndex@var[]..[],int",
      "Replication": "Shortest",
      "Description": "Returns an item from the given list that's located at the specified index.\n\nList.GetItemAtIndex (list: var[]..[], index: int): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "4ca4b1feae584d5d82be086d11ed8fba",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "4cd8a0cce58140c9aa2ff0c96f53b4ad",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 1,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "701f8c083f834c8f835af4725bcfd1f2",
          "Name": "other",
          "Description": "Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "14e6c3b171484861b2bdfd18ebf9f0f9",
          "Name": "bool",
          "Description": "bool",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.DoesIntersect@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Longest",
      "Description": "Determine if another Geometry object intersects with this one\n\nGeometry.DoesIntersect (other: Geometry): bool"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "e57eaae792c7419bb52b8392008cebb0",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "facedded525943f5b0d0b6d813142864",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "48830c96dcdd410e810d18dc8300a306",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "19ba90c6a13a4a01be87f12f03b18baa",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a166ea21f61943fdbdf5ca3bb89ddf98",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Longest",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "f146c724b05c4b2fba1f89b461eb57ed",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "2ffd7cbac30d45e69166da04df447bc2",
          "Name": "solid",
          "Description": "Autodesk.DesignScript.Geometry.Solid",
          "UsingDefaultValue": false,
          "Level": 1,
          "UseLevels": true,
          "KeepListStructure": false
        },
        {
          "Id": "705bce68433b428c9f5e477954da7f56",
          "Name": "others",
          "Description": "Solid[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "7b3fcaf98ae24ac19f052c105d4eac75",
          "Name": "Solid",
          "Description": "Solid",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Solid.DifferenceAll@Autodesk.DesignScript.Geometry.Solid[]",
      "Replication": "Longest",
      "Description": "The boolean difference of this Solid and the union of input Solids\n\nSolid.DifferenceAll (others: Solid[]): Solid"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "import clr\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\nclr.AddReference(\"RevitServices\")\r\nfrom RevitServices.Persistence import DocumentManager\r\n\r\ndoc = DocumentManager.Instance.CurrentDBDocument\r\nview = UnwrapElement(IN[0])\r\nallElements = FilteredElementCollector(doc,view.Id).WhereElementIsNotElementType().ToElements()\r\n\r\nOUT = [x for x in allElements if x.get_BoundingBox(None) is not None and x.Category.CategoryType == CategoryType.Model and not x.Category.Name in [\"Center Line\",\"Cameras\"]]",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "537b7999a5d84e71aba9887fe4d04aa5",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "f08fbf4e44fc42498a781c848551dc10",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "685d2c0b3b404f6d925bf517f989e1fd",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "acba1fcae9ca446aae55245ff664be80",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "8cc462a4a1e54917bd0ba96e74717110",
          "Name": "list",
          "Description": "List to be checked if it is empty\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e088a9838b8a4feab8cf80666a32a011",
          "Name": "bool",
          "Description": "True if list is empty, false if it isnt",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.IsEmpty@var[]..[]",
      "Replication": "Auto",
      "Description": "Determines if the given list is empty.\n\nList.IsEmpty (list: var[]..[]): bool"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "a75c48051e46408e8e8cf8c2bd8b5ab8",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "22d152e590c949be8a09d3099ceaf31a",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 3,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f52c226e56da47419ef5cf96e9d2d5bf",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6cd418f7c56043b7bd0e17ea5fcc1320",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "91e5f37e47fd4d86aa5bdd29aee34e48",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "3462863a20994cd4994f7db326b20868",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "8d93581fd4e2435da54bcc0d7f42b1b5",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "259479e9fe604447b268d02813fce6ec",
          "Name": "other",
          "Description": "The other Geometry\n\nGeometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d0fda6d8e88240448b260476f3860b6e",
          "Name": "double",
          "Description": "The distance",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.DistanceTo@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Auto",
      "Description": "Obtain the distance from this Geometry to another\n\nGeometry.DistanceTo (other: Geometry): double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "16d0467ad3c54e84a021c60d53ac5ae1",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "b2e466bbd3c34e0da1e5ed5fe7561ffc",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a03808c47ce74a10b579bedb939fc0b4",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9fb0f76468784e4789a7e7939b49d346",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "ee48faafc880495f93ffaab1bfff7bf1",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "f43fae76abbc4413af33a10774b57a42",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "5f9d8990da384562ab2271cf71bdee8a",
          "Name": "x",
          "Description": "Integer or double value\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7a878200ee3b4531b566583291e201c5",
          "Name": "y",
          "Description": "Integer or double value\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "0ba5eca5f64741958da47d2ca55ad3b5",
          "Name": "bool",
          "Description": "True if x is greater than y, false if not",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": ">@var[]..[],var[]..[]",
      "Replication": "CrossProduct",
      "Description": "Compares if x is greater than y\n\n> (x: var[]..[], y: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "5037dfb9f620419d9a5fed75c37277b0",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "4f14c69d6d4f4883b16a5cf709b8281b",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "3a8586759f9c4cbaa293cd15016214a5",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b296e499b8c1490bb4a39e52ca78ed06",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "475d79ff3b394463a455c7900cdb37ed",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "26932b43334040578f6c6cf5e8798995",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "a846975cfcd0405f9c091c9878ff32d1",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "5f7102e0526c4519be8c4b867a39fdf0",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "0f9a388344714fed95a6b30bac96b157",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "0381ebbc591d44b7bc54fda3a9d19ca2",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "CoreNodeModels.CreateList, CoreNodeModels",
      "VariableInputPorts": true,
      "Id": "1f3500a8490f4fe68fca351c300ae1f7",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "2ddd913b066f4aab9fd8965e803206c4",
          "Name": "item0",
          "Description": "Item Index #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "348ac74903ee48a091c707b0642bf34e",
          "Name": "item1",
          "Description": "Item Index #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9f48462b6d1440bea6296b0d76227506",
          "Name": "list",
          "Description": "A list (type: var[]..[])",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Makes a new list from the given inputs"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "c01e38000a074625b5fab913363311ef",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "6c4bbadb69e84286b737f5807ccad865",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "12a1b6c161b34fc68f7d976e14e6fa39",
          "Name": "other",
          "Description": "Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "26d284bcfef34250a86e91e005f1300e",
          "Name": "Geometry[]",
          "Description": "Geometry[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.Intersect@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Auto",
      "Description": "Get the intersection Geometry for this object and another\n\nGeometry.Intersect (other: Geometry): Geometry[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "da4b35fb0db04b3db854d6ca8e775b8c",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "9ef4525d17cc4e6b8a0a502f4b34617a",
          "Name": "list",
          "Description": "List to filter.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "3f4c68ea7c5b40f79005158ec089fb34",
          "Name": "mask",
          "Description": "List of booleans representing a mask.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 1,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9650fcdc5f424794b444cf525562e1be",
          "Name": "in",
          "Description": "Items whose mask index is true.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "9b546461a45049b8934cb5c7583b9eb3",
          "Name": "out",
          "Description": "Items whose mask index is false.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FilterByBoolMask@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Filters a sequence by looking up corresponding indices in a separate list of booleans.\n\nList.FilterByBoolMask (list: var[]..[], mask: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "002de16915b2409e80169b829d0465e4",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "a00dd303dcc847f5b0d59f066b6b337f",
          "Name": "list",
          "Description": "List to be checked if it is empty\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": true,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "49f7df23491a481891efa7a6c891fb6c",
          "Name": "bool",
          "Description": "True if list is empty, false if it isnt",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.IsEmpty@var[]..[]",
      "Replication": "Auto",
      "Description": "Determines if the given list is empty.\n\nList.IsEmpty (list: var[]..[]): bool"
    },
    {
      "ConcreteType": "CoreNodeModels.Watch, CoreNodeModels",
      "WatchWidth": 200.0,
      "WatchHeight": 200.0,
      "Id": "f6511ff9eef147d6a898282ff5f2bee9",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "f2a3aebfc8e5400dbace1d14b5be3c1a",
          "Name": "",
          "Description": "Node to show output from",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "862e4ba920c14845b282484f12ce8a25",
          "Name": "",
          "Description": "Node output",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Visualizes a node's output"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "695ab94d5c434c099fa849a0a37bee08",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "f4db2b536cef4e0795a61990bb5d6421",
          "Name": "list",
          "Description": "List to flatten.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "af788c4a308848a8abe91b53839a8516",
          "Name": "amount",
          "Description": "Layers of list nesting to remove (-1 will remove all list nestings)\n\nint\nDefault value : -1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f03c18907d2049c590491119baaa6a22",
          "Name": "list",
          "Description": "Flattened list by amount",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.Flatten@var[]..[],int",
      "Replication": "Auto",
      "Description": "Flattens a nested list of lists by a certain amount.\n\nList.Flatten (list: var[]..[], amount: int = -1): var[]..[]"
    },
    {
      "ConcreteType": "CoreNodeModels.CreateList, CoreNodeModels",
      "VariableInputPorts": true,
      "Id": "195154f7873844a1a7912957772f8935",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "0df756bc2eb348d4a7896c1b30260f3d",
          "Name": "item0",
          "Description": "Item Index #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f6a4feb1839c452a8e42a26b5f29b3a0",
          "Name": "list",
          "Description": "A list (type: var[]..[])",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Makes a new list from the given inputs"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "import clr\r\nclr.AddReference('ProtoGeometry')\r\nfrom Autodesk.DesignScript.Geometry import *\r\n\r\nsuperficies = IN[0]\r\nif not isinstance(superficies, list): superficies = [superficies]\r\n\r\nmejores_centros = []\r\nradios_seguros = []\r\n\r\nfor surf in superficies:\r\n    if surf is None:\r\n        mejores_centros.append(None)\r\n        radios_seguros.append(0)\r\n        continue\r\n\r\n    try:\r\n        bordes = surf.PerimeterCurves()\r\n        \r\n        # 1. Encontrar el centro geométrico general (Centro de Gravedad)\r\n        bbox = surf.BoundingBox\r\n        centro_bbox = Point.ByCoordinates(\r\n            (bbox.MinPoint.X + bbox.MaxPoint.X) / 2,\r\n            (bbox.MinPoint.Y + bbox.MaxPoint.Y) / 2,\r\n            (bbox.MinPoint.Z + bbox.MaxPoint.Z) / 2\r\n        )\r\n        \r\n        max_distancia = -1.0\r\n        mejor_punto = None\r\n\r\n        # 2. Escanear la superficie con mayor resolución (20x20)\r\n        for u in range(1, 20):\r\n            for v in range(1, 20):\r\n                pt = surf.PointAtParameter(u / 20.0, v / 20.0)\r\n                \r\n                if pt.DistanceTo(surf) < 0.001:\r\n                    distancias_bordes = [pt.DistanceTo(borde) for borde in bordes]\r\n                    distancia_minima = min(distancias_bordes) if distancias_bordes else 0\r\n                    \r\n                    # 3. LÓGICA DE DESEMPATE (LA MAGIA PARA RECTÁNGULOS)\r\n                    # Si el radio es genuinamente mayor, actualizamos.\r\n                    if distancia_minima > max_distancia + 0.01:\r\n                        max_distancia = distancia_minima\r\n                        mejor_punto = pt\r\n                    \r\n                    # Si el radio es igual (empate en un rectángulo largo)...\r\n                    elif abs(distancia_minima - max_distancia) <= 0.01:\r\n                        # ...gana el punto que esté más cerca del centro de gravedad\r\n                        if mejor_punto is None or pt.DistanceTo(centro_bbox) < mejor_punto.DistanceTo(centro_bbox):\r\n                            mejor_punto = pt\r\n                            max_distancia = distancia_minima\r\n\r\n        if mejor_punto is not None:\r\n            mejores_centros.append(mejor_punto)\r\n            radios_seguros.append(max_distancia)\r\n        else:\r\n            mejores_centros.append(surf.PointAtParameter(0.5, 0.5))\r\n            radios_seguros.append(0)\r\n\r\n    except:\r\n        mejores_centros.append(None)\r\n        radios_seguros.append(0)\r\n\r\nOUT = [mejores_centros, radios_seguros]",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "05f9431ed6974c3cb085eeb96a62c78f",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "f376a27e83cc4d0da992a0a8a185fb37",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b3aea624f4e54620b8d75ae35501059d",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "5b202ea7b3c74445b125c10563f2854a",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "e24502e41d33479fa396c861beb0cf24",
          "Name": "x",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "62d6395940e44e08bdbd71cdbc4f39ff",
          "Name": "",
          "Description": "Value of expression at line 1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "05e80391fe91481dbe6b5244ce064107",
          "Name": "",
          "Description": "Value of expression at line 2",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "x[0];\nx[1];"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "01152bee04fa4aa7aed1f2eb37df9c24",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "95727bed0199499eaf78cc2a33fdce63",
          "Name": "list",
          "Description": "List to flatten.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "21d065a511374859ac167dc668240070",
          "Name": "amount",
          "Description": "Layers of list nesting to remove (-1 will remove all list nestings)\n\nint\nDefault value : -1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "871a04456b654b4584b2688cc7deea6c",
          "Name": "list",
          "Description": "Flattened list by amount",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.Flatten@var[]..[],int",
      "Replication": "Auto",
      "Description": "Flattens a nested list of lists by a certain amount.\n\nList.Flatten (list: var[]..[], amount: int = -1): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "7109e937f4464c7b9d499934428ad9f2",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "15152b0349af4a11a09e1d3bc9050cc0",
          "Name": "centerPoint",
          "Description": "Center point of circle\n\nPoint\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "2ffb6ebbf5b74f0284e0f616b469fd3c",
          "Name": "radius",
          "Description": "Radius\n\ndouble\nDefault value : 1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "90515141f409415bbe3aa51779a55e65",
          "Name": "normal",
          "Description": "Normal direction vector\n\nVector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6ca67b4e66ac4381a6a5764067060c5a",
          "Name": "Circle",
          "Description": "Circle created with center point radius and normal",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Circle.ByCenterPointRadiusNormal@Autodesk.DesignScript.Geometry.Point,double,Autodesk.DesignScript.Geometry.Vector",
      "Replication": "Auto",
      "Description": "Creates a Circle with specified center Point, radius, and normal direction.\n\nCircle.ByCenterPointRadiusNormal (centerPoint: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), radius: double = 1, normal: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)): Circle"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "import clr\r\nclr.AddReference('ProtoGeometry')\r\nfrom Autodesk.DesignScript.Geometry import *\r\n\r\nclr.AddReference('RevitAPI')\r\nfrom Autodesk.Revit.DB import *\r\n\r\ncentros = IN[0]\r\nsuperficies = IN[1]\r\nview_input = UnwrapElement(IN[2])\r\n\r\n# Prevenir error si la vista viene dentro de una lista desde Dynamo\r\nview = view_input[0] if isinstance(view_input, (list, tuple)) else view_input\r\n\r\n# Extraer los vectores ortogonales reales de la vista de Revit\r\nvec_right = Vector.ByCoordinates(view.RightDirection.X, view.RightDirection.Y, view.RightDirection.Z)\r\nvec_up = Vector.ByCoordinates(view.UpDirection.X, view.UpDirection.Y, view.UpDirection.Z)\r\n\r\nif not isinstance(centros, list): centros = [centros]\r\nif not isinstance(superficies, list): superficies = [superficies]\r\n\r\nanchos_w = []\r\naltos_h = []\r\nrectangulos_visuales = []\r\n\r\n# Función robusta para extraer los bordes sin importar el tipo de superficie\r\ndef obtener_bordes(geom):\r\n    curvas = []\r\n    if isinstance(geom, (list, tuple)):\r\n        for g in geom: curvas.extend(obtener_bordes(g))\r\n        return curvas\r\n    try:\r\n        curvas.extend(geom.PerimeterCurves())\r\n    except:\r\n        try:\r\n            for s in geom.Surfaces():\r\n                curvas.extend(s.PerimeterCurves())\r\n        except:\r\n            pass\r\n    return curvas\r\n\r\nfor pt, surf in zip(centros, superficies):\r\n    if pt is None or surf is None:\r\n        anchos_w.append(0)\r\n        altos_h.append(0)\r\n        rectangulos_visuales.append(None)\r\n        continue\r\n\r\n    try:\r\n        # Crear líneas infinitas (cruz ortogonal) desde el punto central\r\n        linea_w = Line.ByStartPointEndPoint(pt.Translate(vec_right, -10000), pt.Translate(vec_right, 10000))\r\n        linea_h = Line.ByStartPointEndPoint(pt.Translate(vec_up, -10000), pt.Translate(vec_up, 10000))\r\n        \r\n        bordes = obtener_bordes(surf)\r\n        \r\n        # Función para medir distancia real a los bordes\r\n        def calcular_dimension(linea, vector_positivo, bordes, centro):\r\n            puntos_corte = []\r\n            for borde in bordes:\r\n                try:\r\n                    cortes = linea.Intersect(borde)\r\n                    if cortes:\r\n                        for c in cortes:\r\n                            if isinstance(c, Point):\r\n                                puntos_corte.append(c)\r\n                except: pass\r\n            \r\n            dist_pos = 10000.0\r\n            dist_neg = 10000.0\r\n            \r\n            for p in puntos_corte:\r\n                dist = centro.DistanceTo(p)\r\n                if dist < 0.01: continue # Ignorar si toca el mismo centro\r\n                \r\n                # Usar producto punto para saber si el corte está hacia \"adelante\" o \"atrás\"\r\n                vec_dir = Vector.ByTwoPoints(centro, p)\r\n                if vec_dir.Dot(vector_positivo) > 0:\r\n                    if dist < dist_pos: dist_pos = dist\r\n                else:\r\n                    if dist < dist_neg: dist_neg = dist\r\n                    \r\n            if dist_pos == 10000.0: dist_pos = 0\r\n            if dist_neg == 10000.0: dist_neg = 0\r\n            \r\n            return dist_pos + dist_neg, dist_pos, dist_neg\r\n\r\n        val_w, w_pos, w_neg = calcular_dimension(linea_w, vec_right, bordes, pt)\r\n        val_h, h_pos, h_neg = calcular_dimension(linea_h, vec_up, bordes, pt)\r\n        \r\n        anchos_w.append(val_w)\r\n        altos_h.append(val_h)\r\n        \r\n        # Dibujar la caja delimitadora (desplazada si el punto original no era el centro exacto del nuevo rectángulo)\r\n        if val_w > 0.1 and val_h > 0.1:\r\n            desfase_w = (w_pos - w_neg) / 2.0\r\n            desfase_h = (h_pos - h_neg) / 2.0\r\n            centro_real = pt.Translate(vec_right, desfase_w).Translate(vec_up, desfase_h)\r\n            \r\n            cs = CoordinateSystem.ByOriginVectors(centro_real, vec_right, vec_up)\r\n            rect = Rectangle.ByWidthLength(cs, val_w, val_h)\r\n            rectangulos_visuales.append(rect)\r\n        else:\r\n            rectangulos_visuales.append(None)\r\n            \r\n    except:\r\n        anchos_w.append(0)\r\n        altos_h.append(0)\r\n        rectangulos_visuales.append(None)\r\n\r\nOUT = [anchos_w, altos_h, rectangulos_visuales]\r\n",
      "Engine": "CPython3",
      "EngineName": "CPython3",
      "VariableInputPorts": true,
      "Id": "2cf34d04ffae4198a68ba17dfc2bc44b",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "9ce88678928045c49154d720f7567e14",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "3a8158533fcf4aa59ad8c4651a09dad3",
          "Name": "IN[1]",
          "Description": "Input #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "abd80921a465413ea07ccd9bc448b823",
          "Name": "IN[2]",
          "Description": "Input #2",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "2cbfcb4e78574406befdb08854daca6f",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "1992db7509f54500be480a5f7e6436b4",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "25ec3a552cdf419592578c140171ce76",
          "Name": "x",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "5117531e117e41d88cd35d4e4ca86213",
          "Name": "",
          "Description": "W",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "084dc20a96274be086ecd23c887fa99d",
          "Name": "",
          "Description": "H",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "609d3bc8d680422f9b8d6bcc2918c5b6",
          "Name": "",
          "Description": "Cajas",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "W = x[0];\nH = x[1];\nCajas = x[2];"
    },
    {
      "ConcreteType": "CoreNodeModels.Watch, CoreNodeModels",
      "WatchWidth": 200.0,
      "WatchHeight": 200.0,
      "Id": "8a820d61ba19462d9a2af2bb1bd9bd7c",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "ece3038059e74c4f8f34c13fbf15f396",
          "Name": "",
          "Description": "Node to show output from",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9fde745cf2254d92bd6a59b70337336c",
          "Name": "",
          "Description": "Node output",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Visualizes a node's output"
    },
    {
      "ConcreteType": "CoreNodeModels.Watch, CoreNodeModels",
      "WatchWidth": 200.0,
      "WatchHeight": 200.0,
      "Id": "30f067f5bc684b26b1a51227d08648ad",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "8d74d9e190cd483989e3ad89870d0eb7",
          "Name": "",
          "Description": "Node to show output from",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "7e62212b45fd4e21a86cb50eef84bbcc",
          "Name": "",
          "Description": "Node output",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Visualizes a node's output"
    },
    {
      "ConcreteType": "CoreNodeModels.Watch, CoreNodeModels",
      "WatchWidth": 200.0,
      "WatchHeight": 200.0,
      "Id": "eb99909b241247a3915348fb2ae0df0f",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "724d7db253d94b1e8c8a46371862ef74",
          "Name": "",
          "Description": "Node to show output from",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e489502e65f14702be7a337c4a9e5567",
          "Name": "",
          "Description": "Node output",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Visualizes a node's output"
    }
  ],
  "Connectors": [
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "33b4e66587a24586b751a6de92388ac2",
      "Id": "97123c95dd384a978019c59829bac11e",
      "IsHidden": "False"
    },
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "4d4b096609a84ca0a25db3bec08b8d81",
      "Id": "4e7d8503a47f4b34aad1aaa137e42b01",
      "IsHidden": "False"
    },
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "302c2e236d8e44889919b602515a73e3",
      "Id": "22e8e5d39a8c470eacb8df6e4e4d7895",
      "IsHidden": "False"
    },
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "6a86b299907d449d925532f870b64ae0",
      "Id": "883992e893a043b597c3e759f8fa53aa",
      "IsHidden": "False"
    },
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "f08fbf4e44fc42498a781c848551dc10",
      "Id": "7f0c8846c736441fb09f15be00758338",
      "IsHidden": "False"
    },
    {
      "Start": "55453aee85614dcb9a64da4afe85f459",
      "End": "abd80921a465413ea07ccd9bc448b823",
      "Id": "6efdaa28e6b6468f8e08af519ec96f39",
      "IsHidden": "False"
    },
    {
      "Start": "b552b4bcb0c347dd8b93a4cb75e4f27f",
      "End": "b7a51d73dff44698846b6bcc325d1e46",
      "Id": "499067fcc72e4c9487a6a86e50f48e25",
      "IsHidden": "False"
    },
    {
      "Start": "f5357346cd5347f68520ef8bb27b0b50",
      "End": "973022cb775043b99f1163e7381da117",
      "Id": "b0da3a98674d4a9ea8de0f4017650964",
      "IsHidden": "False"
    },
    {
      "Start": "f5357346cd5347f68520ef8bb27b0b50",
      "End": "2a0118f6a62f4803bb43b5bf628cc892",
      "Id": "66f49c1e0ac44a76979339cf653cf7d4",
      "IsHidden": "False"
    },
    {
      "Start": "f5357346cd5347f68520ef8bb27b0b50",
      "End": "9f1c1bfe854a4c10add7a4fb946f2887",
      "Id": "0484194d1fb747ee958d9ffe601aa59a",
      "IsHidden": "False"
    },
    {
      "Start": "ec57c197dd2345b4a90d4c60fe971687",
      "End": "4dd039abf6594e48be1d85463e77a565",
      "Id": "ff72e1e2fb584d9bb59e2f653bfb19bf",
      "IsHidden": "False"
    },
    {
      "Start": "eaf4b4c5c4144cf69c2cf20549bfe981",
      "End": "2386327a15d9400cbff01869c51a20ee",
      "Id": "44132ad2cf9a4703b4b7bd0b43a04c83",
      "IsHidden": "False"
    },
    {
      "Start": "573a8b2bed5c43d6a674943065ae5b8a",
      "End": "1e3e7d92c62c4a64bf3d77438bff6d47",
      "Id": "80b044ce43184c7eadc34472588c40ee",
      "IsHidden": "False"
    },
    {
      "Start": "2007184d805c42a0b53eb16e0af97f3e",
      "End": "e5af38a8a3da4e059764e51cddebe916",
      "Id": "a08d2c3b9ac54becae4a71975ecae867",
      "IsHidden": "False"
    },
    {
      "Start": "b255d4079395465f932452256a3f99f3",
      "End": "f4dd0fc18dd24eb2800b87d69b1cc027",
      "Id": "a6faa056a9494be394b9fba944fe626e",
      "IsHidden": "False"
    },
    {
      "Start": "b255d4079395465f932452256a3f99f3",
      "End": "7ad9bad6879e42ca8056e1cdd85fab43",
      "Id": "a2653e8c32bd42cb998b64ed29f825f1",
      "IsHidden": "False"
    },
    {
      "Start": "1ab46272a84f4ca29a6a93bb282882eb",
      "End": "e760534ecd7442559fad9fb2abf6cb56",
      "Id": "30099affe75240328d1f0dd2269869e7",
      "IsHidden": "False"
    },
    {
      "Start": "fbf73edac94546fcb454164f3016172f",
      "End": "10fe43c95a0b4067993f03dc0032ec62",
      "Id": "b17ed2dd4ff84414aeb921fe4d58c235",
      "IsHidden": "False"
    },
    {
      "Start": "1a14c789a9834ba1ba9772fb0621adf3",
      "End": "2bc22cf1918147a499874cda9c0561ab",
      "Id": "91407e47430442bbbb20187bc2de4311",
      "IsHidden": "False"
    },
    {
      "Start": "1a14c789a9834ba1ba9772fb0621adf3",
      "End": "edc7a70a23e246aebd24fb728358013d",
      "Id": "564dd8b45c20420fbd227099fc623980",
      "IsHidden": "False"
    },
    {
      "Start": "a2e898553c7347dba71f55b54690534b",
      "End": "890f62e7fb874bc591a3b905c8cbc85e",
      "Id": "96bf8936253f4805964af142b8da24c4",
      "IsHidden": "False"
    },
    {
      "Start": "7643043143f0418d9da9a938a0f3bc5e",
      "End": "35bc55307e1c490d98c5fb7ae2c4055c",
      "Id": "ad55ebf55b444f00a3cdc1907dac50fc",
      "IsHidden": "False"
    },
    {
      "Start": "431a1a712fb34a0eb46838d71c17584c",
      "End": "36603a214b3a4052bd429b1ec7d8df5a",
      "Id": "b590f290dd154639a0ddc04162360094",
      "IsHidden": "False"
    },
    {
      "Start": "966140a1006c4943a422ba08e00bda5e",
      "End": "09f2be360a6a4ebeb90eccd0a67f7107",
      "Id": "f0001f7976b8470b8739d53f19f98175",
      "IsHidden": "False"
    },
    {
      "Start": "c91a1e1993224dea8462a91c8bbb4c31",
      "End": "b396d60a108448b4b15c46e28e68ccf3",
      "Id": "6efda0c80dae4cb6b4e901bb1fdb421e",
      "IsHidden": "False"
    },
    {
      "Start": "c91a1e1993224dea8462a91c8bbb4c31",
      "End": "3a33b116c16e4e1ca7a6b3dba04e3165",
      "Id": "eeda43fdf2b6448d8e45bd48bfc81e00",
      "IsHidden": "False"
    },
    {
      "Start": "a99eb5d2296c483c80eeab613cc81f74",
      "End": "c683ae829414470ca6e32bbadc3b74c0",
      "Id": "3694dabcc5f74fbbbbdc2ef5bf88b0a9",
      "IsHidden": "False"
    },
    {
      "Start": "d0229d490745418ca106f110143495d8",
      "End": "220fc0333d31434fa60eb4df1d5697bc",
      "Id": "91c76140c94449f1a0701d5bca9fcbc6",
      "IsHidden": "False"
    },
    {
      "Start": "45e8ec4eabdc426ca4cf6b051cc8285c",
      "End": "b821581d16af41509c34d8a366012c8a",
      "Id": "c4ae1781f4634a0fa8cdeac74bf60701",
      "IsHidden": "False"
    },
    {
      "Start": "e7bc2fc92e034c4e956b73dc50f53f2e",
      "End": "bdc97d5ad0f74bd9b866d8a3f89cbf76",
      "Id": "1127569dc4a6407e8f32f28bde84a9a1",
      "IsHidden": "False"
    },
    {
      "Start": "e7bc2fc92e034c4e956b73dc50f53f2e",
      "End": "ed599b9c977e4ece9edc28d10dc0449d",
      "Id": "82ab4f2d58b34871b3b49c40bbb3e1ad",
      "IsHidden": "False"
    },
    {
      "Start": "c0b6a3f9ec554e9897d4fd57e38227bb",
      "End": "ceffd3e807b24ba2a857f1ff18563939",
      "Id": "eaf76fdffc294022aa12699378c37032",
      "IsHidden": "False"
    },
    {
      "Start": "6bbf1083b4034a729b656101e194079c",
      "End": "f8bbd219e24b403a9601d97d3ad34cee",
      "Id": "ce6ec0368c394b8d92afb9a421e73cfa",
      "IsHidden": "False"
    },
    {
      "Start": "4c3bfdcb6a5e4718b72e54b012eae3ac",
      "End": "ed52d15a0b5f4392a1109ef23b460dec",
      "Id": "a056ffaee4444959a141b20c530c34ca",
      "IsHidden": "False"
    },
    {
      "Start": "901bce442e0f425a9f6aad4ccda56a73",
      "End": "771292aceafd45c08448ab5d5d01a0fd",
      "Id": "dc3daf83d7e74541b5f974c1f01b25f9",
      "IsHidden": "False"
    },
    {
      "Start": "838d8bfbf5904623b89c9c3f40b0e979",
      "End": "57056ab5610546dc8a15d79839a9c777",
      "Id": "50c9e058f65a40a896bd7f4876a31424",
      "IsHidden": "False"
    },
    {
      "Start": "b3e34df7c2c24b45ba34cbcf395d8173",
      "End": "3c164c0c38224e14812500b7b871f2b2",
      "Id": "4ce07d2dc38244359d02dd9841402776",
      "IsHidden": "False"
    },
    {
      "Start": "aa3555e924b24b09b78fdf6eeac9be29",
      "End": "5c983cf0d8ae438eb8a559b2ee485716",
      "Id": "4e289782f02a43e0ac987cdf876179a4",
      "IsHidden": "False"
    },
    {
      "Start": "435c0917940645ba94483ba7f9a3ed84",
      "End": "7b2804659db6412a98fedaebbaa8f3ec",
      "Id": "69f5cb39654547b1947d9f43d24b0ad2",
      "IsHidden": "False"
    },
    {
      "Start": "b701438d898f4e93897fed05e694df87",
      "End": "80a2e70a1e4f45a4b126e90e632b1068",
      "Id": "ce035ed74c59410981d21383a7cbc906",
      "IsHidden": "False"
    },
    {
      "Start": "faad5b48e2774e6b92d8689e646a1724",
      "End": "fe5ffc79b9cd4dd69de6a60de26dd10a",
      "Id": "b9c79fdf7e23430b81ae932886b3fcfc",
      "IsHidden": "False"
    },
    {
      "Start": "61e4a7ba7a734a1ca3e3cc0b1a52b4dd",
      "End": "d0f12d07c7844bc38b11a48dc857c66b",
      "Id": "88a0d0b73a474b91a59b08a81c26f57f",
      "IsHidden": "False"
    },
    {
      "Start": "1031134ab16a4cd0877dc8a9a16b422d",
      "End": "cb6e275698d54915af7176d71ee1458b",
      "Id": "f8ab2a0716154d2babf892c4e4079f1c",
      "IsHidden": "False"
    },
    {
      "Start": "6e707f6fa3574ea7bba061fc80cc5ecb",
      "End": "d7db6a3d95cd41afafe9ee3b142fbb0a",
      "Id": "c720eeb384054e0db9feb039e5a821f8",
      "IsHidden": "False"
    },
    {
      "Start": "93302ba9e91844d09221ecd1ba5bc086",
      "End": "912ca2828d06430fb9220479a74d69bb",
      "Id": "015f978a02594fe9a376f687daabc777",
      "IsHidden": "False"
    },
    {
      "Start": "35ab046c05b34473a83e54df21a18c22",
      "End": "b869e7b34e3f4de4a2c096636353e9f6",
      "Id": "693e3aea68734879a818c90f563bd572",
      "IsHidden": "False"
    },
    {
      "Start": "f813ccd480804ef8b81c3d06ae31fc97",
      "End": "b070c20b39484bd29fe912a5dd28be4f",
      "Id": "5d5f38858c804c1ca78f0c262539c0d8",
      "IsHidden": "False"
    },
    {
      "Start": "eff4ff1e337f4d4c86db91667f2deb2a",
      "End": "d72309a46f064603a521c94ed6d6e175",
      "Id": "fac1c807dee94562915ba35c656da5df",
      "IsHidden": "False"
    },
    {
      "Start": "d63a6f589075449bacc5caf480b753ca",
      "End": "45ce967e9ba54242af36f6c2c5bace28",
      "Id": "ab68879bd4594de5b0eadda53383b7be",
      "IsHidden": "False"
    },
    {
      "Start": "e73587368d0c4e8e9313e3cd81717b63",
      "End": "ea180cf7505b40ed9058553c60447564",
      "Id": "108ce9e53e174d58b9965f0ce1d51064",
      "IsHidden": "False"
    },
    {
      "Start": "3a7fd73d85e14706ad603abae860091e",
      "End": "446a99c877ea4d13ab2420c015775ba7",
      "Id": "1020d3bed56b4503973a629c88a18403",
      "IsHidden": "False"
    },
    {
      "Start": "3a7fd73d85e14706ad603abae860091e",
      "End": "9498c627b9804fee8740bd78e7a14671",
      "Id": "a701e7e2697b42889e6a4bc24bebc970",
      "IsHidden": "False"
    },
    {
      "Start": "3a7fd73d85e14706ad603abae860091e",
      "End": "848d2130a60f47dd88529d3c82e55003",
      "Id": "e68bb97e230b455386e0ba2c6380d6eb",
      "IsHidden": "False"
    },
    {
      "Start": "603340acb0484db8b136576ba1d24c7d",
      "End": "cbdb370acb20488b87a31b34f598577f",
      "Id": "9320e822133b422c9aefd6154eb1a010",
      "IsHidden": "False"
    },
    {
      "Start": "603340acb0484db8b136576ba1d24c7d",
      "End": "d2ed3e6efd7147448f8ace1cfaae7ce8",
      "Id": "ee448cc49dc44116ba39692ac9d01f64",
      "IsHidden": "False"
    },
    {
      "Start": "4459734f6b6f4b44b597c4430ae0922e",
      "End": "02f61cae3a4b48148d8dfe57c6c6606d",
      "Id": "cc7b6b39560445fdbc65d8df20fac1b0",
      "IsHidden": "False"
    },
    {
      "Start": "d1c89f75bb344696818b133eee43b3ca",
      "End": "df4cebb85c114af08b32f837e4d4dbe8",
      "Id": "e5bdfbbb37b5431485339c33b2c35cf5",
      "IsHidden": "False"
    },
    {
      "Start": "d1c89f75bb344696818b133eee43b3ca",
      "End": "5aaba89cc0ff4ffda35323a6c8170649",
      "Id": "26bd4cf7db6d45caa7b9cd5cf6988b09",
      "IsHidden": "False"
    },
    {
      "Start": "d1c89f75bb344696818b133eee43b3ca",
      "End": "c5674bd730b046d19e4d7df6de64ca5d",
      "Id": "86c8ec4217b6487895f158af0d65c54b",
      "IsHidden": "False"
    },
    {
      "Start": "d3a87884dc0143aebae464e67ee885e6",
      "End": "e959c4885b904048920851b6fe6257bb",
      "Id": "f33a9a2e93ca4ba2935af160d440b0ee",
      "IsHidden": "False"
    },
    {
      "Start": "d3a87884dc0143aebae464e67ee885e6",
      "End": "90515141f409415bbe3aa51779a55e65",
      "Id": "3a3c551764c246cf81a0ac0a0379b780",
      "IsHidden": "False"
    },
    {
      "Start": "e34fe6157b8a46f68e59185ded580218",
      "End": "b6583c46f70e4281aa076fedd3b7dc7b",
      "Id": "b054f8aea7e041e2a4936555feff1bce",
      "IsHidden": "False"
    },
    {
      "Start": "e34fe6157b8a46f68e59185ded580218",
      "End": "29f6a69d228e4c2296e8d1b539b27a58",
      "Id": "5c4076fd00f84cb8bd33a087fae2a4a5",
      "IsHidden": "False"
    },
    {
      "Start": "e34fe6157b8a46f68e59185ded580218",
      "End": "acc53307ce4f4ab3bb282ea01a692d25",
      "Id": "1b4b2a7738714e0eaf3947d11ebf03ac",
      "IsHidden": "False"
    },
    {
      "Start": "56b2309354ba4a30a2b5604ef57930c2",
      "End": "b9ccd64d701e4465bdc3a936df29bcbc",
      "Id": "b13fcbb97d4d4c5687a30dea26f35e7d",
      "IsHidden": "False"
    },
    {
      "Start": "f98f20184ddc439c9784c65a32183f89",
      "End": "92f678c3ee4649599c6ef5960dc6bb39",
      "Id": "89793c8d53934e62995956d31547280c",
      "IsHidden": "False"
    },
    {
      "Start": "5791c99694ae497b9c6496ee27242611",
      "End": "60d6a5272bde4e7bb8d1361f98214870",
      "Id": "eef414b6f58e4a0aa1f9bb64bb9b3f8d",
      "IsHidden": "False"
    },
    {
      "Start": "8c135afa16e24bdb881111409f2915ea",
      "End": "74171c1a68624230b55ba4533e2b4c51",
      "Id": "2ec6796310764b38af03659ad4d60208",
      "IsHidden": "False"
    },
    {
      "Start": "d4816f7789d1467693611339e35024ad",
      "End": "cc0cdb11401f477d9911f3b0d2c8b9f6",
      "Id": "2aa85f91e09648de867aac285768e3a3",
      "IsHidden": "False"
    },
    {
      "Start": "98c253ce72f14fe2a641c57cca875ae7",
      "End": "2c6e1fceb0c54ec2b3825104dc15385c",
      "Id": "4c61d2bc8e7244818c4f891c6c426212",
      "IsHidden": "False"
    },
    {
      "Start": "98c253ce72f14fe2a641c57cca875ae7",
      "End": "d8455cccd4ad4185b7556c026cb4035f",
      "Id": "5f06d3f63c9b43c78b465a92fe52ad1b",
      "IsHidden": "False"
    },
    {
      "Start": "68baea8485b74549b5b2e7ed9fbabcd0",
      "End": "959947260df544ffa8acf2e2e4ee24c5",
      "Id": "a65ba86ec526474eb9f6bac77a14d28f",
      "IsHidden": "False"
    },
    {
      "Start": "f3ac27421af94b85af8a82de88129807",
      "End": "2c9cbccce2a3478b9278816efba904aa",
      "Id": "31aa88d115ac4827a5f12fc757d2c6ab",
      "IsHidden": "False"
    },
    {
      "Start": "f3ac27421af94b85af8a82de88129807",
      "End": "794c1bb1add04bc0a492677bef83e210",
      "Id": "a88ba1653d69412ba0675c1a818e6286",
      "IsHidden": "False"
    },
    {
      "Start": "f3ac27421af94b85af8a82de88129807",
      "End": "22618849c53e4c059c660fbdcdee9cd7",
      "Id": "390033219bd7422dad905fd463857107",
      "IsHidden": "False"
    },
    {
      "Start": "0a5697bb890c406a8f0784f8b7248b25",
      "End": "751dc9dde6984a6f92ca7c3b2775123d",
      "Id": "298022722c094974b42798b0bf07daa4",
      "IsHidden": "False"
    },
    {
      "Start": "0a5697bb890c406a8f0784f8b7248b25",
      "End": "2de6d71e292a4d85a7f0844365ae20ca",
      "Id": "a8eea8b9a33c4c248e7e1e4be6be84c5",
      "IsHidden": "False"
    },
    {
      "Start": "0a5697bb890c406a8f0784f8b7248b25",
      "End": "66fda2b67e7b4df694d1b087b484825c",
      "Id": "df81d46a5c2646a4b8f504f2b9fd9ec4",
      "IsHidden": "False"
    },
    {
      "Start": "fe9037021ace4cd78ef18ccaa01caa77",
      "End": "5eff1cac0a6d40f08017864b5867cd1b",
      "Id": "9f177dd3705948908bdf25bc1beade24",
      "IsHidden": "False"
    },
    {
      "Start": "fe9037021ace4cd78ef18ccaa01caa77",
      "End": "1c44c0abc8af4286a98886d237940c93",
      "Id": "aac8020b3ed847daae801cd6972b018e",
      "IsHidden": "False"
    },
    {
      "Start": "b46cae0421ca41ef93cc9fc89d8c706f",
      "End": "61d5e98a0b034a7d9c25a9f9678ee0aa",
      "Id": "c14da3b7ad974094a1cf0542935a8aa2",
      "IsHidden": "False"
    },
    {
      "Start": "b46cae0421ca41ef93cc9fc89d8c706f",
      "End": "3281b396af1b4a7aa1e04cd86c3542b3",
      "Id": "4f54919f1f124940bda691e893b32cad",
      "IsHidden": "False"
    },
    {
      "Start": "ccf49a2854cc4383a76a8e9a1520f9ab",
      "End": "7d0bd8708b2243c29db28788d263eecd",
      "Id": "4bdbbd958d3e4978b1dd674b97fe1e54",
      "IsHidden": "False"
    },
    {
      "Start": "ccf49a2854cc4383a76a8e9a1520f9ab",
      "End": "1f61ab11aa994139aec3694affa0c9f1",
      "Id": "78b0e2b19ce34a8da2ecdba838dfff2f",
      "IsHidden": "False"
    },
    {
      "Start": "ccf49a2854cc4383a76a8e9a1520f9ab",
      "End": "8d93581fd4e2435da54bcc0d7f42b1b5",
      "Id": "0f6cde4c627e4972babbcd465d84276b",
      "IsHidden": "False"
    },
    {
      "Start": "96ec5b1770b94001b17cc7212f8e8b95",
      "End": "efbcdeabec4540138b8c19862226b84c",
      "Id": "cfaf38cd4c83455d9dfd9774e1daebb3",
      "IsHidden": "False"
    },
    {
      "Start": "68c20296e03243c28a8aa2d2e987b1cf",
      "End": "d138e399517749fa9193e8e69da0877d",
      "Id": "a3df0359819d47e99dae476ac707a2a8",
      "IsHidden": "False"
    },
    {
      "Start": "68c20296e03243c28a8aa2d2e987b1cf",
      "End": "00c0a9688626414e8206eb9a5197a604",
      "Id": "4c80d9ca137045458ba1f12c9cf93ed9",
      "IsHidden": "False"
    },
    {
      "Start": "b799bb5270df45feb54980291084b645",
      "End": "f53d04264dc44da0b3110a479214cccd",
      "Id": "bffa2f7fee564d39bccd3a508237eafa",
      "IsHidden": "False"
    },
    {
      "Start": "58ea154bc3644f80a25e3bc94dd3dc0e",
      "End": "7e1273db0fe94b8b8fa8e54ba4b0c4d5",
      "Id": "93715b047db044a7bd6dfa8bdff1b61f",
      "IsHidden": "False"
    },
    {
      "Start": "d3c5c025fd314067a7de1d64f94b15d9",
      "End": "f3abffd4549e4470b0d6d92eb4b1c20b",
      "Id": "4b923ad0debe48eaa7797bbb6419d82a",
      "IsHidden": "False"
    },
    {
      "Start": "d3c5c025fd314067a7de1d64f94b15d9",
      "End": "31ef4275dde94528a612d6a25726f17a",
      "Id": "cb1237b15f5942b597bac11e42928bb8",
      "IsHidden": "False"
    },
    {
      "Start": "ff7e4157eb104fcf870ead3c7e25121a",
      "End": "9db5a91c4b2045c39ef546505078d67c",
      "Id": "af4adca60826493281ba12ed7556324c",
      "IsHidden": "False"
    },
    {
      "Start": "9656e5ec153a4bd5b4a481b094d65bfc",
      "End": "608aabdacea4417aa8632e3b35155fa3",
      "Id": "f190df532f0e40fbae62733f424cee5b",
      "IsHidden": "False"
    },
    {
      "Start": "9656e5ec153a4bd5b4a481b094d65bfc",
      "End": "90157004ba4348aaa77d728b81980833",
      "Id": "a7b3994c9220411c9fd67ed9d12a722a",
      "IsHidden": "False"
    },
    {
      "Start": "f53ba7e98a414ad6959b82069c19dfdc",
      "End": "38b8b6b4833149649d8cd199f9bf1dba",
      "Id": "05bb223a5dc64a75aaf9646e935431ca",
      "IsHidden": "False"
    },
    {
      "Start": "eb7320cc64294244a54ee0cc336f1c2c",
      "End": "00ba85cb43294540a6baf6ec98af7248",
      "Id": "f4f8827843504ed5866bd5f390eeaaa7",
      "IsHidden": "False"
    },
    {
      "Start": "8f345b4e95b74b9184990a657f603823",
      "End": "ade3084a22c54e318a73a8f2fc9e6f66",
      "Id": "61b05a6eafb34db5b284423ab118847e",
      "IsHidden": "False"
    },
    {
      "Start": "54b9dc0a31a542deae66cc4e86ce9be9",
      "End": "446dbcf4f38b41a8841e896845834f25",
      "Id": "a73c3631435041f7ba3926468ed46407",
      "IsHidden": "False"
    },
    {
      "Start": "54b9dc0a31a542deae66cc4e86ce9be9",
      "End": "83eeb29651974abf85f3fecdbcad5050",
      "Id": "b5dede36b3a54d68aba2a54708e0f7ae",
      "IsHidden": "False"
    },
    {
      "Start": "6b68fedfc9c445d6955efc9d49698b52",
      "End": "df2476258d204a1e896a116c71255d52",
      "Id": "4932cc2e82fb40949ee9f89464f6bfa0",
      "IsHidden": "False"
    },
    {
      "Start": "087806839a504bd0b83a5a80155f8e81",
      "End": "4f14c69d6d4f4883b16a5cf709b8281b",
      "Id": "59ebad7e9fc74514a5c9342be4cccbf9",
      "IsHidden": "False"
    },
    {
      "Start": "087806839a504bd0b83a5a80155f8e81",
      "End": "b2e466bbd3c34e0da1e5ed5fe7561ffc",
      "Id": "f96c55d66404426fb48b3851d9f1bdd6",
      "IsHidden": "False"
    },
    {
      "Start": "087806839a504bd0b83a5a80155f8e81",
      "End": "4cd8a0cce58140c9aa2ff0c96f53b4ad",
      "Id": "355ad67db1d340149147d39374feae45",
      "IsHidden": "False"
    },
    {
      "Start": "087806839a504bd0b83a5a80155f8e81",
      "End": "a846975cfcd0405f9c091c9878ff32d1",
      "Id": "e8c12e8aa73a4c8f87b96cea8788f9b3",
      "IsHidden": "False"
    },
    {
      "Start": "1155f5db2ddf4cceb46e12effa41d577",
      "End": "126cfd0f7a7243f988195cf1c82acdfe",
      "Id": "853ce0fd9c814641bf11cda7d5bdc622",
      "IsHidden": "False"
    },
    {
      "Start": "1155f5db2ddf4cceb46e12effa41d577",
      "End": "259479e9fe604447b268d02813fce6ec",
      "Id": "2762479c9af141a583eee48cf22ea688",
      "IsHidden": "False"
    },
    {
      "Start": "1155f5db2ddf4cceb46e12effa41d577",
      "End": "12a1b6c161b34fc68f7d976e14e6fa39",
      "Id": "a4f4ef0798594cffa30fcb2cbd12701c",
      "IsHidden": "False"
    },
    {
      "Start": "f6995a98248b4c1bb102a0d715324c46",
      "End": "513b2e907d414aeb91c15b10f7eab378",
      "Id": "7a6baedd5fe5488dbad15d8acd10d43a",
      "IsHidden": "False"
    },
    {
      "Start": "407f4f10e7bf4b5d96861a9d5d90ed5b",
      "End": "7e72ee3306ea429796d58818ebe6397b",
      "Id": "750fd532393748b0b345c198b6de026a",
      "IsHidden": "False"
    },
    {
      "Start": "14e6c3b171484861b2bdfd18ebf9f0f9",
      "End": "48830c96dcdd410e810d18dc8300a306",
      "Id": "1cc929bd10974b1c946c70e028671631",
      "IsHidden": "False"
    },
    {
      "Start": "19ba90c6a13a4a01be87f12f03b18baa",
      "End": "8cc462a4a1e54917bd0ba96e74717110",
      "Id": "0a29e06b1e4d474cac29a370f137b1d5",
      "IsHidden": "False"
    },
    {
      "Start": "19ba90c6a13a4a01be87f12f03b18baa",
      "End": "22d152e590c949be8a09d3099ceaf31a",
      "Id": "7c074a0a32fa409f982192f82906dcca",
      "IsHidden": "False"
    },
    {
      "Start": "7b3fcaf98ae24ac19f052c105d4eac75",
      "End": "2ddd913b066f4aab9fd8965e803206c4",
      "Id": "e31cade631ed4037bebea888365f7700",
      "IsHidden": "False"
    },
    {
      "Start": "685d2c0b3b404f6d925bf517f989e1fd",
      "End": "86547a162285465a8c0f5052fc5d170e",
      "Id": "7edf756ea47747408d256649e5b3bae6",
      "IsHidden": "False"
    },
    {
      "Start": "685d2c0b3b404f6d925bf517f989e1fd",
      "End": "67e92479590647c5b5383088cbb9840e",
      "Id": "4b1673bb3e8a49c48c73a78e5383a37b",
      "IsHidden": "False"
    },
    {
      "Start": "e088a9838b8a4feab8cf80666a32a011",
      "End": "f52c226e56da47419ef5cf96e9d2d5bf",
      "Id": "abf976afba824608bb978908782a1efe",
      "IsHidden": "False"
    },
    {
      "Start": "e088a9838b8a4feab8cf80666a32a011",
      "End": "3a8586759f9c4cbaa293cd15016214a5",
      "Id": "649d1d6670334d738109b18892ff452d",
      "IsHidden": "False"
    },
    {
      "Start": "e088a9838b8a4feab8cf80666a32a011",
      "End": "5f7102e0526c4519be8c4b867a39fdf0",
      "Id": "2523f8b5c1e44d1387e98e5af845a780",
      "IsHidden": "False"
    },
    {
      "Start": "91e5f37e47fd4d86aa5bdd29aee34e48",
      "End": "705bce68433b428c9f5e477954da7f56",
      "Id": "94fe5fb3c20d4f3d960d4c0375887082",
      "IsHidden": "False"
    },
    {
      "Start": "d0fda6d8e88240448b260476f3860b6e",
      "End": "5f9d8990da384562ab2271cf71bdee8a",
      "Id": "be2aa3c376fd4b3c97f2f6abd47850a3",
      "IsHidden": "False"
    },
    {
      "Start": "d0fda6d8e88240448b260476f3860b6e",
      "End": "7a878200ee3b4531b566583291e201c5",
      "Id": "856a81f025514581a98a032950fa15dc",
      "IsHidden": "False"
    },
    {
      "Start": "9fb0f76468784e4789a7e7939b49d346",
      "End": "701f8c083f834c8f835af4725bcfd1f2",
      "Id": "2f4e2e035e5b4e849eb8925be0ad217a",
      "IsHidden": "False"
    },
    {
      "Start": "9fb0f76468784e4789a7e7939b49d346",
      "End": "facedded525943f5b0d0b6d813142864",
      "Id": "4c20efb495f1495b8db871f2f6c175b6",
      "IsHidden": "False"
    },
    {
      "Start": "0ba5eca5f64741958da47d2ca55ad3b5",
      "End": "a03808c47ce74a10b579bedb939fc0b4",
      "Id": "138b1afe529544a39781586381cc48e8",
      "IsHidden": "False"
    },
    {
      "Start": "475d79ff3b394463a455c7900cdb37ed",
      "End": "2ffd7cbac30d45e69166da04df447bc2",
      "Id": "9cac1fd3a04c49a68ca9d48a442f6e47",
      "IsHidden": "False"
    },
    {
      "Start": "0f9a388344714fed95a6b30bac96b157",
      "End": "348ac74903ee48a091c707b0642bf34e",
      "Id": "2009e196cba946c195688db0c51c0680",
      "IsHidden": "False"
    },
    {
      "Start": "9f48462b6d1440bea6296b0d76227506",
      "End": "f4db2b536cef4e0795a61990bb5d6421",
      "Id": "54db53b6834f44b080c0d70fc85da9f3",
      "IsHidden": "False"
    },
    {
      "Start": "26d284bcfef34250a86e91e005f1300e",
      "End": "a00dd303dcc847f5b0d59f066b6b337f",
      "Id": "66c77e158fb0432c9bd1fbff5a274492",
      "IsHidden": "False"
    },
    {
      "Start": "26d284bcfef34250a86e91e005f1300e",
      "End": "9ef4525d17cc4e6b8a0a502f4b34617a",
      "Id": "a52719a92fbc402a89eccd98996ae944",
      "IsHidden": "False"
    },
    {
      "Start": "9b546461a45049b8934cb5c7583b9eb3",
      "End": "f2a3aebfc8e5400dbace1d14b5be3c1a",
      "Id": "0fab409a14e74bf4afb19f1d019e44d5",
      "IsHidden": "False"
    },
    {
      "Start": "49f7df23491a481891efa7a6c891fb6c",
      "End": "3f4c68ea7c5b40f79005158ec089fb34",
      "Id": "5025f7cdd2ea4ae6a5a33f3c70ade31e",
      "IsHidden": "False"
    },
    {
      "Start": "862e4ba920c14845b282484f12ce8a25",
      "End": "0df756bc2eb348d4a7896c1b30260f3d",
      "Id": "d9e34a4759704f5b89349ee2ff02cb82",
      "IsHidden": "False"
    },
    {
      "Start": "f03c18907d2049c590491119baaa6a22",
      "End": "6c4bbadb69e84286b737f5807ccad865",
      "Id": "7a6025f8456243f188e28d749ab1eedf",
      "IsHidden": "False"
    },
    {
      "Start": "f6a4feb1839c452a8e42a26b5f29b3a0",
      "End": "95727bed0199499eaf78cc2a33fdce63",
      "Id": "8f40f52a863349cb87ea25659ad53355",
      "IsHidden": "False"
    },
    {
      "Start": "b3aea624f4e54620b8d75ae35501059d",
      "End": "e24502e41d33479fa396c861beb0cf24",
      "Id": "1f53e932aa604ff18c5517eb578c6980",
      "IsHidden": "False"
    },
    {
      "Start": "62d6395940e44e08bdbd71cdbc4f39ff",
      "End": "15152b0349af4a11a09e1d3bc9050cc0",
      "Id": "85002ff33ace4b06b5e7d866f69bcdfe",
      "IsHidden": "False"
    },
    {
      "Start": "62d6395940e44e08bdbd71cdbc4f39ff",
      "End": "9ce88678928045c49154d720f7567e14",
      "Id": "8cee5d273a984c6aa79e4db96968841d",
      "IsHidden": "False"
    },
    {
      "Start": "05e80391fe91481dbe6b5244ce064107",
      "End": "2ffb6ebbf5b74f0284e0f616b469fd3c",
      "Id": "88bdefc191714c03bc50db07eba43695",
      "IsHidden": "False"
    },
    {
      "Start": "871a04456b654b4584b2688cc7deea6c",
      "End": "f376a27e83cc4d0da992a0a8a185fb37",
      "Id": "b823b7d4c05c484b9c62d729d36eb555",
      "IsHidden": "False"
    },
    {
      "Start": "871a04456b654b4584b2688cc7deea6c",
      "End": "3a8158533fcf4aa59ad8c4651a09dad3",
      "Id": "42611566942b4294a138cb778b44e9e6",
      "IsHidden": "False"
    },
    {
      "Start": "2cbfcb4e78574406befdb08854daca6f",
      "End": "25ec3a552cdf419592578c140171ce76",
      "Id": "350d84534a074378979d6b56ae955847",
      "IsHidden": "False"
    },
    {
      "Start": "5117531e117e41d88cd35d4e4ca86213",
      "End": "ece3038059e74c4f8f34c13fbf15f396",
      "Id": "c1eb1a55985e40479e5db61731b5d8f3",
      "IsHidden": "False"
    },
    {
      "Start": "084dc20a96274be086ecd23c887fa99d",
      "End": "8d74d9e190cd483989e3ad89870d0eb7",
      "Id": "ccae7e83e3e2497fa1be775732bebceb",
      "IsHidden": "False"
    },
    {
      "Start": "609d3bc8d680422f9b8d6bcc2918c5b6",
      "End": "724d7db253d94b1e8c8a46371862ef74",
      "Id": "e3e9254e802a43b4bbf3e0ba69c86100",
      "IsHidden": "False"
    }
  ],
  "Dependencies": [
    "e099f46f-fcca-475d-9733-410ca033a00d"
  ],
  "NodeLibraryDependencies": [
    {
      "Name": "Clockwork for Dynamo 3.x",
      "Version": "3.3.0",
      "ReferenceType": "Package",
      "Nodes": [
        "f373a7c975ff42edadade9ad3876dea7"
      ]
    }
  ],
  "Thumbnail": "",
  "GraphDocumentationURL": null,
  "ExtensionWorkspaceData": [
    {
      "ExtensionGuid": "28992e1d-abb9-417f-8b1b-05e053bee670",
      "Name": "Properties",
      "Version": "2.17",
      "Data": {}
    },
    {
      "ExtensionGuid": "DFBD9CC0-DB40-457A-939E-8C8555555A9D",
      "Name": "Generative Design",
      "Version": "4.0",
      "Data": {}
    }
  ],
  "Author": "",
  "Linting": {
    "activeLinter": "None",
    "activeLinterId": "7b75fb44-43fd-4631-a878-29f4d5d8399a",
    "warningCount": 0,
    "errorCount": 0
  },
  "Bindings": [],
  "View": {
    "Dynamo": {
      "ScaleFactor": 100.0,
      "HasRunWithoutCrash": true,
      "IsVisibleInDynamoLibrary": true,
      "Version": "2.18.1.5096",
      "RunType": "Manual",
      "RunPeriod": "1000"
    },
    "Camera": {
      "Name": "_Background Preview",
      "EyeX": -12243.56640625,
      "EyeY": 1571.6796875,
      "EyeZ": -1534.878173828125,
      "LookX": 17106.607421875,
      "LookY": -319.775390625,
      "LookZ": -179.071044921875,
      "UpX": -0.19592186808586121,
      "UpY": 0.9806174635887146,
      "UpZ": 0.0020077547524124384
    },
    "ConnectorPins": [],
    "NodeViews": [
      {
        "Id": "b7ea293ad7a141bbb4aef7ee294bce88",
        "Name": "Views",
        "IsSetAsInput": true,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -3291.9572068440166,
        "Y": 503.26382059614355
      },
      {
        "Id": "d4e924fb58544c93aed40d3589a5d084",
        "Name": "Element Classes",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -17.298792904416132,
        "Y": 2047.7866428469993
      },
      {
        "Id": "d6090c54e36a4ce2832a4a0946a93d5e",
        "Name": "All Elements of Class",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 321.71105195188829,
        "Y": 2047.2704898632683
      },
      {
        "Id": "401c2e0990184e438858e5e6e40d6bef",
        "Name": "Element.GetParameterValueByName",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1080.0689034594143,
        "Y": 2036.5887739179757
      },
      {
        "Id": "19cb1b3bb82f4efe8f02becc2b1c9206",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 766.62967040113926,
        "Y": 2068.245099836462
      },
      {
        "Id": "e7a8a2d43dc941deb66ec1e9c05aaf32",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 778.62967040113926,
        "Y": 2251.1481649948018
      },
      {
        "Id": "8190b35357fd4956a0132302a2b1d79e",
        "Name": "Element.GetParameterValueByName",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1075.1920000025252,
        "Y": 2212.8770005555243
      },
      {
        "Id": "2c10f11d9ff34612b48f7ca2cdfa38ce",
        "Name": "==",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1807.1981425693568,
        "Y": 2196.9561116740042
      },
      {
        "Id": "dd306ccd75e94f91b5d420bc9252c0e7",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1588.8592439383654,
        "Y": 2228.6559841437825
      },
      {
        "Id": "d3889c5d8a87410b94e0bbf0119a84a9",
        "Name": "Select Horizontal Text Alignment",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 4681.3048624578041,
        "Y": 198.66465788529536
      },
      {
        "Id": "fc4dc95a4ab14e49aa1e2b197915c663",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 5901.2740655918315,
        "Y": 290.23623626432641
      },
      {
        "Id": "fa04a4d953fe43a18b3e15b27c3dd0ea",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2020.0878665244618,
        "Y": 2024.1643609618918
      },
      {
        "Id": "b33d208490a342d6a814b808790e02be",
        "Name": "List.IndexOf",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 4810.2822146248118,
        "Y": 335.96142009344885
      },
      {
        "Id": "83504a64b4704957970787f4d38aff74",
        "Name": "List.GetItemAtIndex",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 5083.8245882921283,
        "Y": 233.64767219566079
      },
      {
        "Id": "b8e05841d6b64dcb84cc4359c5948ac5",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2018.510482609367,
        "Y": 2196.9561116740042
      },
      {
        "Id": "bfd9cecf4e854d0280cb9c98b34fb177",
        "Name": "List.SortByKey",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3171.6223730857164,
        "Y": 1994.8012637966954
      },
      {
        "Id": "c10c192ace0a4bd6b8e957b370be493f",
        "Name": "View.Scale",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3849.0783440470873,
        "Y": 260.29454599500042
      },
      {
        "Id": "ca7da37ed4b444f1b8c54b30021ecfed",
        "Name": "Element.Name",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3485.8517331524754,
        "Y": -322.37050144601494
      },
      {
        "Id": "f8fe39267e3744c593154b2789cb459b",
        "Name": "Element.ElementType",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3090.1360484560723,
        "Y": -284.73194754736869
      },
      {
        "Id": "6e3503bc5a6740e0821027b81b1eaa31",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2338.5688797712569,
        "Y": 2057.5727561235863
      },
      {
        "Id": "6e48e643ce484003be5c4ced1d47cc80",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2816.1076186367691,
        "Y": 2025.9268432844701
      },
      {
        "Id": "5fad5faf12c740a3ad77b9ec45a1b6cd",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2815.836580789357,
        "Y": 2196.9561116740042
      },
      {
        "Id": "e93e11215bd24ec28c6e0fa4d1a8e3bb",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3995.5919960586371,
        "Y": -312.80681499640173
      },
      {
        "Id": "3649e27a8a734747ac21f58169472705",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 4416.5878557218275,
        "Y": 183.87646821307544
      },
      {
        "Id": "7e97348ae7b24e3a92ad7839da97ba40",
        "Name": "<=",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2547.0528725762128,
        "Y": -447.61600878747527
      },
      {
        "Id": "394fb927e2fc4112a1043147152778d9",
        "Name": "If",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2999.5597857566654,
        "Y": -433.7464284361688
      },
      {
        "Id": "d1d647d7dfb04605b958c20ca6033556",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2793.5213958585764,
        "Y": -401.99507343242453
      },
      {
        "Id": "b990f74e87ee4f5e978800e1a5dcae98",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2793.5213958585764,
        "Y": -278.00715052148757
      },
      {
        "Id": "f373a7c975ff42edadade9ad3876dea7",
        "Name": "Element.Geometry+",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -1047.27483861444,
        "Y": -690.297828210468
      },
      {
        "Id": "c1515016a5474f089057d6d3464eddf8",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 5643.2619464439358,
        "Y": 365.69017477522021
      },
      {
        "Id": "6edd5772a63142afa9c6cea900a49cf4",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -1941.0424737807757,
        "Y": -326.26462013968171
      },
      {
        "Id": "2f6758f5388448cc92dcfba05da931f6",
        "Name": "Categories",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2922.1827376635597,
        "Y": 200.99508841531042
      },
      {
        "Id": "7fa5fb6fae3e4c51ad698c3dc8dff5ca",
        "Name": "Categories",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2917.1353897951944,
        "Y": -21.382760802843222
      },
      {
        "Id": "31c362758b25446bb51c89c330f3f1fb",
        "Name": "Categories",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2918.7682341576096,
        "Y": 89.639315360514274
      },
      {
        "Id": "01ce1b69bb9842919dfcb959d9ea7599",
        "Name": "Categories",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2914.9840610413853,
        "Y": -138.67123719346705
      },
      {
        "Id": "b31605dfe1344cbc8b23a268fd9fe8c1",
        "Name": "Element.GetCategory",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2521.0940913336258,
        "Y": -211.23566462487042
      },
      {
        "Id": "232ac197dbd64f10938fe017a5bf34d7",
        "Name": "List.Contains",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2189.4916814839203,
        "Y": -212.10512104733266
      },
      {
        "Id": "df8dfe8421954b43bf7440ea7d400cec",
        "Name": "List Create",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2473.6199177022468,
        "Y": -82.984688826651791
      },
      {
        "Id": "a2f36737fc1343ddbe3fcc08ef869795",
        "Name": "List.Flatten",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -1640.744279379041,
        "Y": -326.33669152613425
      },
      {
        "Id": "7447bab2b7764ba69f8c4ce7d175fb13",
        "Name": "View.Origin",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 126.10415128228442,
        "Y": 357.12726082667041
      },
      {
        "Id": "86d1f5863e3a475395c998099b84e89a",
        "Name": "List Create",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 371.91909419963076,
        "Y": -35.163904388303536
      },
      {
        "Id": "ab34fbb988ca44388a740738d076334a",
        "Name": "List.Transpose",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 597.81228494838751,
        "Y": 68.068889497998271
      },
      {
        "Id": "f644c567b91c4ecea5a44dcd5e9a87bd",
        "Name": "View.ViewDirection",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 90.195488276623564,
        "Y": 134.82601973781516
      },
      {
        "Id": "dfb776d55987487fb82e8371552e0f11",
        "Name": "BoundingBox.ByMinimumVolume",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -203.27478262577051,
        "Y": -1041.3047499454542
      },
      {
        "Id": "fb71f2714cc444d88a5ae42917d2ba5c",
        "Name": "FamilyInstance.FacingOrientation",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -210.03670976197418,
        "Y": -766.850025740853
      },
      {
        "Id": "662c363b1b5846459aa0f8e96cac0df9",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1680.9575326459048,
        "Y": -872.1300411608679
      },
      {
        "Id": "95973a3fa68744bfade7fd8f7348ed08",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1671.8098831632947,
        "Y": -1187.8868863602356
      },
      {
        "Id": "c6a7dca677ea424388605f56c2867ffa",
        "Name": "If",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1357.7969022200548,
        "Y": -839.473730061052
      },
      {
        "Id": "74f17e75c2ee44b0842a34980889903e",
        "Name": "If",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1357.3254611452749,
        "Y": -1040.5465490202309
      },
      {
        "Id": "7e2f2b5f70be40ef94101394bdf0a34b",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 667.34143552811383,
        "Y": -648.09933373635181
      },
      {
        "Id": "625bb25192c6451890ad92216d308a91",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 221.06987011019487,
        "Y": -652.24348129889381
      },
      {
        "Id": "6ffd4186b45c47288f10561169ab2193",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 767.22633763019485,
        "Y": -1043.8500110248428
      },
      {
        "Id": "7591aa87e98f40428b862068202e5e87",
        "Name": "BoundingBox.MinPoint",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 387.052970548777,
        "Y": -983.89794365923876
      },
      {
        "Id": "785309d7d9dc441280686819736db83b",
        "Name": "Point.Y",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2295.3220734544548,
        "Y": -1036.7192883890525
      },
      {
        "Id": "96780185f17d48918943b6a25717ba3f",
        "Name": "BoundingBox.MaxPoint",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 387.33443263344725,
        "Y": -1145.0125117233229
      },
      {
        "Id": "cccf102e2d3440fdb26ca3aafe7b5aed",
        "Name": "Solid.Centroid",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1675.8765744061247,
        "Y": -1045.9636990445197
      },
      {
        "Id": "f897c365b2234df89b993f6a6a63a459",
        "Name": "BoundingBox.ToCuboid",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1325.8102697391494,
        "Y": -1207.8938011701598
      },
      {
        "Id": "f69e8b071004497fb772dcadff8d57d9",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 965.6764826813112,
        "Y": 332.14608653092751
      },
      {
        "Id": "8fac1a1d50b34654a64ee3052a576c6a",
        "Name": "Point.Z",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 397.63262864445778,
        "Y": 376.56360863487362
      },
      {
        "Id": "d04fdaa73c224c49bed531350714f727",
        "Name": "List.MinimumItem",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1393.9987020791502,
        "Y": 335.95743185078595
      },
      {
        "Id": "c5eb12805fd74969abcfbafc21d8a573",
        "Name": "==",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1650.3822442142762,
        "Y": 336.46792824439876
      },
      {
        "Id": "00b81ed400fa4d03b5e3b657de9fa754",
        "Name": "BoundingBox.ByCorners",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2919.4887798115183,
        "Y": 386.201421022227
      },
      {
        "Id": "716b3a807e3041ff975726ffa66ba7cd",
        "Name": "List.GetItemAtIndex",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2381.8183824138532,
        "Y": 197.8178213197175
      },
      {
        "Id": "ce563d22ff4e4495a909ced54cdd0181",
        "Name": "List.IndexOf",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2066.4266242552158,
        "Y": 224.43288414062931
      },
      {
        "Id": "ecd8a021dabe488d90d0af6f82245868",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1858.3307886907999,
        "Y": 341.34988537647484
      },
      {
        "Id": "6adac5686dd94c9cad558749f61c37da",
        "Name": "List.IndexOf",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 2082.0478787386892,
        "Y": 463.5669550605985
      },
      {
        "Id": "9519578e652448ffb62d47a53ce1d504",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 1842.4971621670836,
        "Y": 494.1424801606297
      },
      {
        "Id": "1cd63e851c5d4b5a8009b6f1a4c0cb2c",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 814.04819660572957,
        "Y": 144.10517025563468
      },
      {
        "Id": "93cab830afac41559cb1a5cd916d0c41",
        "Name": "List.GetItemAtIndex",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2484.1384643059559,
        "Y": 436.57250217699561
      },
      {
        "Id": "df7639cbf29141a7bc42dd2ca52e4dc0",
        "Name": "BoundingBox.ToCuboid",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3261.2303201211,
        "Y": 389.55135880367641
      },
      {
        "Id": "cf6139748d034457922e601d2244b3dc",
        "Name": "Plane.ByOriginNormal",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 618.75970974335814,
        "Y": 445.68687745682058
      },
      {
        "Id": "229138e7945a4f29b42b7e84bc5dbd40",
        "Name": "Geometry.ClosestPointTo",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2707.3225349295908,
        "Y": -0.15811011473647341
      },
      {
        "Id": "5ac81f9fb3b34203a4abff798a1fb7c6",
        "Name": "List.GetItemAtIndex",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2357.7931092847489,
        "Y": 31.777998028286902
      },
      {
        "Id": "4ca4b1feae584d5d82be086d11ed8fba",
        "Name": "Geometry.DoesIntersect",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3928.1554688063952,
        "Y": 1296.6777247104183
      },
      {
        "Id": "e57eaae792c7419bb52b8392008cebb0",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4343.0671905722147,
        "Y": 1444.3552371496899
      },
      {
        "Id": "f146c724b05c4b2fba1f89b461eb57ed",
        "Name": "Solid.DifferenceAll",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5401.6944752974332,
        "Y": 1222.5018829494504
      },
      {
        "Id": "537b7999a5d84e71aba9887fe4d04aa5",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": -2750.7618161242854,
        "Y": -363.4723065578479
      },
      {
        "Id": "acba1fcae9ca446aae55245ff664be80",
        "Name": "List.IsEmpty",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 4718.2787439457679,
        "Y": 1578.8173429280425
      },
      {
        "Id": "a75c48051e46408e8e8cf8c2bd8b5ab8",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4991.0813469152172,
        "Y": 1433.6707783117356
      },
      {
        "Id": "3462863a20994cd4994f7db326b20868",
        "Name": "Geometry.DistanceTo",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3099.0633872745975,
        "Y": 1309.7318788913283
      },
      {
        "Id": "16d0467ad3c54e84a021c60d53ac5ae1",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3625.0762390450195,
        "Y": 1293.399582228805
      },
      {
        "Id": "f43fae76abbc4413af33a10774b57a42",
        "Name": ">",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 3385.4317077972814,
        "Y": 1325.6963881417453
      },
      {
        "Id": "5037dfb9f620419d9a5fed75c37277b0",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4995.482852520222,
        "Y": 1193.3935426893356
      },
      {
        "Id": "26932b43334040578f6c6cf5e8798995",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5394.3884683009883,
        "Y": 1673.5442119786621
      },
      {
        "Id": "1f3500a8490f4fe68fca351c300ae1f7",
        "Name": "List Create",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5822.8502825503856,
        "Y": 1240.3393744054831
      },
      {
        "Id": "c01e38000a074625b5fab913363311ef",
        "Name": "Geometry.Intersect",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6300.2873280881895,
        "Y": 1243.5751529956622
      },
      {
        "Id": "da4b35fb0db04b3db854d6ca8e775b8c",
        "Name": "List.FilterByBoolMask",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6933.7981892234366,
        "Y": 1244.7227153480512
      },
      {
        "Id": "002de16915b2409e80169b829d0465e4",
        "Name": "List.IsEmpty",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6676.1689115710142,
        "Y": 1394.1906513727524
      },
      {
        "Id": "f6511ff9eef147d6a898282ff5f2bee9",
        "Name": "Watch",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 7328.4288552553016,
        "Y": 1276.564897278379
      },
      {
        "Id": "695ab94d5c434c099fa849a0a37bee08",
        "Name": "List.Flatten",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6032.857859512651,
        "Y": 1240.6442540047472
      },
      {
        "Id": "195154f7873844a1a7912957772f8935",
        "Name": "List Create",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 7670.8765047735833,
        "Y": 1271.306585927867
      },
      {
        "Id": "05f9431ed6974c3cb085eeb96a62c78f",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8119.9024698968151,
        "Y": 1365.0038041817629
      },
      {
        "Id": "5b202ea7b3c74445b125c10563f2854a",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8345.4322967513854,
        "Y": 1361.3142833531781
      },
      {
        "Id": "01152bee04fa4aa7aed1f2eb37df9c24",
        "Name": "List.Flatten",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 7873.3194164092956,
        "Y": 1276.8848357460747
      },
      {
        "Id": "7109e937f4464c7b9d499934428ad9f2",
        "Name": "Circle.ByCenterPointRadiusNormal",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8648.3537298431747,
        "Y": 1292.0932647740528
      },
      {
        "Id": "2cf34d04ffae4198a68ba17dfc2bc44b",
        "Name": "Python Script",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8671.4830700986913,
        "Y": 994.18310050729679
      },
      {
        "Id": "1992db7509f54500be480a5f7e6436b4",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8948.85794283261,
        "Y": 995.63140765762387
      },
      {
        "Id": "8a820d61ba19462d9a2af2bb1bd9bd7c",
        "Name": "Watch",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9261.97165972814,
        "Y": 778.49823754132808
      },
      {
        "Id": "30f067f5bc684b26b1a51227d08648ad",
        "Name": "Watch",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9261.0140759308033,
        "Y": 1067.1186366539137
      },
      {
        "Id": "eb99909b241247a3915348fb2ae0df0f",
        "Name": "Watch",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9258.531043339377,
        "Y": 1329.900046630308
      }
    ],
    "Annotations": [
      {
        "Id": "e8dfd83c487b48ccbe8d479456652fe1",
        "Title": "Equipment Parameters",
        "DescriptionText": "<Double click here to edit group description>",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "Nodes": [
          "f897c365b2234df89b993f6a6a63a459",
          "cccf102e2d3440fdb26ca3aafe7b5aed",
          "96780185f17d48918943b6a25717ba3f",
          "785309d7d9dc441280686819736db83b",
          "7591aa87e98f40428b862068202e5e87",
          "6ffd4186b45c47288f10561169ab2193",
          "625bb25192c6451890ad92216d308a91",
          "7e2f2b5f70be40ef94101394bdf0a34b",
          "74f17e75c2ee44b0842a34980889903e",
          "c6a7dca677ea424388605f56c2867ffa",
          "95973a3fa68744bfade7fd8f7348ed08",
          "662c363b1b5846459aa0f8e96cac0df9",
          "fb71f2714cc444d88a5ae42917d2ba5c",
          "dfb776d55987487fb82e8371552e0f11"
        ],
        "HasNestedGroups": false,
        "Left": -220.03670976197418,
        "Top": -1280.29380117016,
        "Width": 2725.3587832164289,
        "Height": 775.19446743380809,
        "FontSize": 36.0,
        "GroupStyleId": "00000000-0000-0000-0000-000000000000",
        "InitialTop": -1207.8938011701598,
        "InitialHeight": 704.79446743380822,
        "TextblockHeight": 62.4,
        "Background": "#FF48B9FF"
      },
      {
        "Id": "062616ef3a644d02b732573c2c23c037",
        "Title": "Title <Double click here to edit group title>",
        "DescriptionText": "Description <Double click here to edit group description>",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "Nodes": [
          "d4e924fb58544c93aed40d3589a5d084",
          "d6090c54e36a4ce2832a4a0946a93d5e",
          "401c2e0990184e438858e5e6e40d6bef",
          "19cb1b3bb82f4efe8f02becc2b1c9206",
          "e7a8a2d43dc941deb66ec1e9c05aaf32",
          "8190b35357fd4956a0132302a2b1d79e",
          "2c10f11d9ff34612b48f7ca2cdfa38ce",
          "dd306ccd75e94f91b5d420bc9252c0e7",
          "fa04a4d953fe43a18b3e15b27c3dd0ea",
          "b8e05841d6b64dcb84cc4359c5948ac5",
          "bfd9cecf4e854d0280cb9c98b34fb177",
          "6e3503bc5a6740e0821027b81b1eaa31",
          "6e48e643ce484003be5c4ced1d47cc80",
          "5fad5faf12c740a3ad77b9ec45a1b6cd"
        ],
        "HasNestedGroups": false,
        "Left": -27.298792904416132,
        "Top": 1922.4012637966953,
        "Width": 3429.7211659901327,
        "Height": 460.54690119810675,
        "FontSize": 36.0,
        "GroupStyleId": "00000000-0000-0000-0000-000000000000",
        "InitialTop": 1994.8012637966954,
        "InitialHeight": 401.34690119810648,
        "TextblockHeight": 62.4,
        "Background": "#FFC1D676"
      }
    ],
    "X": 307.64360472982673,
    "Y": 306.22934820396574,
    "Zoom": 0.13927773829199458
  }
}