diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..de2ac8c4 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 90f603b589b746f1bf9a6db14ec3a4d2 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json b/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json new file mode 100644 index 00000000..62a96fd9 --- /dev/null +++ b/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json @@ -0,0 +1 @@ +{"graphs": [{"id": "172743785201312", "nodes": [{"name": "New Graph Node", "id": "node_172743785201331", "instanceName": "sub_1", "twoColumn": true, "interfaces": [{"name": "cs_s1_int_const_in", "id": "ni_172743785201324", "direction": "input", "side": "left"}, {"name": "cs_s1_mod_in_1", "id": "ni_172743785201325", "direction": "input", "side": "left"}, {"name": "cs_s1_empty_in", "id": "ni_172743785201326", "direction": "input", "side": "left"}, {"name": "cs_s1_int_out_1", "id": "ni_172743785201327", "direction": "output", "side": "right"}, {"name": "cs_s1_int_out_2", "id": "ni_172743785201328", "direction": "output", "side": "right"}, {"name": "cs_s1_empty_out", "id": "ni_172743785201329", "direction": "output", "side": "right"}], "properties": [], "subgraph": "172743785201330"}, {"name": "New Graph Node", "id": "node_172743785201336", "instanceName": "sub_2", "twoColumn": true, "interfaces": [{"name": "cs_s2_int_in_2", "id": "ni_172743785201332", "direction": "input", "side": "left"}, {"name": "cs_s2_int_in_1", "id": "ni_172743785201333", "direction": "input", "side": "left"}, {"name": "cs_s2_mod_out_1", "id": "ni_172743785201334", "direction": "output", "side": "right"}], "properties": [], "subgraph": "172743785201335"}, {"name": "Constant", "id": "node_172743785201350", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_172743785201349", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "172743785201348", "value": "1"}]}, {"name": "Subgraph port", "id": "node_172743785201339", "instanceName": "complex_sub cs_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201337", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_17274378520139", "direction": "input", "side": "left", "externalName": "cs_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201342", "instanceName": "complex_sub cs_empty_port_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201340", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201310", "direction": "input", "side": "left", "externalName": "cs_empty_port_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201345", "instanceName": "complex_sub cs_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201311", "direction": "output", "side": "right", "externalName": "cs_out_1"}, {"name": "subgraph in", "id": "ni_172743785201344", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "172743785201346", "from": "ni_172743785201327", "to": "ni_172743785201333"}, {"id": "172743785201347", "from": "ni_172743785201328", "to": "ni_172743785201332"}, {"id": "172743785201351", "from": "ni_172743785201349", "to": "ni_172743785201324"}, {"id": "172743785201352", "from": "ni_172743785201325", "to": "ni_172743785201337"}, {"id": "172743785201353", "from": "ni_172743785201334", "to": "ni_172743785201344"}]}, {"id": "172743785201330", "nodes": [{"name": "s1_mod_1", "id": "node_172743785201357", "instanceName": "s1_mod_1", "twoColumn": true, "interfaces": [{"name": "cs_s1_f_ext_const_in", "id": "ni_172743785201354", "direction": "input", "side": "left"}, {"name": "cs_s1_mint_out_1", "id": "ni_172743785201355", "direction": "output", "side": "right"}, {"name": "cs_s1_f_mod_in_1", "id": "ni_172743785201356", "direction": "input", "side": "left"}], "properties": []}, {"name": "s1_mod_2", "id": "node_172743785201360", "instanceName": "s1_mod_2", "twoColumn": true, "interfaces": [{"name": "cs_s1_mint_in_1", "id": "ni_172743785201358", "direction": "input", "side": "left"}, {"name": "cs_s1_f_int_out_1", "id": "ni_172743785201359", "direction": "output", "side": "right"}], "properties": []}, {"name": "s1_mod_3", "id": "node_172743785201364", "instanceName": "s1_mod_3", "twoColumn": true, "interfaces": [{"name": "cs_s1_f_int_out_2", "id": "ni_172743785201362", "direction": "output", "side": "right"}, {"name": "cs_s1_mint_in_2", "id": "ni_172743785201363", "direction": "input", "side": "left"}], "properties": [{"name": "SUB_VALUE", "id": "172743785201361", "value": "18"}]}, {"name": "Subgraph port", "id": "node_172743785201367", "instanceName": "sub_1 cs_s1_int_const_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201365", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201324", "direction": "input", "side": "left", "externalName": "cs_s1_int_const_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201370", "instanceName": "sub_1 cs_s1_mod_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201368", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201325", "direction": "input", "side": "left", "externalName": "cs_s1_mod_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201373", "instanceName": "sub_1 cs_s1_empty_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201371", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201326", "direction": "input", "side": "left", "externalName": "cs_s1_empty_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201376", "instanceName": "sub_1 cs_s1_int_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201327", "direction": "output", "side": "right", "externalName": "cs_s1_int_out_1"}, {"name": "subgraph in", "id": "ni_172743785201375", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201379", "instanceName": "sub_1 cs_s1_int_out_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201328", "direction": "output", "side": "right", "externalName": "cs_s1_int_out_2"}, {"name": "subgraph in", "id": "ni_172743785201378", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_172743785201382", "instanceName": "sub_1 cs_s1_empty_out", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201329", "direction": "output", "side": "right", "externalName": "cs_s1_empty_out"}, {"name": "subgraph in", "id": "ni_172743785201381", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "172743785201383", "from": "ni_172743785201355", "to": "ni_172743785201358"}, {"id": "172743785201384", "from": "ni_172743785201355", "to": "ni_172743785201363"}, {"id": "172743785201385", "from": "ni_172743785201354", "to": "ni_172743785201365"}, {"id": "172743785201386", "from": "ni_172743785201356", "to": "ni_172743785201368"}, {"id": "172743785201387", "from": "ni_172743785201359", "to": "ni_172743785201375"}, {"id": "172743785201388", "from": "ni_172743785201362", "to": "ni_172743785201378"}]}, {"id": "172743785201335", "nodes": [{"name": "s2_mod_1", "id": "node_172743785201393", "instanceName": "s2_mod_1", "twoColumn": true, "interfaces": [{"name": "cs_s2_mint_out_1", "id": "ni_172743785201389", "direction": "output", "side": "right"}, {"name": "cs_s2_f_int_in_1", "id": "ni_172743785201390", "direction": "input", "side": "left"}, {"name": "cs_s2_mint_out_2", "id": "ni_172743785201391", "direction": "output", "side": "right"}, {"name": "cs_s2_f_int_in_2", "id": "ni_172743785201392", "direction": "input", "side": "left"}], "properties": []}, {"name": "s2_mod_2", "id": "node_172743785201397", "instanceName": "s2_mod_2", "twoColumn": true, "interfaces": [{"name": "cs_s2_mint_in_2", "id": "ni_172743785201394", "direction": "input", "side": "left"}, {"name": "cs_s2_f_mod_out_1", "id": "ni_172743785201395", "direction": "output", "side": "right"}, {"name": "cs_s2_mint_in_1", "id": "ni_172743785201396", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_1727437852013100", "instanceName": "sub_2 cs_s2_int_in_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201398", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201332", "direction": "input", "side": "left", "externalName": "cs_s2_int_in_2"}], "properties": []}, {"name": "Subgraph port", "id": "node_1727437852013103", "instanceName": "sub_2 cs_s2_int_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1727437852013101", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201333", "direction": "input", "side": "left", "externalName": "cs_s2_int_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_1727437852013106", "instanceName": "sub_2 cs_s2_mod_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201334", "direction": "output", "side": "right", "externalName": "cs_s2_mod_out_1"}, {"name": "subgraph in", "id": "ni_1727437852013105", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "1727437852013107", "from": "ni_172743785201389", "to": "ni_172743785201396"}, {"id": "1727437852013108", "from": "ni_172743785201391", "to": "ni_172743785201394"}, {"id": "1727437852013109", "from": "ni_172743785201390", "to": "ni_1727437852013101"}, {"id": "1727437852013110", "from": "ni_172743785201392", "to": "ni_172743785201398"}, {"id": "1727437852013111", "from": "ni_172743785201395", "to": "ni_1727437852013105"}]}, {"id": "172743785201317", "nodes": [{"name": "c_mod_1", "id": "node_1727437852013115", "instanceName": "c_mod_1", "twoColumn": true, "interfaces": [{"name": "c_int_out_1", "id": "ni_1727437852013113", "direction": "output", "side": "right"}, {"name": "c_mod_in_1", "id": "ni_1727437852013114", "direction": "input", "side": "left"}], "properties": [{"name": "MAX_VALUE", "id": "1727437852013112", "value": "16"}]}, {"name": "c_mod_2", "id": "node_1727437852013118", "instanceName": "c_mod_2", "twoColumn": true, "interfaces": [{"name": "c_mod_in_2", "id": "ni_1727437852013116", "direction": "input", "side": "left"}, {"name": "c_int_out_2", "id": "ni_1727437852013117", "direction": "output", "side": "right"}], "properties": []}, {"name": "c_mod_3", "id": "node_1727437852014123", "instanceName": "c_mod_3", "twoColumn": true, "interfaces": [{"name": "c_int_const_in", "id": "ni_1727437852014119", "direction": "input", "side": "left"}, {"name": "c_int_in_1", "id": "ni_1727437852014120", "direction": "input", "side": "left"}, {"name": "c_mod_out_1", "id": "ni_1727437852014121", "direction": "output", "side": "right"}, {"name": "c_int_in_2", "id": "ni_1727437852014122", "direction": "input", "side": "left"}], "properties": []}, {"name": "Constant", "id": "node_1727437852014139", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1727437852014138", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1727437852014137", "value": "1"}]}, {"name": "Subgraph port", "id": "node_1727437852014126", "instanceName": "counter c_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1727437852014124", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201314", "direction": "input", "side": "left", "externalName": "c_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_1727437852014129", "instanceName": "counter c_in_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1727437852014127", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_172743785201315", "direction": "input", "side": "left", "externalName": "c_in_2"}], "properties": []}, {"name": "Subgraph port", "id": "node_1727437852014132", "instanceName": "counter c_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_172743785201316", "direction": "output", "side": "right", "externalName": "c_out_1"}, {"name": "subgraph in", "id": "ni_1727437852014131", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "1727437852014133", "from": "ni_1727437852013117", "to": "ni_1727437852014120"}, {"id": "1727437852014134", "from": "ni_1727437852013113", "to": "ni_1727437852014122"}, {"id": "1727437852014135", "from": "ni_1727437852013114", "to": "ni_1727437852014124"}, {"id": "1727437852014136", "from": "ni_1727437852013116", "to": "ni_1727437852014127"}, {"id": "1727437852014140", "from": "ni_1727437852014138", "to": "ni_1727437852014119"}, {"id": "1727437852014141", "from": "ni_1727437852014121", "to": "ni_1727437852014131"}]}, {"id": "172743785201323", "nodes": [{"name": "New Graph Node", "id": "node_172743785201313", "instanceName": "complex_sub", "twoColumn": true, "interfaces": [{"name": "cs_in_1", "id": "ni_17274378520139", "direction": "input", "side": "left"}, {"name": "cs_empty_port_in", "id": "ni_172743785201310", "direction": "input", "side": "left"}, {"name": "cs_out_1", "id": "ni_172743785201311", "direction": "output", "side": "right"}], "properties": [], "subgraph": "172743785201312"}, {"name": "New Graph Node", "id": "node_172743785201318", "instanceName": "counter", "twoColumn": true, "interfaces": [{"name": "c_in_1", "id": "ni_172743785201314", "direction": "input", "side": "left"}, {"name": "c_in_2", "id": "ni_172743785201315", "direction": "input", "side": "left"}, {"name": "c_out_1", "id": "ni_172743785201316", "direction": "output", "side": "right"}], "properties": [], "subgraph": "172743785201317"}, {"name": "External Input", "id": "node_17274378520132", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17274378520131", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17274378520130", "value": "ex_out_1"}]}, {"name": "External Input", "id": "node_17274378520135", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17274378520134", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17274378520133", "value": "ex_out_2"}]}, {"name": "External Output", "id": "node_17274378520138", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17274378520137", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "17274378520136", "value": "ex_in_1"}]}], "connections": [{"id": "172743785201319", "from": "ni_172743785201316", "to": "ni_17274378520139"}, {"id": "172743785201320", "from": "ni_172743785201311", "to": "ni_17274378520137"}, {"id": "172743785201321", "from": "ni_17274378520131", "to": "ni_172743785201314"}, {"id": "172743785201322", "from": "ni_17274378520134", "to": "ni_172743785201315"}]}], "entryGraph": "172743785201323", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json b/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json new file mode 100644 index 00000000..1f3cb243 --- /dev/null +++ b/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "proc_sys_reset", "layer": "proc_sys_reset", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aux_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ext_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "dcm_locked", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "bus_struct_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_debug_sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "slowest_sync_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "interconnect_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/proc_sys_reset.yaml"}, {"name": "ps7", "layer": "ps7", "category": "IPcore", "abstract": false, "interfaces": [{"name": "MAXIGP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK_RESET0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "M_AXI_GP0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ps7.yaml"}, {"name": "litex_pwm", "layer": "litex_pwm", "category": "IPcore", "abstract": false, "interfaces": [{"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "pwm", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "ipcores/litex_pwm.yml"}, {"name": "axi_axil_adapter", "layer": "axi_axil_adapter", "category": "IPcore", "abstract": false, "properties": [{"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_ID_WIDTH", "type": "text", "default": "8"}, {"name": "AXI_STRB_WIDTH", "type": "text", "default": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXIL_STRB_WIDTH", "type": "text", "default": "AXIL_DATA_WIDTH/8"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_axil_adapter.yaml"}, {"name": "axi_interconnect", "layer": "axi_interconnect", "category": "IPcore", "abstract": false, "properties": [{"name": "S_COUNT", "type": "text", "default": "1"}, {"name": "M_COUNT", "type": "text", "default": "4"}, {"name": "DATA_WIDTH", "type": "text", "default": "32"}, {"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "ID_WIDTH", "type": "text", "default": "12"}, {"name": "M_BASE_ADDR", "type": "text", "default": "0"}, {"name": "M_ADDR_WIDTH", "type": "text", "default": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "type": "text", "default": "1"}, {"name": "WUSER_WIDTH", "type": "text", "default": "1"}, {"name": "ARUSER_WIDTH", "type": "text", "default": "1"}, {"name": "BUSER_WIDTH", "type": "text", "default": "1"}, {"name": "RUSER_WIDTH", "type": "text", "default": "1"}, {"name": "STRB_WIDTH", "type": "text", "default": "DATA_WIDTH/8"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi_0", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_1", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_2", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_interconnect.yaml"}, {"name": "axi_protocol_converter", "layer": "axi_protocol_converter", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXI", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "M_AXI", "direction": "output", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_protocol_converter.yaml"}, {"name": "axis_async_fifo", "layer": "axis_async_fifo", "category": "IPcore", "abstract": false, "properties": [{"name": "DATA_WIDTH", "type": "text", "default": "8"}, {"name": "KEEP_WIDTH", "type": "text", "default": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "type": "text", "default": "8"}, {"name": "DEST_WIDTH", "type": "text", "default": "8"}, {"name": "USER_WIDTH", "type": "text", "default": "1"}, {"name": "ID_ENABLE", "type": "text", "default": "0"}, {"name": "USER_ENABLE", "type": "text", "default": "1"}], "interfaces": [{"name": "m_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "async_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_async_fifo.yaml"}, {"name": "axis_dwidth_converter", "layer": "axis_dwidth_converter", "category": "IPcore", "abstract": false, "properties": [{"name": "IN_DATA_WIDTH", "type": "text", "default": "64"}, {"name": "OUT_DATA_WIDTH", "type": "text", "default": "32"}], "interfaces": [{"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_dwidth_converter.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI3", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI3", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI3", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI3", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_AXI4Stream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI3": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4Lite": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/312ef09f5230aaf111a5f9372a03aa2b/dataflow.json b/_downloads/312ef09f5230aaf111a5f9372a03aa2b/dataflow.json new file mode 100644 index 00000000..d78eaab4 --- /dev/null +++ b/_downloads/312ef09f5230aaf111a5f9372a03aa2b/dataflow.json @@ -0,0 +1,221 @@ +{ + "version": "20240723.13", + "graphs": [ + { + "connections": [ + { + "from": "ni_17271731416381", + "id": "208584b0-fd63-4842-afa5-2f576c7ad76c", + "to": "ni_17271731416386" + }, + { + "from": "ni_172717314163812", + "id": "4a7548fb-0179-4553-a89c-85d69f06a271", + "to": "ni_17271731416380" + }, + { + "from": "ni_17271731416389", + "id": "07a93966-bb67-4866-9b91-848930b1e14f", + "to": "ni_17271731416382" + }, + { + "from": "ni_17271731416385", + "id": "85f40e97-9bee-4328-a37d-89489d98bbfa", + "to": "ni_172717314163818" + }, + { + "from": "ni_17271731416384", + "id": "a78a199d-3c74-455e-8039-6c69ca0493f8", + "to": "ni_172717314163815" + } + ], + "id": "172717314163833", + "nodes": [ + { + "enabledInterfaceGroups": [], + "id": "node_17271731416383", + "instanceName": "simple_core_1", + "interfaces": [ + { + "direction": "input", + "id": "ni_17271731416380", + "name": "clk", + "side": "left", + "sidePosition": 0 + }, + { + "direction": "input", + "id": "ni_17271731416382", + "name": "rst", + "side": "left", + "sidePosition": 1 + }, + { + "direction": "output", + "id": "ni_17271731416381", + "name": "z", + "side": "right", + "sidePosition": 0 + } + ], + "name": "gen_simple_core_1", + "position": { + "x": 75, + "y": 91 + }, + "properties": [], + "twoColumn": true, + "width": 200 + }, + { + "enabledInterfaceGroups": [], + "id": "node_17271731416387", + "instanceName": "simple_core_2", + "interfaces": [ + { + "direction": "input", + "id": "ni_17271731416386", + "name": "a", + "side": "left", + "sidePosition": 0 + }, + { + "direction": "output", + "id": "ni_17271731416384", + "name": "y", + "side": "right", + "sidePosition": 0 + }, + { + "direction": "output", + "id": "ni_17271731416385", + "name": "c", + "side": "right", + "sidePosition": 1 + } + ], + "name": "gen_simple_core_2", + "position": { + "x": 405, + "y": 90 + }, + "properties": [], + "twoColumn": true, + "width": 200 + }, + { + "enabledInterfaceGroups": [], + "id": "node_172717314163810", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_17271731416389", + "name": "external", + "side": "right", + "sidePosition": 0 + } + ], + "name": "External Input", + "position": { + "x": -360, + "y": 135 + }, + "properties": [ + { + "id": "17271731416388", + "name": "External Name", + "value": "rst" + } + ], + "twoColumn": true, + "width": 200 + }, + { + "enabledInterfaceGroups": [], + "id": "node_172717314163813", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_172717314163812", + "name": "external", + "side": "right", + "sidePosition": 0 + } + ], + "name": "External Input", + "position": { + "x": -345, + "y": -90 + }, + "properties": [ + { + "id": "172717314163811", + "name": "External Name", + "value": "clk" + } + ], + "twoColumn": true, + "width": 200 + }, + { + "enabledInterfaceGroups": [], + "id": "node_172717314163816", + "instanceName": "External Output", + "interfaces": [ + { + "direction": "input", + "id": "ni_172717314163815", + "name": "external", + "side": "left", + "sidePosition": 0 + } + ], + "name": "External Output", + "position": { + "x": 825, + "y": -45 + }, + "properties": [ + { + "id": "172717314163814", + "name": "External Name", + "value": "Output_y" + } + ], + "twoColumn": true, + "width": 200 + }, + { + "enabledInterfaceGroups": [], + "id": "node_172717314163819", + "instanceName": "External Output", + "interfaces": [ + { + "direction": "input", + "id": "ni_172717314163818", + "name": "external", + "side": "left", + "sidePosition": 0 + } + ], + "name": "External Output", + "position": { + "x": 840, + "y": 180 + }, + "properties": [ + { + "id": "172717314163817", + "name": "External Name", + "value": "Output_c" + } + ], + "twoColumn": true, + "width": 200 + } + ] + } + ] +} diff --git a/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json b/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json new file mode 100644 index 00000000..ba45d467 --- /dev/null +++ b/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json @@ -0,0 +1 @@ +{"graphs": [{"id": "1727437849348108", "nodes": [{"name": "gen_VexRiscv", "id": "node_17274378493478", "instanceName": "vexriscv", "twoColumn": true, "interfaces": [{"name": "externalResetVector", "id": "ni_17274378493470", "direction": "input", "side": "left"}, {"name": "externalInterruptArray", "id": "ni_17274378493471", "direction": "input", "side": "left"}, {"name": "softwareInterrupt", "id": "ni_17274378493472", "direction": "input", "side": "left"}, {"name": "reset", "id": "ni_17274378493473", "direction": "input", "side": "left"}, {"name": "timerInterrupt", "id": "ni_17274378493474", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17274378493475", "direction": "input", "side": "left"}, {"name": "dBusWishbone", "id": "ni_17274378493476", "direction": "output", "side": "right"}, {"name": "iBusWishbone", "id": "ni_17274378493477", "direction": "output", "side": "right"}], "properties": []}, {"name": "gen_mem", "id": "node_172743784934713", "instanceName": "wb_ram_data", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_172743784934710", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_172743784934711", "direction": "input", "side": "left"}, {"name": "mem_bus", "id": "ni_172743784934712", "direction": "input", "side": "left"}], "properties": [{"name": "depth", "id": "17274378493479", "value": "4096"}]}, {"name": "gen_mem", "id": "node_172743784934718", "instanceName": "wb_ram_instr", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_172743784934715", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_172743784934716", "direction": "input", "side": "left"}, {"name": "mem_bus", "id": "ni_172743784934717", "direction": "input", "side": "left"}], "properties": [{"name": "depth", "id": "172743784934714", "value": "40960"}]}, {"name": "gen_crg", "id": "node_172743784934722", "instanceName": "crg", "twoColumn": true, "interfaces": [{"name": "sys_clk", "id": "ni_172743784934719", "direction": "output", "side": "right"}, {"name": "clk100", "id": "ni_172743784934720", "direction": "input", "side": "left"}, {"name": "sys_rst", "id": "ni_172743784934721", "direction": "output", "side": "right"}], "properties": []}, {"name": "gen_wb_uart", "id": "node_172743784934728", "instanceName": "wb_uart", "twoColumn": true, "interfaces": [{"name": "serial1_rx", "id": "ni_172743784934723", "direction": "input", "side": "left"}, {"name": "sys_rst", "id": "ni_172743784934724", "direction": "input", "side": "left"}, {"name": "serial1_tx", "id": "ni_172743784934725", "direction": "output", "side": "right"}, {"name": "sys_clk", "id": "ni_172743784934726", "direction": "input", "side": "left"}, {"name": "csr_wishbone", "id": "ni_172743784934727", "direction": "input", "side": "left"}], "properties": []}, {"name": "gen_wb_interconnect", "id": "node_172743784934736", "instanceName": "interconnect", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_172743784934729", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_172743784934730", "direction": "input", "side": "left"}, {"name": "vexriscv_dBusWishbone", "id": "ni_172743784934731", "direction": "input", "side": "left"}, {"name": "vexriscv_iBusWishbone", "id": "ni_172743784934732", "direction": "input", "side": "left"}, {"name": "wb_ram_data_mem_bus", "id": "ni_172743784934733", "direction": "output", "side": "right"}, {"name": "wb_ram_instr_mem_bus", "id": "ni_172743784934734", "direction": "output", "side": "right"}, {"name": "wb_uart_csr_wishbone", "id": "ni_172743784934735", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Input", "id": "node_172743784934739", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784934738", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743784934737", "value": "clk100"}]}, {"name": "External Input", "id": "node_172743784934742", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784934741", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743784934740", "value": "serial_rx"}]}, {"name": "External Output", "id": "node_172743784934745", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784934744", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743784934743", "value": "serial_tx"}]}, {"name": "Constant", "id": "node_172743784934885", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_172743784934884", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "172743784934883", "value": "0"}]}], "connections": [{"id": "172743784934886", "from": "ni_172743784934721", "to": "ni_172743784934710"}, {"id": "172743784934887", "from": "ni_172743784934721", "to": "ni_172743784934715"}, {"id": "172743784934888", "from": "ni_172743784934721", "to": "ni_17274378493473"}, {"id": "172743784934889", "from": "ni_172743784934721", "to": "ni_172743784934724"}, {"id": "172743784934890", "from": "ni_172743784934721", "to": "ni_172743784934729"}, {"id": "172743784934891", "from": "ni_172743784934735", "to": "ni_172743784934727"}, {"id": "172743784934892", "from": "ni_172743784934734", "to": "ni_172743784934717"}, {"id": "172743784934893", "from": "ni_172743784934733", "to": "ni_172743784934712"}, {"id": "172743784934894", "from": "ni_17274378493477", "to": "ni_172743784934732"}, {"id": "172743784934895", "from": "ni_17274378493476", "to": "ni_172743784934731"}, {"id": "172743784934896", "from": "ni_172743784934738", "to": "ni_172743784934711"}, {"id": "172743784934897", "from": "ni_172743784934738", "to": "ni_172743784934716"}, {"id": "172743784934898", "from": "ni_172743784934738", "to": "ni_172743784934720"}, {"id": "172743784934899", "from": "ni_172743784934738", "to": "ni_17274378493475"}, {"id": "1727437849348100", "from": "ni_172743784934884", "to": "ni_17274378493472"}, {"id": "1727437849348101", "from": "ni_172743784934884", "to": "ni_17274378493471"}, {"id": "1727437849348102", "from": "ni_172743784934884", "to": "ni_17274378493474"}, {"id": "1727437849348103", "from": "ni_172743784934884", "to": "ni_17274378493470"}, {"id": "1727437849348104", "from": "ni_172743784934738", "to": "ni_172743784934726"}, {"id": "1727437849348105", "from": "ni_172743784934725", "to": "ni_172743784934744"}, {"id": "1727437849348106", "from": "ni_172743784934741", "to": "ni_172743784934723"}, {"id": "1727437849348107", "from": "ni_172743784934738", "to": "ni_172743784934730"}]}], "entryGraph": "1727437849348108", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json b/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json new file mode 100644 index 00000000..9d87a8d3 --- /dev/null +++ b/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json @@ -0,0 +1,420 @@ +{ + "version": "20240723.13", + "metadata": { + "allowLoopbacks": true, + "backgroundSize": 15, + "connectionStyle": "orthogonal", + "interfaces": { + "port": { + "interfaceColor": "#00ca7c", + "interfaceConnectionColor": "#ffffff", + "interfaceConnectionPattern": "solid" + } + }, + "layout": "CytoscapeEngine - grid", + "movementStep": 15, + "navbarItems": [ + { + "allowToRunInParallelWith": [ + "dataflow_run", + "custom_lint_files" + ], + "iconName": "Validate", + "name": "Validate", + "procedureName": "dataflow_validate", + "stopName": "Stop" + }, + { + "allowToRunInParallelWith": [ + "dataflow_validate", + "custom_lint_files" + ], + "iconName": "Run", + "name": "Run", + "procedureName": "dataflow_run", + "stopName": "Stop" + } + ], + "twoColumn": true + }, + "nodes": [ + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_1/c_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_mod_in_1", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_int_out_1", + "type": [ + "port" + ] + } + ], + "layer": "c_mod_1", + "name": "c_mod_1", + "properties": [ + { + "default": "32", + "name": "MAX_VALUE", + "type": "text" + } + ] + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_2/c_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_int_out_2", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_mod_in_2", + "type": [ + "port" + ] + } + ], + "layer": "c_mod_2", + "name": "c_mod_2" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_3/c_mod_3.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_in_1", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_mod_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_in_2", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_const_in", + "type": [ + "port" + ] + } + ], + "layer": "c_mod_3", + "name": "c_mod_3" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_1/s1_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_f_mod_in_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_f_ext_const_in", + "type": [ + "port" + ] + } + ], + "layer": "s1_mod_1", + "name": "s1_mod_1" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_2/s1_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_f_int_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_in_1", + "type": [ + "port" + ] + } + ], + "layer": "s1_mod_2", + "name": "s1_mod_2" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_3/s1_mod_3.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_in_2", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_f_int_out_2", + "type": [ + "port" + ] + } + ], + "layer": "s1_mod_3", + "name": "s1_mod_3", + "properties": [ + { + "default": "18", + "name": "SUB_VALUE", + "type": "text" + } + ] + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s2_mod_1/s2_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_out_2", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_f_int_in_2", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_f_int_in_1", + "type": [ + "port" + ] + } + ], + "layer": "s2_mod_1", + "name": "s2_mod_1" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s2_mod_2/s2_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_in_2", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_f_mod_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_in_1", + "type": [ + "port" + ] + } + ], + "layer": "s2_mod_2", + "name": "s2_mod_2" + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Output", + "name": "External Output", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Input", + "name": "External Input", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "inout", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Inout", + "name": "External Inout", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "constant", + "type": [ + "port" + ] + } + ], + "layer": "Constant", + "name": "Constant", + "properties": [ + { + "default": "0", + "name": "Constant Value", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "subgraph out", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "subgraph in", + "type": [ + "port" + ] + } + ], + "layer": "Subgraph port", + "name": "Subgraph port" + } + ] +} diff --git a/_downloads/549edc91f483264549a864a8d2176194/data_inout.json b/_downloads/549edc91f483264549a864a8d2176194/data_inout.json new file mode 100644 index 00000000..3e020430 --- /dev/null +++ b/_downloads/549edc91f483264549a864a8d2176194/data_inout.json @@ -0,0 +1 @@ +{"graphs": [{"id": "172743785075472", "nodes": [{"name": "gen_ibuf", "id": "node_17274378507534", "instanceName": "ip_ibuf", "twoColumn": true, "interfaces": [{"name": "a", "id": "ni_17274378507530", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17274378507531", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17274378507532", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17274378507533", "direction": "output", "side": "right"}], "properties": []}, {"name": "gen_obuf", "id": "node_172743785075310", "instanceName": "ip_obuf", "twoColumn": true, "interfaces": [{"name": "oe", "id": "ni_17274378507535", "direction": "input", "side": "left"}, {"name": "a", "id": "ni_17274378507536", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17274378507537", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17274378507538", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17274378507539", "direction": "output", "side": "right"}], "properties": []}, {"name": "gen_iobuf", "id": "node_172743785075317", "instanceName": "ip_iobuf", "twoColumn": true, "interfaces": [{"name": "oe", "id": "ni_172743785075311", "direction": "input", "side": "left"}, {"name": "y", "id": "ni_172743785075312", "direction": "output", "side": "right"}, {"name": "a", "id": "ni_172743785075313", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_172743785075314", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_172743785075315", "direction": "inout", "side": "right"}, {"name": "rst", "id": "ni_172743785075316", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_172743785075320", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075319", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743785075318", "value": "PORT_CLK"}]}, {"name": "External Input", "id": "node_172743785075323", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075322", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743785075321", "value": "PORT_RST"}]}, {"name": "External Input", "id": "node_172743785075326", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075325", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743785075324", "value": "PORT_IN"}]}, {"name": "External Output", "id": "node_172743785075329", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075328", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743785075327", "value": "PORT_OUT_0"}]}, {"name": "External Output", "id": "node_172743785075332", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075331", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743785075330", "value": "PORT_OUT_1"}]}, {"name": "External Output", "id": "node_172743785075335", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075334", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743785075333", "value": "PORT_OUT_2"}]}, {"name": "External Inout", "id": "node_172743785075338", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785075337", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "172743785075336", "value": "z"}]}], "connections": [{"id": "172743785075357", "from": "ni_172743785075319", "to": "ni_17274378507537"}, {"id": "172743785075358", "from": "ni_172743785075322", "to": "ni_17274378507538"}, {"id": "172743785075359", "from": "ni_172743785075319", "to": "ni_17274378507535"}, {"id": "172743785075360", "from": "ni_172743785075325", "to": "ni_17274378507536"}, {"id": "172743785075361", "from": "ni_17274378507539", "to": "ni_172743785075328"}, {"id": "172743785075362", "from": "ni_172743785075319", "to": "ni_172743785075314"}, {"id": "172743785075363", "from": "ni_172743785075322", "to": "ni_172743785075316"}, {"id": "172743785075364", "from": "ni_172743785075319", "to": "ni_172743785075311"}, {"id": "172743785075365", "from": "ni_172743785075325", "to": "ni_172743785075313"}, {"id": "172743785075366", "from": "ni_172743785075312", "to": "ni_172743785075331"}, {"id": "172743785075367", "from": "ni_172743785075319", "to": "ni_17274378507532"}, {"id": "172743785075368", "from": "ni_172743785075322", "to": "ni_17274378507531"}, {"id": "172743785075469", "from": "ni_172743785075325", "to": "ni_17274378507530"}, {"id": "172743785075470", "from": "ni_17274378507533", "to": "ni_172743785075334"}, {"id": "172743785075471", "from": "ni_172743785075337", "to": "ni_172743785075315"}]}], "entryGraph": "172743785075472", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json b/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json new file mode 100644 index 00000000..60c64a6d --- /dev/null +++ b/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json @@ -0,0 +1,957 @@ +{ + "version": "20240723.13", + "entryGraph": "1725358409542677", + "graphs": [ + { + "connections": [ + { + "from": "ni_1725358409542681", + "id": "1725358409542700", + "to": "ni_1725358409542687" + }, + { + "from": "ni_1725358409542682", + "id": "1725358409542701", + "to": "ni_1725358409542686" + }, + { + "from": "ni_1725358409542703", + "id": "1725358409542705", + "to": "ni_1725358409542678" + }, + { + "from": "ni_1725358409542679", + "id": "1725358409542706", + "to": "ni_1725358409542691" + }, + { + "from": "ni_1725358409542688", + "id": "1725358409542707", + "to": "ni_1725358409542698" + } + ], + "id": "1725358409542666", + "nodes": [ + { + "id": "node_1725358409542685", + "instanceName": "sub_1", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542678", + "name": "cs_s1_int_const_in", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542679", + "name": "cs_s1_mod_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542680", + "name": "cs_s1_empty_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542681", + "name": "cs_s1_int_out_1", + "side": "right" + }, + { + "direction": "output", + "id": "ni_1725358409542682", + "name": "cs_s1_int_out_2", + "side": "right" + }, + { + "direction": "output", + "id": "ni_1725358409542683", + "name": "cs_s1_empty_out", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1725358409542684", + "twoColumn": true + }, + { + "id": "node_1725358409542690", + "instanceName": "sub_2", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542686", + "name": "cs_s2_int_in_2", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542687", + "name": "cs_s2_int_in_1", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542688", + "name": "cs_s2_mod_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1725358409542689", + "twoColumn": true + }, + { + "id": "node_1725358409542704", + "instanceName": "Constant", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542703", + "name": "constant", + "side": "right" + } + ], + "name": "Constant", + "properties": [ + { + "id": "1725358409542702", + "name": "Constant Value", + "value": "1" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542693", + "instanceName": "complex_sub cs_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542691", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_in_1", + "id": "ni_1725358409542663", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542696", + "instanceName": "complex_sub cs_empty_port_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542694", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_empty_port_in", + "id": "ni_1725358409542664", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542699", + "instanceName": "complex_sub cs_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_out_1", + "id": "ni_1725358409542665", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542698", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ], + "scaling": 1 + }, + { + "connections": [ + { + "from": "ni_1725358409542709", + "id": "1725358409542737", + "to": "ni_1725358409542713" + }, + { + "from": "ni_1725358409542709", + "id": "1725358409542738", + "to": "ni_1725358409542716" + }, + { + "from": "ni_1725358409542710", + "id": "1725358409542739", + "to": "ni_1725358409542719" + }, + { + "from": "ni_1725358409542708", + "id": "1725358409542740", + "to": "ni_1725358409542722" + }, + { + "from": "ni_1725358409542712", + "id": "1725358409542741", + "to": "ni_1725358409542729" + }, + { + "from": "ni_1725358409542717", + "id": "1725358409542742", + "to": "ni_1725358409542732" + } + ], + "id": "1725358409542684", + "nodes": [ + { + "id": "node_1725358409542711", + "instanceName": "s1_mod_1", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542708", + "name": "cs_s1_f_mod_in_1", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542709", + "name": "cs_s1_mint_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542710", + "name": "cs_s1_f_ext_const_in", + "side": "left" + } + ], + "name": "s1_mod_1", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542714", + "instanceName": "s1_mod_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542712", + "name": "cs_s1_f_int_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542713", + "name": "cs_s1_mint_in_1", + "side": "left" + } + ], + "name": "s1_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542718", + "instanceName": "s1_mod_3", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542716", + "name": "cs_s1_mint_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542717", + "name": "cs_s1_f_int_out_2", + "side": "right" + } + ], + "name": "s1_mod_3", + "properties": [ + { + "id": "1725358409542715", + "name": "SUB_VALUE", + "value": "18" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542721", + "instanceName": "sub_1 cs_s1_int_const_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542719", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_int_const_in", + "id": "ni_1725358409542678", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542724", + "instanceName": "sub_1 cs_s1_mod_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542722", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_mod_in_1", + "id": "ni_1725358409542679", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542727", + "instanceName": "sub_1 cs_s1_empty_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542725", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_empty_in", + "id": "ni_1725358409542680", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542730", + "instanceName": "sub_1 cs_s1_int_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_int_out_1", + "id": "ni_1725358409542681", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542729", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542733", + "instanceName": "sub_1 cs_s1_int_out_2", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_int_out_2", + "id": "ni_1725358409542682", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542732", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542736", + "instanceName": "sub_1 cs_s1_empty_out", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_empty_out", + "id": "ni_1725358409542683", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542735", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ], + "scaling": 1 + }, + { + "connections": [ + { + "from": "ni_1725358409542743", + "id": "1725358409542761", + "to": "ni_1725358409542749" + }, + { + "from": "ni_1725358409542746", + "id": "1725358409542762", + "to": "ni_1725358409542748" + }, + { + "from": "ni_1725358409542744", + "id": "1725358409542763", + "to": "ni_1725358409542755" + }, + { + "from": "ni_1725358409542745", + "id": "1725358409542764", + "to": "ni_1725358409542752" + }, + { + "from": "ni_1725358409542750", + "id": "1725358409542765", + "to": "ni_1725358409542759" + } + ], + "id": "1725358409542689", + "nodes": [ + { + "id": "node_1725358409542747", + "instanceName": "s2_mod_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542743", + "name": "cs_s2_mint_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542744", + "name": "cs_s2_f_int_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542745", + "name": "cs_s2_f_int_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542746", + "name": "cs_s2_mint_out_2", + "side": "right" + } + ], + "name": "s2_mod_1", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542751", + "instanceName": "s2_mod_2", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542748", + "name": "cs_s2_mint_in_2", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542749", + "name": "cs_s2_mint_in_1", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542750", + "name": "cs_s2_f_mod_out_1", + "side": "right" + } + ], + "name": "s2_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542754", + "instanceName": "sub_2 cs_s2_int_in_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542752", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s2_int_in_2", + "id": "ni_1725358409542686", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542757", + "instanceName": "sub_2 cs_s2_int_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542755", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s2_int_in_1", + "id": "ni_1725358409542687", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542760", + "instanceName": "sub_2 cs_s2_mod_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s2_mod_out_1", + "id": "ni_1725358409542688", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542759", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ], + "scaling": 1 + }, + { + "connections": [ + { + "from": "ni_1725358409542770", + "id": "1725358409542787", + "to": "ni_1725358409542773" + }, + { + "from": "ni_1725358409542767", + "id": "1725358409542788", + "to": "ni_1725358409542776" + }, + { + "from": "ni_1725358409542768", + "id": "1725358409542789", + "to": "ni_1725358409542778" + }, + { + "from": "ni_1725358409542771", + "id": "1725358409542790", + "to": "ni_1725358409542781" + }, + { + "from": "ni_1725358409542792", + "id": "1725358409542794", + "to": "ni_1725358409542774" + }, + { + "from": "ni_1725358409542775", + "id": "1725358409542795", + "to": "ni_1725358409542785" + } + ], + "id": "1725358409542671", + "nodes": [ + { + "id": "node_1725358409542769", + "instanceName": "c_mod_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542767", + "name": "c_int_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542768", + "name": "c_mod_in_1", + "side": "left" + } + ], + "name": "c_mod_1", + "properties": [ + { + "id": "1725358409542766", + "name": "MAX_VALUE", + "value": "16" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542772", + "instanceName": "c_mod_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542770", + "name": "c_int_out_2", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542771", + "name": "c_mod_in_2", + "side": "left" + } + ], + "name": "c_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542777", + "instanceName": "c_mod_3", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542773", + "name": "c_int_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542774", + "name": "c_int_const_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542775", + "name": "c_mod_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542776", + "name": "c_int_in_2", + "side": "left" + } + ], + "name": "c_mod_3", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542793", + "instanceName": "Constant", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542792", + "name": "constant", + "side": "right" + } + ], + "name": "Constant", + "properties": [ + { + "id": "1725358409542791", + "name": "Constant Value", + "value": "1" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542780", + "instanceName": "counter c_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542778", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "c_in_1", + "id": "ni_1725358409542668", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542783", + "instanceName": "counter c_in_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542781", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "c_in_2", + "id": "ni_1725358409542669", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1725358409542786", + "instanceName": "counter c_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "c_out_1", + "id": "ni_1725358409542670", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1725358409542785", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ], + "scaling": 1 + }, + { + "connections": [ + { + "from": "ni_1725358409542670", + "id": "1725358409542673", + "to": "ni_1725358409542663" + }, + { + "from": "ni_1725358409542665", + "id": "1725358409542674", + "to": "ni_1725358409542661" + }, + { + "from": "ni_1725358409542655", + "id": "1725358409542675", + "to": "ni_1725358409542668" + }, + { + "from": "ni_1725358409542658", + "id": "1725358409542676", + "to": "ni_1725358409542669" + } + ], + "id": "1725358409542677", + "nodes": [ + { + "id": "node_1725358409542667", + "instanceName": "complex_sub", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542663", + "name": "cs_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542664", + "name": "cs_empty_port_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542665", + "name": "cs_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1725358409542666", + "twoColumn": true + }, + { + "id": "node_1725358409542672", + "instanceName": "counter", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542668", + "name": "c_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1725358409542669", + "name": "c_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1725358409542670", + "name": "c_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1725358409542671", + "twoColumn": true + }, + { + "id": "node_1725358409542656", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542655", + "name": "external", + "side": "right" + } + ], + "name": "External Input", + "properties": [ + { + "id": "1725358409542654", + "name": "External Name", + "value": "ex_out_1" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542659", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_1725358409542658", + "name": "external", + "side": "right" + } + ], + "name": "External Input", + "properties": [ + { + "id": "1725358409542657", + "name": "External Name", + "value": "ex_out_2" + } + ], + "twoColumn": true + }, + { + "id": "node_1725358409542662", + "instanceName": "External Output", + "interfaces": [ + { + "direction": "input", + "id": "ni_1725358409542661", + "name": "external", + "side": "left" + } + ], + "name": "External Output", + "properties": [ + { + "id": "1725358409542660", + "name": "External Name", + "value": "ex_in_1" + } + ], + "twoColumn": true + } + ], + "scaling": 1 + } + ] +} diff --git a/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json b/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json new file mode 100644 index 00000000..aa6e997a --- /dev/null +++ b/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "gen_ibuf", "layer": "gen_ibuf", "category": "IPcore", "abstract": false, "interfaces": [{"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_ibuf.yaml"}, {"name": "gen_iobuf", "layer": "gen_iobuf", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "oe", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "y", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_iobuf.yaml"}, {"name": "gen_obuf", "layer": "gen_obuf", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "oe", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_obuf.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json b/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json new file mode 100644 index 00000000..733cfe3d --- /dev/null +++ b/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json @@ -0,0 +1 @@ +{"graphs": [{"id": "172743785149055", "nodes": [{"name": "axi_axil_adapter", "id": "node_172743785148910", "instanceName": "axi_bridge", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_17274378514896", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17274378514897", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_17274378514898", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_17274378514899", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "17274378514890", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "17274378514891", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "17274378514892", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "17274378514893", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "17274378514894", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "17274378514895", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "litex_pwm", "id": "node_172743785148915", "instanceName": "litex_pwm_top", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_172743785148911", "direction": "input", "side": "left"}, {"name": "pwm", "id": "ni_172743785148912", "direction": "output", "side": "right"}, {"name": "sys_clk", "id": "ni_172743785148913", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_172743785148914", "direction": "input", "side": "left"}], "properties": []}, {"name": "ps7", "id": "node_172743785148921", "instanceName": "ps7", "twoColumn": true, "interfaces": [{"name": "MAXIGP0ACLK", "id": "ni_172743785148916", "direction": "input", "side": "left"}, {"name": "FCLK0", "id": "ni_172743785148917", "direction": "output", "side": "right"}, {"name": "FCLK_RESET0_N", "id": "ni_172743785148918", "direction": "output", "side": "right"}, {"name": "MAXIGP0ARESETN", "id": "ni_172743785148919", "direction": "output", "side": "right"}, {"name": "M_AXI_GP0", "id": "ni_172743785148920", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Output", "id": "node_172743785148924", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743785148923", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743785148922", "value": "pwm"}]}], "connections": [{"id": "172743785149047", "from": "ni_172743785148917", "to": "ni_17274378514896"}, {"id": "172743785149048", "from": "ni_172743785148918", "to": "ni_17274378514897"}, {"id": "172743785149049", "from": "ni_172743785148917", "to": "ni_172743785148913"}, {"id": "172743785149050", "from": "ni_172743785148918", "to": "ni_172743785148911"}, {"id": "172743785149051", "from": "ni_172743785148917", "to": "ni_172743785148916"}, {"id": "172743785149052", "from": "ni_172743785148920", "to": "ni_17274378514898"}, {"id": "172743785149053", "from": "ni_17274378514899", "to": "ni_172743785148914"}, {"id": "172743785149054", "from": "ni_172743785148912", "to": "ni_172743785148923"}]}], "entryGraph": "172743785149055", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json b/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json new file mode 100644 index 00000000..b12e7054 --- /dev/null +++ b/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "s1_mod_2", "layer": "s1_mod_2", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s1_mint_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_f_int_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_2/s1_mod_2.yaml"}, {"name": "s2_mod_2", "layer": "s2_mod_2", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s2_mint_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_f_mod_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s2_mod_2/s2_mod_2.yaml"}, {"name": "c_mod_1", "layer": "c_mod_1", "category": "IPcore", "abstract": false, "properties": [{"name": "MAX_VALUE", "type": "text", "default": "32"}], "interfaces": [{"name": "c_int_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_mod_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_1/c_mod_1.yaml"}, {"name": "s1_mod_1", "layer": "s1_mod_1", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s1_mint_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_f_mod_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_f_ext_const_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_1/s1_mod_1.yaml"}, {"name": "s1_mod_3", "layer": "s1_mod_3", "category": "IPcore", "abstract": false, "properties": [{"name": "SUB_VALUE", "type": "text", "default": "18"}], "interfaces": [{"name": "cs_s1_f_int_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_mint_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_3/s1_mod_3.yaml"}, {"name": "c_mod_3", "layer": "c_mod_3", "category": "IPcore", "abstract": false, "interfaces": [{"name": "c_mod_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_const_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_3/c_mod_3.yaml"}, {"name": "c_mod_2", "layer": "c_mod_2", "category": "IPcore", "abstract": false, "interfaces": [{"name": "c_mod_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_2/c_mod_2.yaml"}, {"name": "s2_mod_1", "layer": "s2_mod_1", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s2_f_int_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_f_int_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s2_mod_1/s2_mod_1.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json b/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json new file mode 100644 index 00000000..b866fa67 --- /dev/null +++ b/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json @@ -0,0 +1 @@ +{"graphs": [{"id": "1727437852817597", "nodes": [{"name": "axi_axil_adapter", "id": "node_172743785281510", "instanceName": "axi_bridge_disp", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_17274378528156", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17274378528157", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_17274378528158", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_17274378528159", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "17274378528150", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "17274378528151", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "17274378528152", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "17274378528153", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "17274378528154", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "17274378528155", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_axil_adapter", "id": "node_172743785281521", "instanceName": "axi_bridge_dma", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_172743785281517", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_172743785281518", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_172743785281519", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_172743785281520", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "172743785281511", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "172743785281512", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "172743785281513", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "172743785281514", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "172743785281515", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "172743785281516", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_axil_adapter", "id": "node_172743785281532", "instanceName": "axi_bridge_mmcm", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_172743785281528", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_172743785281529", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_172743785281530", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_172743785281531", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "172743785281522", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "172743785281523", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "172743785281524", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "172743785281525", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "172743785281526", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "172743785281527", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_interconnect", "id": "node_172743785281552", "instanceName": "axi_interconnect0", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_172743785281546", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_172743785281547", "direction": "input", "side": "left"}, {"name": "s_axi_0", "id": "ni_172743785281548", "direction": "input", "side": "left"}, {"name": "m_axi_0", "id": "ni_172743785281549", "direction": "output", "side": "right"}, {"name": "m_axi_1", "id": "ni_172743785281550", "direction": "output", "side": "right"}, {"name": "m_axi_2", "id": "ni_172743785281551", "direction": "output", "side": "right"}], "properties": [{"name": "S_COUNT", "id": "172743785281533", "value": "1"}, {"name": "M_COUNT", "id": "172743785281534", "value": "3"}, {"name": "DATA_WIDTH", "id": "172743785281535", "value": "32"}, {"name": "ADDR_WIDTH", "id": "172743785281536", "value": "32"}, {"name": "ID_WIDTH", "id": "172743785281537", "value": "12"}, {"name": "M_BASE_ADDR", "id": "172743785281538", "value": "118'h43c2000043c1000043c00000"}, {"name": "M_ADDR_WIDTH", "id": "172743785281539", "value": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "id": "172743785281540", "value": "1"}, {"name": "WUSER_WIDTH", "id": "172743785281541", "value": "1"}, {"name": "ARUSER_WIDTH", "id": "172743785281542", "value": "1"}, {"name": "BUSER_WIDTH", "id": "172743785281543", "value": "1"}, {"name": "RUSER_WIDTH", "id": "172743785281544", "value": "1"}, {"name": "STRB_WIDTH", "id": "172743785281545", "value": "DATA_WIDTH/8"}]}, {"name": "axi_protocol_converter", "id": "node_172743785281557", "instanceName": "axi_protocol_converter0", "twoColumn": true, "interfaces": [{"name": "aresetn", "id": "ni_172743785281553", "direction": "input", "side": "left"}, {"name": "aclk", "id": "ni_172743785281554", "direction": "input", "side": "left"}, {"name": "S_AXI", "id": "ni_172743785281555", "direction": "input", "side": "left"}, {"name": "M_AXI", "id": "ni_172743785281556", "direction": "output", "side": "right"}], "properties": []}, {"name": "axis_async_fifo", "id": "node_172743785281576", "instanceName": "axis_clock_converter", "twoColumn": true, "interfaces": [{"name": "s_status_good_frame", "id": "ni_172743785281565", "direction": "output", "side": "right"}, {"name": "m_clk", "id": "ni_172743785281566", "direction": "input", "side": "left"}, {"name": "m_status_bad_frame", "id": "ni_172743785281567", "direction": "output", "side": "right"}, {"name": "async_rst", "id": "ni_172743785281568", "direction": "input", "side": "left"}, {"name": "s_status_bad_frame", "id": "ni_172743785281569", "direction": "output", "side": "right"}, {"name": "m_status_good_frame", "id": "ni_172743785281570", "direction": "output", "side": "right"}, {"name": "s_status_overflow", "id": "ni_172743785281571", "direction": "output", "side": "right"}, {"name": "s_clk", "id": "ni_172743785281572", "direction": "input", "side": "left"}, {"name": "m_status_overflow", "id": "ni_172743785281573", "direction": "output", "side": "right"}, {"name": "s_axis", "id": "ni_172743785281574", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_172743785281575", "direction": "output", "side": "right"}], "properties": [{"name": "DATA_WIDTH", "id": "172743785281558", "value": "64"}, {"name": "KEEP_WIDTH", "id": "172743785281559", "value": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "id": "172743785281560", "value": "8"}, {"name": "DEST_WIDTH", "id": "172743785281561", "value": "8"}, {"name": "USER_WIDTH", "id": "172743785281562", "value": "1"}, {"name": "ID_ENABLE", "id": "172743785281563", "value": "0"}, {"name": "USER_ENABLE", "id": "172743785281564", "value": "0"}]}, {"name": "axis_dwidth_converter", "id": "node_172743785281583", "instanceName": "axis_dwidth_converter", "twoColumn": true, "interfaces": [{"name": "aresetn", "id": "ni_172743785281579", "direction": "input", "side": "left"}, {"name": "aclk", "id": "ni_172743785281580", "direction": "input", "side": "left"}, {"name": "s_axis", "id": "ni_172743785281581", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_172743785281582", "direction": "output", "side": "right"}], "properties": [{"name": "IN_DATA_WIDTH", "id": "172743785281577", "value": "64"}, {"name": "OUT_DATA_WIDTH", "id": "172743785281578", "value": "32"}]}, {"name": "clock_crossing", "id": "node_172743785281588", "instanceName": "clock_crossing", "twoColumn": true, "interfaces": [{"name": "B", "id": "ni_172743785281584", "direction": "output", "side": "right"}, {"name": "clkA", "id": "ni_172743785281585", "direction": "input", "side": "left"}, {"name": "A", "id": "ni_172743785281586", "direction": "input", "side": "left"}, {"name": "clkB", "id": "ni_172743785281587", "direction": "input", "side": "left"}], "properties": []}, {"name": "axi_dispctrl", "id": "node_1727437852815105", "instanceName": "disp", "twoColumn": true, "interfaces": [{"name": "FSYNC_O", "id": "ni_172743785281589", "direction": "output", "side": "right"}, {"name": "s00_axi_aclk", "id": "ni_172743785281590", "direction": "input", "side": "left"}, {"name": "LOCKED_I", "id": "ni_172743785281591", "direction": "input", "side": "left"}, {"name": "VSYNC_O", "id": "ni_172743785281592", "direction": "output", "side": "right"}, {"name": "DE_O", "id": "ni_172743785281593", "direction": "output", "side": "right"}, {"name": "DIEN_O", "id": "ni_172743785281594", "direction": "output", "side": "right"}, {"name": "HSYNC_O", "id": "ni_172743785281595", "direction": "output", "side": "right"}, {"name": "DIH_O", "id": "ni_172743785281596", "direction": "output", "side": "right"}, {"name": "CTL_O", "id": "ni_172743785281597", "direction": "output", "side": "right"}, {"name": "s00_axi_aresetn", "id": "ni_172743785281598", "direction": "input", "side": "left"}, {"name": "S_AXIS_ACLK", "id": "ni_172743785281599", "direction": "input", "side": "left"}, {"name": "DATA_O", "id": "ni_1727437852815100", "direction": "output", "side": "right"}, {"name": "DGUARD_O", "id": "ni_1727437852815101", "direction": "output", "side": "right"}, {"name": "VGUARD_O", "id": "ni_1727437852815102", "direction": "output", "side": "right"}, {"name": "S00_AXI", "id": "ni_1727437852815103", "direction": "input", "side": "left"}, {"name": "S_AXIS", "id": "ni_1727437852815104", "direction": "input", "side": "left"}], "properties": []}, {"name": "dma_axi_in_axis_out", "id": "node_1727437852815115", "instanceName": "dma", "twoColumn": true, "interfaces": [{"name": "clock", "id": "ni_1727437852815106", "direction": "input", "side": "left"}, {"name": "reset", "id": "ni_1727437852815107", "direction": "input", "side": "left"}, {"name": "io_irq_readerDone", "id": "ni_1727437852815108", "direction": "output", "side": "right"}, {"name": "io_sync_writerSync", "id": "ni_1727437852815109", "direction": "input", "side": "left"}, {"name": "io_irq_writerDone", "id": "ni_1727437852815110", "direction": "output", "side": "right"}, {"name": "io_sync_readerSync", "id": "ni_1727437852815111", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_1727437852815112", "direction": "output", "side": "right"}, {"name": "s_axi", "id": "ni_1727437852815113", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_1727437852815114", "direction": "output", "side": "right"}], "properties": []}, {"name": "hdmi_tx", "id": "node_1727437852815136", "instanceName": "hdmi", "twoColumn": true, "interfaces": [{"name": "HDMI_D1_N", "id": "ni_1727437852815116", "direction": "output", "side": "right"}, {"name": "HDMI_D2_P", "id": "ni_1727437852815117", "direction": "output", "side": "right"}, {"name": "HDMI_D1_P", "id": "ni_1727437852815118", "direction": "output", "side": "right"}, {"name": "HDMI_CLK_N", "id": "ni_1727437852815119", "direction": "output", "side": "right"}, {"name": "VGUARD", "id": "ni_1727437852815120", "direction": "input", "side": "left"}, {"name": "PXLCLK_5X_I", "id": "ni_1727437852815121", "direction": "input", "side": "left"}, {"name": "DIH", "id": "ni_1727437852815122", "direction": "input", "side": "left"}, {"name": "DATA_I", "id": "ni_1727437852815123", "direction": "input", "side": "left"}, {"name": "PXLCLK_I", "id": "ni_1727437852815124", "direction": "input", "side": "left"}, {"name": "HDMI_CLK_P", "id": "ni_1727437852815125", "direction": "output", "side": "right"}, {"name": "VGA_HS", "id": "ni_1727437852815126", "direction": "input", "side": "left"}, {"name": "HDMI_D0_N", "id": "ni_1727437852815127", "direction": "output", "side": "right"}, {"name": "CTL", "id": "ni_1727437852815128", "direction": "input", "side": "left"}, {"name": "VGA_VS", "id": "ni_1727437852815129", "direction": "input", "side": "left"}, {"name": "LOCKED_I", "id": "ni_1727437852815130", "direction": "input", "side": "left"}, {"name": "HDMI_D0_P", "id": "ni_1727437852815131", "direction": "output", "side": "right"}, {"name": "HDMI_D2_N", "id": "ni_1727437852815132", "direction": "output", "side": "right"}, {"name": "DGUARD", "id": "ni_1727437852815133", "direction": "input", "side": "left"}, {"name": "DIEN", "id": "ni_1727437852815134", "direction": "input", "side": "left"}, {"name": "VGA_DE", "id": "ni_1727437852815135", "direction": "input", "side": "left"}], "properties": []}, {"name": "litex_mmcm", "id": "node_1727437852815144", "instanceName": "mmcm", "twoColumn": true, "interfaces": [{"name": "clkgen_ref", "id": "ni_1727437852815137", "direction": "input", "side": "left"}, {"name": "clkgen_out0", "id": "ni_1727437852815138", "direction": "output", "side": "right"}, {"name": "clkgen_locked", "id": "ni_1727437852815139", "direction": "output", "side": "right"}, {"name": "clkgen_out1", "id": "ni_1727437852815140", "direction": "output", "side": "right"}, {"name": "sys_rst", "id": "ni_1727437852815141", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_1727437852815142", "direction": "input", "side": "left"}, {"name": "axi", "id": "ni_1727437852815143", "direction": "input", "side": "left"}], "properties": []}, {"name": "ps7", "id": "node_1727437852815181", "instanceName": "ps7", "twoColumn": true, "interfaces": [{"name": "ddr_vr_n", "id": "ni_1727437852815145", "direction": "inout", "side": "right"}, {"name": "ddr_addr", "id": "ni_1727437852815146", "direction": "inout", "side": "right"}, {"name": "FCLK1", "id": "ni_1727437852815147", "direction": "output", "side": "right"}, {"name": "SAXIHP0WACOUNT", "id": "ni_1727437852815148", "direction": "output", "side": "right"}, {"name": "FCLK_RESET0_N", "id": "ni_1727437852815149", "direction": "output", "side": "right"}, {"name": "ps_mio", "id": "ni_1727437852815150", "direction": "inout", "side": "right"}, {"name": "FCLK0", "id": "ni_1727437852815151", "direction": "output", "side": "right"}, {"name": "ddr_vr", "id": "ni_1727437852815152", "direction": "inout", "side": "right"}, {"name": "ddr_cke", "id": "ni_1727437852815153", "direction": "inout", "side": "right"}, {"name": "IRQ_F2P_1", "id": "ni_1727437852815154", "direction": "input", "side": "left"}, {"name": "ddr_dm", "id": "ni_1727437852815155", "direction": "inout", "side": "right"}, {"name": "ps_clk", "id": "ni_1727437852815156", "direction": "inout", "side": "right"}, {"name": "IRQ_F2P_0", "id": "ni_1727437852815157", "direction": "input", "side": "left"}, {"name": "ddr_dqs", "id": "ni_1727437852815158", "direction": "inout", "side": "right"}, {"name": "ddr_ras_n", "id": "ni_1727437852815159", "direction": "inout", "side": "right"}, {"name": "ddr_cas_n", "id": "ni_1727437852815160", "direction": "inout", "side": "right"}, {"name": "ddr_bankaddr", "id": "ni_1727437852815161", "direction": "inout", "side": "right"}, {"name": "ddr_clk_n", "id": "ni_1727437852815162", "direction": "inout", "side": "right"}, {"name": "ddr_web", "id": "ni_1727437852815163", "direction": "inout", "side": "right"}, {"name": "ddr_drstb", "id": "ni_1727437852815164", "direction": "inout", "side": "right"}, {"name": "ddr_clk", "id": "ni_1727437852815165", "direction": "inout", "side": "right"}, {"name": "ddr_cs_n", "id": "ni_1727437852815166", "direction": "inout", "side": "right"}, {"name": "MAXIGP0ACLK", "id": "ni_1727437852815167", "direction": "input", "side": "left"}, {"name": "ddr_dq", "id": "ni_1727437852815168", "direction": "inout", "side": "right"}, {"name": "SAXIHP0WCOUNT", "id": "ni_1727437852815169", "direction": "output", "side": "right"}, {"name": "ddr_dqs_n", "id": "ni_1727437852815170", "direction": "inout", "side": "right"}, {"name": "ps_porb", "id": "ni_1727437852815171", "direction": "inout", "side": "right"}, {"name": "ddr_odt", "id": "ni_1727437852815172", "direction": "inout", "side": "right"}, {"name": "SAXIHP0ACLK", "id": "ni_1727437852815173", "direction": "input", "side": "left"}, {"name": "SAXIHP0RCOUNT", "id": "ni_1727437852815174", "direction": "output", "side": "right"}, {"name": "MAXIGP0ARESETN", "id": "ni_1727437852815175", "direction": "output", "side": "right"}, {"name": "SAXIHP0RACOUNT", "id": "ni_1727437852815176", "direction": "output", "side": "right"}, {"name": "SAXIHP0ARESETN", "id": "ni_1727437852815177", "direction": "output", "side": "right"}, {"name": "ps_srstb", "id": "ni_1727437852815178", "direction": "inout", "side": "right"}, {"name": "M_AXI_GP0", "id": "ni_1727437852815179", "direction": "output", "side": "right"}, {"name": "S_AXI_HP0", "id": "ni_1727437852815180", "direction": "input", "side": "left"}], "properties": []}, {"name": "proc_sys_reset", "id": "node_1727437852815192", "instanceName": "reset0", "twoColumn": true, "interfaces": [{"name": "peripheral_reset", "id": "ni_1727437852815182", "direction": "output", "side": "right"}, {"name": "mb_debug_sys_rst", "id": "ni_1727437852815183", "direction": "input", "side": "left"}, {"name": "peripheral_aresetn", "id": "ni_1727437852815184", "direction": "output", "side": "right"}, {"name": "aux_reset_in", "id": "ni_1727437852815185", "direction": "input", "side": "left"}, {"name": "dcm_locked", "id": "ni_1727437852815186", "direction": "input", "side": "left"}, {"name": "ext_reset_in", "id": "ni_1727437852815187", "direction": "input", "side": "left"}, {"name": "mb_reset", "id": "ni_1727437852815188", "direction": "output", "side": "right"}, {"name": "interconnect_aresetn", "id": "ni_1727437852815189", "direction": "output", "side": "right"}, {"name": "slowest_sync_clk", "id": "ni_1727437852815190", "direction": "input", "side": "left"}, {"name": "bus_struct_reset", "id": "ni_1727437852815191", "direction": "output", "side": "right"}], "properties": []}, {"name": "proc_sys_reset", "id": "node_1727437852815203", "instanceName": "reset1", "twoColumn": true, "interfaces": [{"name": "peripheral_reset", "id": "ni_1727437852815193", "direction": "output", "side": "right"}, {"name": "mb_debug_sys_rst", "id": "ni_1727437852815194", "direction": "input", "side": "left"}, {"name": "peripheral_aresetn", "id": "ni_1727437852815195", "direction": "output", "side": "right"}, {"name": "aux_reset_in", "id": "ni_1727437852815196", "direction": "input", "side": "left"}, {"name": "dcm_locked", "id": "ni_1727437852815197", "direction": "input", "side": "left"}, {"name": "ext_reset_in", "id": "ni_1727437852815198", "direction": "input", "side": "left"}, {"name": "mb_reset", "id": "ni_1727437852815199", "direction": "output", "side": "right"}, {"name": "interconnect_aresetn", "id": "ni_1727437852815200", "direction": "output", "side": "right"}, {"name": "slowest_sync_clk", "id": "ni_1727437852815201", "direction": "input", "side": "left"}, {"name": "bus_struct_reset", "id": "ni_1727437852815202", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Output", "id": "node_1727437852815206", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815205", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815204", "value": "HDMI_CLK_P"}]}, {"name": "External Output", "id": "node_1727437852815209", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815208", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815207", "value": "HDMI_CLK_N"}]}, {"name": "External Output", "id": "node_1727437852815212", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815211", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815210", "value": "HDMI_D0_P"}]}, {"name": "External Output", "id": "node_1727437852815215", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815214", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815213", "value": "HDMI_D0_N"}]}, {"name": "External Output", "id": "node_1727437852815218", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815217", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815216", "value": "HDMI_D1_P"}]}, {"name": "External Output", "id": "node_1727437852815221", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815220", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815219", "value": "HDMI_D1_N"}]}, {"name": "External Output", "id": "node_1727437852815224", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815223", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815222", "value": "HDMI_D2_P"}]}, {"name": "External Output", "id": "node_1727437852815227", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815226", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1727437852815225", "value": "HDMI_D2_N"}]}, {"name": "External Inout", "id": "node_1727437852815230", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815229", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815228", "value": "ddr_addr"}]}, {"name": "External Inout", "id": "node_1727437852815233", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815232", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815231", "value": "ddr_bankaddr"}]}, {"name": "External Inout", "id": "node_1727437852815236", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815235", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815234", "value": "ddr_cas_n"}]}, {"name": "External Inout", "id": "node_1727437852815239", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815238", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815237", "value": "ddr_cke"}]}, {"name": "External Inout", "id": "node_1727437852815242", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815241", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815240", "value": "ddr_clk"}]}, {"name": "External Inout", "id": "node_1727437852815245", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815244", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815243", "value": "ddr_clk_n"}]}, {"name": "External Inout", "id": "node_1727437852815248", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815247", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815246", "value": "ddr_cs_n"}]}, {"name": "External Inout", "id": "node_1727437852815251", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815250", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815249", "value": "ddr_dm"}]}, {"name": "External Inout", "id": "node_1727437852815254", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815253", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815252", "value": "ddr_dq"}]}, {"name": "External Inout", "id": "node_1727437852815257", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815256", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815255", "value": "ddr_dqs"}]}, {"name": "External Inout", "id": "node_1727437852815260", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852815259", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852815258", "value": "ddr_dqs_n"}]}, {"name": "External Inout", "id": "node_1727437852816263", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816262", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816261", "value": "ddr_drstb"}]}, {"name": "External Inout", "id": "node_1727437852816266", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816265", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816264", "value": "ddr_odt"}]}, {"name": "External Inout", "id": "node_1727437852816269", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816268", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816267", "value": "ddr_ras_n"}]}, {"name": "External Inout", "id": "node_1727437852816272", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816271", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816270", "value": "ddr_vr_n"}]}, {"name": "External Inout", "id": "node_1727437852816275", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816274", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816273", "value": "ddr_vr"}]}, {"name": "External Inout", "id": "node_1727437852816278", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816277", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816276", "value": "ddr_web"}]}, {"name": "External Inout", "id": "node_1727437852816281", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816280", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816279", "value": "ps_mio"}]}, {"name": "External Inout", "id": "node_1727437852816284", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816283", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816282", "value": "ps_clk"}]}, {"name": "External Inout", "id": "node_1727437852816287", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816286", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816285", "value": "ps_porb"}]}, {"name": "External Inout", "id": "node_1727437852816290", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1727437852816289", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1727437852816288", "value": "ps_srstb"}]}, {"name": "Constant", "id": "node_1727437852816497", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1727437852816496", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1727437852816495", "value": "0"}]}, {"name": "Constant", "id": "node_1727437852816500", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1727437852816499", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1727437852816498", "value": "1"}]}], "connections": [{"id": "1727437852816501", "from": "ni_1727437852815151", "to": "ni_17274378528156"}, {"id": "1727437852816502", "from": "ni_1727437852815191", "to": "ni_17274378528157"}, {"id": "1727437852816503", "from": "ni_1727437852815151", "to": "ni_172743785281517"}, {"id": "1727437852816504", "from": "ni_1727437852815191", "to": "ni_172743785281518"}, {"id": "1727437852816505", "from": "ni_1727437852815151", "to": "ni_172743785281528"}, {"id": "1727437852816506", "from": "ni_1727437852815191", "to": "ni_172743785281529"}, {"id": "1727437852816507", "from": "ni_1727437852815151", "to": "ni_172743785281546"}, {"id": "1727437852816508", "from": "ni_1727437852815191", "to": "ni_172743785281547"}, {"id": "1727437852816509", "from": "ni_1727437852815151", "to": "ni_172743785281554"}, {"id": "1727437852816510", "from": "ni_1727437852815189", "to": "ni_172743785281553"}, {"id": "1727437852816511", "from": "ni_1727437852815191", "to": "ni_172743785281568"}, {"id": "1727437852816512", "from": "ni_1727437852815138", "to": "ni_172743785281566"}, {"id": "1727437852816513", "from": "ni_1727437852815151", "to": "ni_172743785281572"}, {"id": "1727437852816514", "from": "ni_1727437852815138", "to": "ni_172743785281580"}, {"id": "1727437852816515", "from": "ni_1727437852815200", "to": "ni_172743785281579"}, {"id": "1727437852816516", "from": "ni_172743785281589", "to": "ni_172743785281586"}, {"id": "1727437852816517", "from": "ni_1727437852815138", "to": "ni_172743785281585"}, {"id": "1727437852816518", "from": "ni_1727437852815151", "to": "ni_172743785281587"}, {"id": "1727437852816519", "from": "ni_1727437852815139", "to": "ni_172743785281591"}, {"id": "1727437852816520", "from": "ni_1727437852815138", "to": "ni_172743785281599"}, {"id": "1727437852816521", "from": "ni_1727437852815151", "to": "ni_172743785281590"}, {"id": "1727437852816522", "from": "ni_1727437852815184", "to": "ni_172743785281598"}, {"id": "1727437852816523", "from": "ni_1727437852815151", "to": "ni_1727437852815106"}, {"id": "1727437852816524", "from": "ni_172743785281584", "to": "ni_1727437852815111"}, {"id": "1727437852816525", "from": "ni_172743785281584", "to": "ni_1727437852815109"}, {"id": "1727437852816526", "from": "ni_1727437852815182", "to": "ni_1727437852815107"}, {"id": "1727437852816527", "from": "ni_172743785281597", "to": "ni_1727437852815128"}, {"id": "1727437852816528", "from": "ni_1727437852815100", "to": "ni_1727437852815123"}, {"id": "1727437852816529", "from": "ni_1727437852815101", "to": "ni_1727437852815133"}, {"id": "1727437852816530", "from": "ni_172743785281594", "to": "ni_1727437852815134"}, {"id": "1727437852816531", "from": "ni_172743785281596", "to": "ni_1727437852815122"}, {"id": "1727437852816532", "from": "ni_1727437852815139", "to": "ni_1727437852815130"}, {"id": "1727437852816533", "from": "ni_1727437852815140", "to": "ni_1727437852815121"}, {"id": "1727437852816534", "from": "ni_1727437852815138", "to": "ni_1727437852815124"}, {"id": "1727437852816535", "from": "ni_172743785281593", "to": "ni_1727437852815135"}, {"id": "1727437852816536", "from": "ni_172743785281595", "to": "ni_1727437852815126"}, {"id": "1727437852816537", "from": "ni_172743785281592", "to": "ni_1727437852815129"}, {"id": "1727437852816538", "from": "ni_1727437852815102", "to": "ni_1727437852815120"}, {"id": "1727437852816539", "from": "ni_1727437852815147", "to": "ni_1727437852815137"}, {"id": "1727437852816540", "from": "ni_1727437852815151", "to": "ni_1727437852815142"}, {"id": "1727437852816541", "from": "ni_1727437852815182", "to": "ni_1727437852815141"}, {"id": "1727437852816542", "from": "ni_1727437852815108", "to": "ni_1727437852815157"}, {"id": "1727437852816543", "from": "ni_1727437852815110", "to": "ni_1727437852815154"}, {"id": "1727437852816544", "from": "ni_1727437852815151", "to": "ni_1727437852815167"}, {"id": "1727437852816545", "from": "ni_1727437852815151", "to": "ni_1727437852815173"}, {"id": "1727437852816546", "from": "ni_1727437852815151", "to": "ni_1727437852815190"}, {"id": "1727437852816547", "from": "ni_1727437852815138", "to": "ni_1727437852815201"}, {"id": "1727437852816548", "from": "ni_172743785281551", "to": "ni_17274378528158"}, {"id": "1727437852816549", "from": "ni_172743785281550", "to": "ni_172743785281519"}, {"id": "1727437852816550", "from": "ni_172743785281549", "to": "ni_172743785281530"}, {"id": "1727437852816551", "from": "ni_1727437852815179", "to": "ni_172743785281548"}, {"id": "1727437852816552", "from": "ni_1727437852815114", "to": "ni_172743785281555"}, {"id": "1727437852816553", "from": "ni_1727437852815112", "to": "ni_172743785281574"}, {"id": "1727437852816554", "from": "ni_172743785281575", "to": "ni_172743785281581"}, {"id": "1727437852816555", "from": "ni_17274378528159", "to": "ni_1727437852815103"}, {"id": "1727437852816556", "from": "ni_172743785281582", "to": "ni_1727437852815104"}, {"id": "1727437852816557", "from": "ni_172743785281520", "to": "ni_1727437852815113"}, {"id": "1727437852816558", "from": "ni_172743785281531", "to": "ni_1727437852815143"}, {"id": "1727437852816559", "from": "ni_172743785281556", "to": "ni_1727437852815180"}, {"id": "1727437852816560", "from": "ni_1727437852815119", "to": "ni_1727437852815208"}, {"id": "1727437852816561", "from": "ni_1727437852815125", "to": "ni_1727437852815205"}, {"id": "1727437852816562", "from": "ni_1727437852815127", "to": "ni_1727437852815214"}, {"id": "1727437852816563", "from": "ni_1727437852815131", "to": "ni_1727437852815211"}, {"id": "1727437852816564", "from": "ni_1727437852815116", "to": "ni_1727437852815220"}, {"id": "1727437852816565", "from": "ni_1727437852815118", "to": "ni_1727437852815217"}, {"id": "1727437852816566", "from": "ni_1727437852815132", "to": "ni_1727437852815226"}, {"id": "1727437852816567", "from": "ni_1727437852815117", "to": "ni_1727437852815223"}, {"id": "1727437852816568", "from": "ni_1727437852816496", "to": "ni_1727437852815185"}, {"id": "1727437852816569", "from": "ni_1727437852816499", "to": "ni_1727437852815186"}, {"id": "1727437852816570", "from": "ni_1727437852816496", "to": "ni_1727437852815187"}, {"id": "1727437852816571", "from": "ni_1727437852816496", "to": "ni_1727437852815183"}, {"id": "1727437852816572", "from": "ni_1727437852816496", "to": "ni_1727437852815196"}, {"id": "1727437852816573", "from": "ni_1727437852816499", "to": "ni_1727437852815197"}, {"id": "1727437852816574", "from": "ni_1727437852816496", "to": "ni_1727437852815198"}, {"id": "1727437852817575", "from": "ni_1727437852816496", "to": "ni_1727437852815194"}, {"id": "1727437852817576", "from": "ni_1727437852815229", "to": "ni_1727437852815146"}, {"id": "1727437852817577", "from": "ni_1727437852815232", "to": "ni_1727437852815161"}, {"id": "1727437852817578", "from": "ni_1727437852815235", "to": "ni_1727437852815160"}, {"id": "1727437852817579", "from": "ni_1727437852815238", "to": "ni_1727437852815153"}, {"id": "1727437852817580", "from": "ni_1727437852815241", "to": "ni_1727437852815165"}, {"id": "1727437852817581", "from": "ni_1727437852815244", "to": "ni_1727437852815162"}, {"id": "1727437852817582", "from": "ni_1727437852815247", "to": "ni_1727437852815166"}, {"id": "1727437852817583", "from": "ni_1727437852815250", "to": "ni_1727437852815155"}, {"id": "1727437852817584", "from": "ni_1727437852815253", "to": "ni_1727437852815168"}, {"id": "1727437852817585", "from": "ni_1727437852815256", "to": "ni_1727437852815158"}, {"id": "1727437852817586", "from": "ni_1727437852815259", "to": "ni_1727437852815170"}, {"id": "1727437852817587", "from": "ni_1727437852816262", "to": "ni_1727437852815164"}, {"id": "1727437852817588", "from": "ni_1727437852816265", "to": "ni_1727437852815172"}, {"id": "1727437852817589", "from": "ni_1727437852816268", "to": "ni_1727437852815159"}, {"id": "1727437852817590", "from": "ni_1727437852816271", "to": "ni_1727437852815145"}, {"id": "1727437852817591", "from": "ni_1727437852816274", "to": "ni_1727437852815152"}, {"id": "1727437852817592", "from": "ni_1727437852816277", "to": "ni_1727437852815163"}, {"id": "1727437852817593", "from": "ni_1727437852816280", "to": "ni_1727437852815150"}, {"id": "1727437852817594", "from": "ni_1727437852816283", "to": "ni_1727437852815156"}, {"id": "1727437852817595", "from": "ni_1727437852816286", "to": "ni_1727437852815171"}, {"id": "1727437852817596", "from": "ni_1727437852816289", "to": "ni_1727437852815178"}]}], "entryGraph": "1727437852817597", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json b/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json new file mode 100644 index 00000000..ee8fea4f --- /dev/null +++ b/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json @@ -0,0 +1 @@ +{"graphs": [{"id": "172743784738938", "nodes": [{"name": "core1", "id": "node_17274378473895", "instanceName": "core1", "twoColumn": true, "interfaces": [{"name": "in_1", "id": "ni_17274378473890", "direction": "input", "side": "left"}, {"name": "in_3", "id": "ni_17274378473891", "direction": "input", "side": "left"}, {"name": "in_2", "id": "ni_17274378473892", "direction": "input", "side": "left"}, {"name": "out_1", "id": "ni_17274378473893", "direction": "output", "side": "right"}, {"name": "inter_1", "id": "ni_17274378473894", "direction": "output", "side": "right"}], "properties": []}, {"name": "core2", "id": "node_172743784738910", "instanceName": "core2", "twoColumn": true, "interfaces": [{"name": "in_1", "id": "ni_17274378473896", "direction": "input", "side": "left"}, {"name": "in_2", "id": "ni_17274378473897", "direction": "input", "side": "left"}, {"name": "out_1", "id": "ni_17274378473898", "direction": "output", "side": "right"}, {"name": "inter_2", "id": "ni_17274378473899", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_172743784738913", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784738912", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743784738911", "value": "ex_in_1"}]}, {"name": "External Input", "id": "node_172743784738916", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784738915", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "172743784738914", "value": "ex_in_2"}]}, {"name": "External Output", "id": "node_172743784738919", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_172743784738918", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "172743784738917", "value": "ex_out_1"}]}], "connections": [{"id": "172743784738931", "from": "ni_17274378473893", "to": "ni_17274378473896"}, {"id": "172743784738932", "from": "ni_17274378473894", "to": "ni_17274378473899"}, {"id": "172743784738933", "from": "ni_172743784738912", "to": "ni_17274378473890"}, {"id": "172743784738934", "from": "ni_172743784738912", "to": "ni_17274378473892"}, {"id": "172743784738935", "from": "ni_172743784738915", "to": "ni_17274378473891"}, {"id": "172743784738936", "from": "ni_172743784738915", "to": "ni_17274378473897"}, {"id": "172743784738937", "from": "ni_17274378473898", "to": "ni_172743784738918"}]}], "entryGraph": "172743784738938", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json b/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json new file mode 100644 index 00000000..f65e874f --- /dev/null +++ b/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "ibuf", "layer": "ibuf", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ibuf.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/cd2517250b731367c39ced33d1a6192c/specification.json b/_downloads/cd2517250b731367c39ced33d1a6192c/specification.json new file mode 100644 index 00000000..c4b4a93d --- /dev/null +++ b/_downloads/cd2517250b731367c39ced33d1a6192c/specification.json @@ -0,0 +1,224 @@ +{ + "version": "20240723.13", + "metadata": { + "allowLoopbacks": true, + "backgroundSize": 15, + "connectionStyle": "orthogonal", + "interfaces": { + "port": { + "interfaceColor": "#00ca7c", + "interfaceConnectionColor": "#ffffff", + "interfaceConnectionPattern": "solid" + } + }, + "layout": "CytoscapeEngine - grid", + "movementStep": 15, + "navbarItems": [ + { + "allowToRunInParallelWith": [ + "dataflow_run", + "custom_lint_files" + ], + "iconName": "Validate", + "name": "Validate", + "procedureName": "dataflow_validate", + "stopName": "Stop" + }, + { + "allowToRunInParallelWith": [ + "dataflow_validate", + "custom_lint_files" + ], + "iconName": "Run", + "name": "Run", + "procedureName": "dataflow_run", + "stopName": "Stop" + } + ], + "twoColumn": true + }, + "nodes": [ + { + "abstract": false, + "additionalData": "gen_simple_core_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "rst", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "clk", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "z", + "type": [ + "port" + ] + } + ], + "layer": "gen_simple_core_1", + "name": "gen_simple_core_1" + }, + { + "abstract": false, + "additionalData": "gen_simple_core_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "a", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "y", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c", + "type": [ + "port" + ] + } + ], + "layer": "gen_simple_core_2", + "name": "gen_simple_core_2" + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Output", + "name": "External Output", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Input", + "name": "External Input", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "inout", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "External Inout", + "name": "External Inout", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "constant", + "type": [ + "port" + ] + } + ], + "layer": "Constant", + "name": "Constant", + "properties": [ + { + "default": "0", + "name": "Constant Value", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "subgraph out", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "subgraph in", + "type": [ + "port" + ] + } + ], + "layer": "Subgraph port", + "name": "Subgraph port" + } + ] +} diff --git a/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json b/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json new file mode 100644 index 00000000..08154540 --- /dev/null +++ b/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "core2", "layer": "core2", "category": "IPcore", "abstract": false, "interfaces": [{"name": "out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "inter_2", "direction": "input", "type": ["iface_coreStream"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/example_core2/core2.yaml"}, {"name": "core1", "layer": "core1", "category": "IPcore", "abstract": false, "interfaces": [{"name": "in_3", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "inter_1", "direction": "output", "type": ["iface_coreStream"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/example_core1/core1.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_coreStream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json b/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json new file mode 100644 index 00000000..29b379c6 --- /dev/null +++ b/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "axi_dispctrl", "layer": "axi_dispctrl", "category": "IPcore", "abstract": false, "interfaces": [{"name": "DIH_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "LOCKED_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIEN_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGUARD_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DGUARD_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s00_axi_aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXIS_ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DATA_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s00_axi_aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DE_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "CTL_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S00_AXI", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}, {"name": "S_AXIS", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "ipcores/axi_dispctrl.yaml"}, {"name": "clock_crossing", "layer": "clock_crossing", "category": "IPcore", "abstract": false, "interfaces": [{"name": "B", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkB", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "A", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkA", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/clock_crossing.yaml"}, {"name": "dma_axi_in_axis_out", "layer": "dma_axi_in_axis_out", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clock", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_irq_readerDone", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_irq_writerDone", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_sync_writerSync", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_sync_readerSync", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "reset", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "ipcores/dma_axi_in_axis_out.yaml"}, {"name": "hdmi_tx", "layer": "hdmi_tx", "category": "IPcore", "abstract": false, "interfaces": [{"name": "HDMI_D1_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_DE", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DGUARD", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_CLK_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_CLK_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D2_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_VS", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIH", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DATA_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D2_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIEN", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D1_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "CTL", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGUARD", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D0_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "LOCKED_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "PXLCLK_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "PXLCLK_5X_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_HS", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/hdmi_tx.yaml"}, {"name": "litex_mmcm", "layer": "litex_mmcm", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clkgen_locked", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_ref", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_out0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_out1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "ipcores/litex_mmcm.yaml"}, {"name": "proc_sys_reset", "layer": "proc_sys_reset", "category": "IPcore", "abstract": false, "interfaces": [{"name": "dcm_locked", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ext_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "slowest_sync_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "bus_struct_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_debug_sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aux_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "interconnect_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/proc_sys_reset.yaml"}, {"name": "ps7", "layer": "ps7", "category": "IPcore", "abstract": false, "interfaces": [{"name": "SAXIHP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0WACOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_drstb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "IRQ_F2P_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cke", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0RCOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dqs_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0RACOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cs_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cas_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_vr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_srstb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_porb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_web", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "IRQ_F2P_0", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_odt", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_clk", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dq", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0WCOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK_RESET0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_clk", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_clk_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dqs", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dm", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_bankaddr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_ras_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_vr_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_addr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_mio", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "M_AXI_GP0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "S_AXI_HP0", "direction": "input", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ps7.yaml"}, {"name": "axi_axil_adapter", "layer": "axi_axil_adapter", "category": "IPcore", "abstract": false, "properties": [{"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_ID_WIDTH", "type": "text", "default": "8"}, {"name": "AXI_STRB_WIDTH", "type": "text", "default": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXIL_STRB_WIDTH", "type": "text", "default": "AXIL_DATA_WIDTH/8"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_axil_adapter.yaml"}, {"name": "axi_interconnect", "layer": "axi_interconnect", "category": "IPcore", "abstract": false, "properties": [{"name": "S_COUNT", "type": "text", "default": "1"}, {"name": "M_COUNT", "type": "text", "default": "4"}, {"name": "DATA_WIDTH", "type": "text", "default": "32"}, {"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "ID_WIDTH", "type": "text", "default": "12"}, {"name": "M_BASE_ADDR", "type": "text", "default": "0"}, {"name": "M_ADDR_WIDTH", "type": "text", "default": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "type": "text", "default": "1"}, {"name": "WUSER_WIDTH", "type": "text", "default": "1"}, {"name": "ARUSER_WIDTH", "type": "text", "default": "1"}, {"name": "BUSER_WIDTH", "type": "text", "default": "1"}, {"name": "RUSER_WIDTH", "type": "text", "default": "1"}, {"name": "STRB_WIDTH", "type": "text", "default": "DATA_WIDTH/8"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi_0", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_1", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_2", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_interconnect.yaml"}, {"name": "axi_protocol_converter", "layer": "axi_protocol_converter", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXI", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "M_AXI", "direction": "output", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_protocol_converter.yaml"}, {"name": "axis_async_fifo", "layer": "axis_async_fifo", "category": "IPcore", "abstract": false, "properties": [{"name": "DATA_WIDTH", "type": "text", "default": "8"}, {"name": "KEEP_WIDTH", "type": "text", "default": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "type": "text", "default": "8"}, {"name": "DEST_WIDTH", "type": "text", "default": "8"}, {"name": "USER_WIDTH", "type": "text", "default": "1"}, {"name": "ID_ENABLE", "type": "text", "default": "0"}, {"name": "USER_ENABLE", "type": "text", "default": "1"}], "interfaces": [{"name": "m_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "async_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_async_fifo.yaml"}, {"name": "axis_dwidth_converter", "layer": "axis_dwidth_converter", "category": "IPcore", "abstract": false, "properties": [{"name": "IN_DATA_WIDTH", "type": "text", "default": "64"}, {"name": "OUT_DATA_WIDTH", "type": "text", "default": "32"}], "interfaces": [{"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_dwidth_converter.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_AXI4Stream", "iface_AXI3", "iface_AXI4", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI3", "iface_AXI4", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_AXI4Stream", "iface_AXI3", "iface_AXI4", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI3", "iface_AXI4", "iface_AXI4Lite"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_AXI4Stream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI3": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4Lite": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json b/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json new file mode 100644 index 00000000..28c46960 --- /dev/null +++ b/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json @@ -0,0 +1 @@ +{"graphs": [{"id": "172743785331226", "nodes": [{"name": "ibuf", "id": "node_17274378533124", "instanceName": "ip_ibuf", "twoColumn": true, "interfaces": [{"name": "a", "id": "ni_17274378533120", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17274378533121", "direction": "output", "side": "right"}, {"name": "rst", "id": "ni_17274378533122", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17274378533123", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_17274378533127", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17274378533126", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17274378533125", "value": "PORT_CLK"}]}, {"name": "External Output", "id": "node_172743785331210", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17274378533129", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "17274378533128", "value": "PORT_OUT"}]}, {"name": "Constant", "id": "node_172743785331218", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_172743785331217", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "172743785331216", "value": "1"}]}, {"name": "Constant", "id": "node_172743785331221", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_172743785331220", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "172743785331219", "value": "0"}]}], "connections": [{"id": "172743785331222", "from": "ni_17274378533126", "to": "ni_17274378533123"}, {"id": "172743785331223", "from": "ni_172743785331220", "to": "ni_17274378533122"}, {"id": "172743785331224", "from": "ni_172743785331217", "to": "ni_17274378533120"}, {"id": "172743785331225", "from": "ni_17274378533121", "to": "ni_17274378533129"}]}], "entryGraph": "172743785331226", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json b/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json new file mode 100644 index 00000000..c53703b6 --- /dev/null +++ b/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "gen_mem", "layer": "gen_mem", "category": "IPcore", "abstract": false, "properties": [{"name": "depth", "type": "text", "default": "256"}], "interfaces": [{"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mem_bus", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_mem.yaml"}, {"name": "gen_VexRiscv", "layer": "gen_VexRiscv", "category": "IPcore", "abstract": false, "interfaces": [{"name": "reset", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "softwareInterrupt", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "externalResetVector", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "externalInterruptArray", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "timerInterrupt", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "dBusWishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "iBusWishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_VexRiscv.yaml"}, {"name": "gen_crg", "layer": "gen_crg", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clk100", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_clk", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_crg.yaml"}, {"name": "gen_wb_uart", "layer": "gen_wb_uart", "category": "IPcore", "abstract": false, "interfaces": [{"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "serial1_rx", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "serial1_tx", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "csr_wishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_wb_uart.yaml"}, {"name": "gen_wb_interconnect", "layer": "gen_wb_interconnect", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "vexriscv_dBusWishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "vexriscv_iBusWishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_ram_data_mem_bus", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_ram_instr_mem_bus", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_uart_csr_wishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/gen_wb_interconnect.yaml"}, {"name": "External Output", "layer": "External Output", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "External Input", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "External Inout", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constant", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Subgraph port", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_wishbone": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_images/external_port.png b/_images/external_port.png new file mode 100644 index 00000000..3dff654f Binary files /dev/null and b/_images/external_port.png differ diff --git a/_images/getting_started_project.png b/_images/getting_started_project.png new file mode 100644 index 00000000..c672c92b Binary files /dev/null and b/_images/getting_started_project.png differ diff --git a/_images/invalid_connection.png b/_images/invalid_connection.png new file mode 100644 index 00000000..c157c312 Binary files /dev/null and b/_images/invalid_connection.png differ diff --git a/_images/ipconnect.png b/_images/ipconnect.png new file mode 100644 index 00000000..8fc97e15 Binary files /dev/null and b/_images/ipconnect.png differ diff --git a/_images/kpm_button_fullscreen.png b/_images/kpm_button_fullscreen.png new file mode 100644 index 00000000..61aa20f9 Binary files /dev/null and b/_images/kpm_button_fullscreen.png differ diff --git a/_images/kpm_buttons.png b/_images/kpm_buttons.png new file mode 100644 index 00000000..512f4cba Binary files /dev/null and b/_images/kpm_buttons.png differ diff --git a/_images/node_parameters.png b/_images/node_parameters.png new file mode 100644 index 00000000..f951c484 Binary files /dev/null and b/_images/node_parameters.png differ diff --git a/_images/pwm_design.png b/_images/pwm_design.png new file mode 100644 index 00000000..1a93c795 Binary files /dev/null and b/_images/pwm_design.png differ diff --git a/_images/save_graph_kpm.png b/_images/save_graph_kpm.png new file mode 100644 index 00000000..0ac5319b Binary files /dev/null and b/_images/save_graph_kpm.png differ diff --git a/_images/side_bar_kpm.png b/_images/side_bar_kpm.png new file mode 100644 index 00000000..0ae59113 Binary files /dev/null and b/_images/side_bar_kpm.png differ diff --git a/_images/wrapper.png b/_images/wrapper.png new file mode 100644 index 00000000..f9c5c11d Binary files /dev/null and b/_images/wrapper.png differ diff --git a/_sources/description_files.md.txt b/_sources/description_files.md.txt new file mode 100644 index 00000000..93129b27 --- /dev/null +++ b/_sources/description_files.md.txt @@ -0,0 +1,306 @@ +(description-files)= + +# Creating a design + +(design-description)= + +## Design Description + +To create a complete, fully synthesizable design, a proper design file is needed. +It's used to specify interconnects, IP cores, set their parameters' values, describe hierarchies for the project, +connect the IPs and hierarchies, and pick external ports (those which will be connected to physical I/O). + +You can see example design files in `examples` directory. The structure is as below: + +```yaml +ips: + # specify relations between IPs instance names in the + # design yaml and IP cores description yamls + {ip_instance_name}: + file: {path_to_ip_description} + ... + +design: + name: {design_name} # optional name of the toplevel + hierarchies: + # see "Hierarchies" below for a detailed description of the format + ... + parameters: # specify IPs parameter values to be overridden + {ip_instance_name}: + {param_name} : {param_value} + ... + + ports: + # specify incoming ports connections of an IP named `ip1_name` + {ip1_name}: + {port1_name} : [{ip2_name}, {port2_name}] + ... + # specify incoming ports connections of a hierarchy named `hier_name` + {hier_name}: + {port1_name} : [{ip_name}, {port2_name}] + ... + # specify external ports connections + {ip_instance_name}: + {port_name} : ext_port_name + ... + + interfaces: + # specify incoming interfaces connections of `ip1_name` IP + {ip1_name}: + {iface1_name} : [{ip2_name}, {iface2_name}] + ... + # specify incoming interfaces connections of `hier_name` hierarchy + {hier_name}: + {iface1_name} : [{ip_name}, {iface2_name}] + ... + # specify external interfaces connections + {ip_instance_name}: + {iface_name} : ext_iface_name + ... + + interconnects: + # see "Interconnect generation" page for a detailed description of the format + ... + +external: # specify names of external ports and interfaces of the top module + ports: + out: + - {ext_port_name} + inout: + - [{ip_name/hierarchy_name, port_name}] + interfaces: + in: + - {ext_iface_name} + # note that `inout:` is invalid in the interfaces section +``` + +`inout` ports are handled differently than `in` and `out` ports. When any IP has an inout port or when a hierarchy has an inout port specified in its `external.ports.inout` section, it must be included in `external.ports.inout` section of the parent design by specifying the name of the IP/hierarchy and port name that contains it. Name of the external port will be identical to the one in the IP core. In case of duplicate names a suffix `$n` is added (where `n` is a natural number) to the name of the second and subsequent duplicate names. `inout` ports cannot be connected to each other. + +The design description yaml format allows creating hierarchical designs. In order to create a hierarchy, it suffices to add its name as a key in the `design` section and describe the hierarchy design "recursively" by using the same keys and values (`ports`, `parameters` etc.) as in the top-level design (see above). Hierarchies can be nested recursively, which means that you can create a hierarchy inside another one. + +Note that IPs and hierarchies names cannot be duplicated on the same hierarchy level. For example, the `design` section cannot contain two identical keys, but it's correct to have `ip_name` key in this section and `ip_name` in the `design` section of some hierarchy. + + +(hierarchies)= +### Hierarchies + +Hierarchies allow for creating designs with subgraphs in them. +Subgraphs can contain multiple IP-cores and other subgraphs. +This allows creating nested designs in topwrap. + +### Format + +All information about hierarchies is specified in [design description](description_files.md). +`hierarchies` key must be a direct descendant of the `design` key. +Format is as follows: + +```yaml +hierarchies: + {hierarchy_name_1}: + ips: # ips that are used on this hierarchy level + {ip_name}: + ... + + design: + parameters: + ... + ports: # ports connections internal to this hierarchy + # note that also you have to connect port to it's external port equivalent (if exists) + {ip1_name}: + {port1_name} : [{ip2_name}, {port2_name}] + {port2_name} : {port2_external_equivalent} # connection to external port equivalent. Note that it has to be to the parent port + ... + hierarchies: + {nested_hierarchy_name}: + # structure here will be the same as for {hierarchy_name_1} + ... + external: + # external ports and/or interfaces of this hierarchy; these can be + # referenced in the upper-level `ports`, `interfaces` or `external` section + ports: + in: + - {port2_external_equivalent} + ... + {hierarchy_name_2}: + ... +``` + +More complex hierarchy example can be found in [examples/hierarchy](https://github.com/antmicro/topwrap/tree/main/examples/hierarchy). + + +(ip-description)= + +## IP description files + +Every IP wrapped by Topwrap needs a description file in YAML format. + +The ports of an IP should be placed in global `signals` node, followed by the direction of `in`, `out` or `inout`. +The module name of an IP should be placed in global `name` node, it should be consistent with how it is defined in HDL file. +Here's an example description of ports of Clock Crossing IP: + +```yaml +# file: clock_crossing.yaml +name: cdc_flag +signals: + in: + - clkA + - A + - clkB + out: + - B +``` + +The previous example is enough to make use of any IP. However, in order to benefit from connecting whole interfaces at once, ports must belong to a named interface like in this example: + +```yaml +#file: axis_width_converter.yaml +name: axis_width_converter +interfaces: + s_axis: + type: AXIStream + mode: slave + signals: + in: + TDATA: [s_axis_tdata, 63, 0] + TKEEP: [s_axis_tkeep, 7, 0] + TVALID: s_axis_tvalid + TLAST: s_axis_tlast + TID: [s_axis_tid, 7, 0] + TDEST: [s_axis_tdest, 7, 0] + TUSER: s_axis_tuser + out: + TREADY: s_axis_tready + + m_axis: + type: AXIStream + mode: master + signals: + in: + TREADY: m_axis_tready + out: + TDATA: [m_axis_tdata, 31, 0] + TKEEP: [m_axis_tkeep, 3, 0] + TVALID: m_axis_tvalid + TLAST: m_axis_tlast + TID: [m_axis_tid, 7, 0] + TDEST: [m_axis_tdest, 7, 0] + TUSER: m_axis_tuser +signals: # These ports don't belong to any interface + in: + - clk + - rst +``` + +Names `s_axis` and `m_axis` will be used to group the selected ports. +Each signal in an interface has a name which must match with the signal it's supposed to be connected to, for example `TDATA: port_name` will be connected to `TDATA: other_port_name`. + +Note that you don't have to write IP core description yamls by hand. You can use Topwrap's `parse` command (see {ref}`Generating IP core description YAMLs `) in order to generate yamls from HDL source files and then adjust the yaml to your needs. + +### Port widths + +The width of every port defaults to `1`. +You can specify the width using this notation: + +```yaml +interfaces: + s_axis: + type: AXIStream + mode: slave + signals: + in: + TDATA: [s_axis_tdata, 63, 0] # 64 bits + ... + TVALID: s_axis_tvalid # defaults to 1 bit + +signals: + in: + - [gpio_io_i, 31, 0] # 32 bits +``` + +### Parameterization + +Port widths don't have to be hardcoded - you can use parameters to describe an IP core in a generic way. +Values specified in IP core yamls can be overridden in a design description file (see {ref}`Design Description `). + +```yaml +parameters: + DATA_WIDTH: 8 + KEEP_WIDTH: (DATA_WIDTH+7)/8 + ID_WIDTH: 8 + DEST_WIDTH: 8 + USER_WIDTH: 1 + +interfaces: + s_axis: + type: AXI4Stream + mode: slave + signals: + in: + TDATA: [s_axis_tdata, DATA_WIDTH-1, 0] + TKEEP: [s_axis_tkeep, KEEP_WIDTH-1, 0] + ... + TID: [s_axis_tid, ID_WIDTH-1, 0] + TDEST: [s_axis_tdest, DEST_WIDTH-1, 0] + TUSER: [s_axis_tuser, USER_WIDTH-1, 0] +``` + +Parameters values can be integers or math expressions, which are evaluated using `numexpr.evaluate()`. + +(port-slicing)= + +### Port slicing + +You can also slice a port, to use some bits of the port as a signal that belongs to an interface. +The example below means: + +`Port m_axi_bid of the IP core is 36 bits wide. Use bits 23..12 as the BID signal of AXI master named m_axi_1` + +```yaml +m_axi_1: + type: AXI + mode: master + signals: + in: + BID: [m_axi_bid, 35, 0, 23, 12] +``` + +(interface-description-files)= + +## Interface Description files + +Topwrap can use predefined interfaces described in YAML files that come packaged with the tool. +Currently supported interfaces are AXI4, AXI3, AXI Stream, AXI Lite and Wishbone. + +You can see an example file below: + +```yaml +name: AXI4Stream +port_prefix: AXIS +signals: + # convention assumes the AXI Stream transmitter (master) perspective + required: + out: + TVALID: tvalid + TDATA: tdata + TLAST: tlast + in: + TREADY: tready + optional: + out: + TID: tid + TDEST: tdest + TKEEP: tkeep + TSTRB: tstrb + TUSER: tuser + TWAKEUP: twakeup +``` + +The name of an interface has to be unique. +We also specify a prefix which will be used as a shortened identifier. +Signals are either required or optional. +Their direction is described from the the perspective of master (i.e. directionality of signals in the slave is flipped) - note that clock and reset are not included as these are usually inputs in both master and slave so they're not supported in interface specification. +These distinctions are used when an option to check if all mandatory signals are present is enabled and when parsing an IP core with `topwrap parse` (not all required signals must necessarily be present but it's taken into account). +Every signal is a key-value pair, where the key is a generic signal name (usually from interface specification) and value is a regex that is used to pair the generic name with a concrete signal name in the RTL source when using `topwrap parse`. +This pairing is performed on signal names that are transformed to lowercase and have a common prefix of an interface they belong to removed. +If a regexp occurs in such transformed signal name anywhere, that name is paired with the generic name. +Since this occurs on names that have all characters in lowercase, regex must be written in lowercase as well. diff --git a/_sources/developers_guide/config.md.txt b/_sources/developers_guide/config.md.txt new file mode 100644 index 00000000..1bc31145 --- /dev/null +++ b/_sources/developers_guide/config.md.txt @@ -0,0 +1,19 @@ +# Config + +A {class}`~topwrap.config.Config` object stores configuration values. +A global `topwrap.config.config` object is used throughout the codebase to access topwrap's configuration. +This is created by {class}`~topwrap.config.ConfigManager` that reads config files defined in {attr}`topwrap.config.ConfigManager.DEFAULT_SEARCH_PATHS`, with files most local to the project taking precedence. + +```{eval-rst} +.. autoclass:: topwrap.config.Config + :members: + + .. automethod:: __init__ +``` + +```{eval-rst} +.. autoclass:: topwrap.config.ConfigManager + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/elaboratable_wrapper.md.txt b/_sources/developers_guide/elaboratable_wrapper.md.txt new file mode 100644 index 00000000..68b7605b --- /dev/null +++ b/_sources/developers_guide/elaboratable_wrapper.md.txt @@ -0,0 +1,12 @@ +# ElaboratableWrapper class + +{class}`~topwrap.elaboratable_wrapper.ElaboratableWrapper` encapsulates an Amaranth's Elaboratable and exposes an interface compatible with other wrappers which allows making connections with them. +Supplied elaboratable must contain a `signature` property and a conforming interface as specified by [Amaranth docs](https://amaranth-lang.org/rfcs/0002-interfaces.html). +Ports' directionality, their names and widths are inferred from it. + +```{eval-rst} +.. autoclass:: topwrap.elaboratable_wrapper.ElaboratableWrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/examples.md.txt b/_sources/developers_guide/examples.md.txt new file mode 100644 index 00000000..b85ef58a --- /dev/null +++ b/_sources/developers_guide/examples.md.txt @@ -0,0 +1,17 @@ +# Examples + +:::{note} +Basic usage of examples is explained in the {ref}`getting-started` section. +::: + +Examples provided with this project should cover from very simple designs to complex fully synthesizable cores. +They should be sorted by increasing complexity and number of used features, e.g: +- 101: minimal base design +- 102: introduce user to parameters +- 103: introduce user to slicing +- 104: introduce user to interfaces +- 105: etc. + +Developers are encouraged to create/add new examples in the same spirit. +Simple examples are used to teach how to use this tool and demonstrate its features. +Real-world use cases are also welcome to prove that the implementation is mature enough to handle practical designs. diff --git a/_sources/developers_guide/fusesocbuilder.md.txt b/_sources/developers_guide/fusesocbuilder.md.txt new file mode 100644 index 00000000..464c0c16 --- /dev/null +++ b/_sources/developers_guide/fusesocbuilder.md.txt @@ -0,0 +1,34 @@ +# FuseSocBuilder + +Topwrap has support for generating FuseSoC's core files with {class}`~topwrap.fuse_helper.FuseSocBuilder`. +Such core file contains information about source files and synthesis tools. +Generation is based on a jinja template that defaults to `topwrap/templates/core.yaml.j2` but can be overridden. + +Here's an example of how to generate a simple project: + +```python +from topwrap.fuse_helper import FuseSocBuilder +fuse = FuseSocBuilder() + +# add source of the IPs used in the project +fuse.add_source('DMATop.v', 'verilogSource') + +# add source of the top file +fuse.add_source('top.v', 'verilogSource') + +# specify the names of the Core file and the directory where sources are stored +# generate the project +fuse.build('build/top.core', 'sources') +``` + +:::{warning} +Default template in `topwrap/templates/core.yaml.j2` does not make use of resources added with {meth}`~topwrap.fuse_helper.FuseSocBuilder.add_dependency` or {meth}`~topwrap.fuse_helper.FuseSocBuilder.add_external_ip`, i.e. they won't be present in the generated core file. +::: + + +```{eval-rst} +.. autoclass:: topwrap.fuse_helper.FuseSocBuilder + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/future_enhancements.md.txt b/_sources/developers_guide/future_enhancements.md.txt new file mode 100644 index 00000000..1063013a --- /dev/null +++ b/_sources/developers_guide/future_enhancements.md.txt @@ -0,0 +1,59 @@ +(future-enhancements)= + +# Future enhancements + +(hierarchical-block-designs)= +## Support for hierarchical block design in Pipeline Manager + +Currently topwrap supports creating hierarchical designs only by manually writing the hierarchy in the design description YAML. +Supporting such feature in the Pipeline Manager via its subgraphs would be a huge improvement in terms of organizing complex designs. + +(bus-management)= +## Bus management + +Another goal we'd like to achieve is to enable users to create full-featured designs with processors by providing proper support for bus management. +This should include features such as: + +* ability to specify the address of a peripheral device on the bus +* support for the most popular buses or the ones that we use (AXI, wishbone, Tile-link) + +This will require writing or creating bus arbiters (round-robin, crossbar) and providing a mechanism for connecting master(s) and slave(s) together. +As a result, the user should be able to create complex SoC with Topwrap. + +Currently only experimental support for Wishbone with a round-robin arbiter {ref}`is available `. + +(improve-recreating-design)= +## Improve the process of recreating a design from a YAML file + +One of the main features that are supported by Topwrap and Pipeline Manager is exporting and importing user-created design to or from a design description YAML. However, during these conversions, information about the positions of user-added nodes is not preserved. This is cumbersome in the case of complicated designs since the imported nodes cannot be placed in the optimal positions. + +Therefore, one of our objectives is to provide a convenient way of creating and restoring user-created designs in Pipeline Manager, so that the user doesn't have to worry about node positions when importing a design to Pipeline Manager. + +(systemverilog-parsing)= +## Support for parsing SystemVerilog sources + +Information about IP cores is stored in {ref}`IP core description YAMLs `. These files can be generated automatically from HDL source files - currently Verilog and VHDL are supported. Our goal is to provide the possibility of generating such YAMLs from SystemVerilog too. + +(pm-hdl-parsing)= +## Provide a way to parse HDL sources from the Pipeline Manager level + +Another issue related to HDL parsing is that the user has to manually parse HDL sources to obtain the IP core description YAMLs. Then the files need to be provided as command-line parameters when launching the Topwrap Pipeline Manager client application. Therefore, we aim to provide a way of parsing HDL files and including them in the editor directly from the Pipeline Manager level. + +(toplevel-vhdl)= +## Ability to produce top-level wrappers in VHDL + +Topwrap now uses Amaranth to generate top-level design in Verilog. We would also like to add the ability to produce such designs in VHDL. + +(core-library)= +## Library of open-source cores + +Currently user has to supply all of the cores used in the design manually or semi-manually (e.g. through FuseSoC). +A repository of open-source cores that could be easily reused in topwrap would improve convenience and allow quickly putting together a design from premade hardware blocks. + +(tools-integration)= +## Integrating with other tools + +Topwrap can build the design but testing and synthesis rely on the user - they have to automate this process themselves (e.g. with makefiles). +Ideally the user should be able to write scripts that integrate tools for synthesis, simulation and co-simulation (e.g. with Renode) with topwrap. +Some would come pre-packaged with topwrap (e.g. simulation with verilator, synthesis with vivado). +It should also be possible to invoke these from the Pipeline Manager GUI by using its ability to add custom buttons and integrated terminal. diff --git a/_sources/developers_guide/inline_kpm_howto.md.txt b/_sources/developers_guide/inline_kpm_howto.md.txt new file mode 100644 index 00000000..00d7e9c1 --- /dev/null +++ b/_sources/developers_guide/inline_kpm_howto.md.txt @@ -0,0 +1,61 @@ +# Using KPM iframes inside docs + +It is possible to use the `kpm_iframe` Sphinx directive to embed KPM directly inside a doc. + +## Usage + +```` +```{kpm_iframe} +:spec: +:dataflow: +:preview: +:height: +:alt: +``` +```` + +`URI` can represent either a local file from sources that gets copied into the build directory, or a remote resource. + +All parameters of this directive are optional. + + +## Tests + +### Use remote specification + +:::{note} +The graph below is supposed to be empty. +It doesn't load a dataflow, only a specification that provides IP-cores to the Nodes browser on the sidebar. +::: + +```{kpm_iframe} +:spec: https://raw.githubusercontent.com/antmicro/topwrap/main/tests/data/data_kpm/examples/hdmi/specification_hdmi.json +``` + +### Use local files + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: ../../../tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:height: 80vh +``` + +### Open in preview mode + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: ../../../tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:preview: true +``` + +### Use custom alt text + +:::{note} +The alternative text is visible instead of the iframe in the PDF version of this documentation. +::: + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: https://raw.githubusercontent.com/antmicro/topwrap/refs/heads/main/tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:alt: This diagram showcases the block design of the "hierarchy" example +``` diff --git a/_sources/developers_guide/interface.md.txt b/_sources/developers_guide/interface.md.txt new file mode 100644 index 00000000..03ef37bf --- /dev/null +++ b/_sources/developers_guide/interface.md.txt @@ -0,0 +1,18 @@ +# Interface definition + +Topwrap uses interface definition files for its parsing functionality. +These are used to match a given set of signals that appear in the HDL source with signals in the interface definition. + +{class}`~topwrap.interface.InterfaceDefinition` is defined as a {class}`marshmallow_dataclass.dataclass` - this enables loading YAML structure into Python objects and performs validation (that the YAML has the correct format) and typechecking (that the loaded values are of correct types). + + +```{eval-rst} +.. autoclass:: topwrap.interface.InterfaceDefinition + :members: + + .. automethod:: __init__ +``` + +```{eval-rst} +.. autofunction:: topwrap.interface.get_interface_by_name +``` diff --git a/_sources/developers_guide/ipconnect.md.txt b/_sources/developers_guide/ipconnect.md.txt new file mode 100644 index 00000000..8785b67d --- /dev/null +++ b/_sources/developers_guide/ipconnect.md.txt @@ -0,0 +1,39 @@ +# IPConnect class + +{class}`~topwrap.ipconnect.IPConnect` provides means of connecting ports and interfaces of objects that are subclasses of {class}`~topwrap.wrapper.Wrapper`. +Since {class}`~topwrap.ipconnect.IPConnect` is a subclass of {class}`~topwrap.wrapper.Wrapper` itself, this means that it also has IO - ports and interfaces, and that multiple {class}`~topwrap.ipconnect.IPConnect`s can have their ports and interfaces connected to each other (or other objects that subclass {class}`~topwrap.wrapper.Wrapper`). + +```{image} ../img/ipconnect.png +``` + +Instances of {class}`~topwrap.wrapper.Wrapper` objects can be added to an {class}`~topwrap.ipconnect.IPConnect` using {meth}`~topwrap.ipconnect.IPConnect.add_component` method: + +```python +# create a wrapper for an IP +dma = IPWrapper('DMATop.yaml', ip_name='DMATop', instance_name='DMATop0') +ipc = IPConnect() +ipc.add_component("dma", dma) +``` + +Connections between cores can then be made with {meth}`~topwrap.ipconnect.IPConnect.connect_ports` and {meth}`~topwrap.ipconnect.IPConnect.connect_interfaces` based on names of the components and names of ports/interfaces: + +```python +ipc.connect_ports("comp1_port_name", "comp1_name", "comp2_port_name", "comp2_name") +ipc.connect_interfaces("comp1_interface_name", "comp1_name", "comp2_interface_name", "comp2_name") +``` + +Setting ports or interfaces of a module added to {class}`~topwrap.ipconnect.IPConnect` as external with {meth}`~topwrap.ipconnect.IPConnect._set_port` and {meth}`~topwrap.ipconnect.IPConnect._set_interface` and allows these ports/interfaces to be connected to other {class}`~topwrap.wrapper.Wrapper` instances. +```python +ipc._set_port("comp1_name", "comp1_port_name", "external_port_name") +ipc._set_interface("comp1_name", "comp1_interface_name", "external_interface_name") +``` + +This is done automatically in {meth}`~topwrap.ipconnect.IPConnect.make_connections` method when the design is built based on the data from the YAML design description. + +```{eval-rst} +.. autoclass:: topwrap.ipconnect.IPConnect + :members: + :private-members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/ipwrapper.md.txt b/_sources/developers_guide/ipwrapper.md.txt new file mode 100644 index 00000000..a5ddebcc --- /dev/null +++ b/_sources/developers_guide/ipwrapper.md.txt @@ -0,0 +1,19 @@ +# IPWrapper class + +{class}`~topwrap.ipwrapper.IPWrapper` provides an abstraction over a raw HDL source file. +Instances of this class can be created from a loaded YAML IP-core description. + +Under the hood it will create Amaranth's `Instance` object during elaboration, referencing a particular HDL module and it will appear as a module instantiation in the generated toplevel. +Ports and interfaces (lists of ports) can be retrieved via standard methods of {class}`~topwrap.wrapper.Wrapper`. +These are instances of {class}`~topwrap.amaranth_helpers.WrapperPort`s. + + +```{image} ../img/wrapper.png +``` + +```{eval-rst} +.. autoclass:: topwrap.ipwrapper.IPWrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/parsing.md.txt b/_sources/developers_guide/parsing.md.txt new file mode 100644 index 00000000..3614ea39 --- /dev/null +++ b/_sources/developers_guide/parsing.md.txt @@ -0,0 +1,67 @@ +# Deducing interfaces + +This section describes how inferring interfaces works when using `topwrap parse` with `--iface-deduce`, `--iface` or `--use-yosys` options. + +The problem can be described as follows: given a set of signals, infer what interfaces are present in this set and assign signals to appropriate interfaces. +Interface names and types (AXI4, AXI Stream, Wishbone, etc.) are, in the general case, not given in advance. +Algorithm implemented in topwrap works roughly as follows: + +1. Split the given signal set into disjoint subsets of signals based on common prefixes in their names +2. For a given subset, try to pair each signal name (as it appears in the RTL) with the name of an interface signal (as it is defined in the specification of a particular interface). +This pairing is called "a matching". +Matching with signals from all defined interfaces is tried. +3. For a given subset and matched interface, infer the interface direction (master/slave) based on the direction of some signal in this set. +4. Compute score for each matching, e.g. if signal names contain `cyc`, `stb` and `ack` (and possibly more) it's likely that this set is a Wishbone interface. +Among all interfaces, interface that has the highest matching score is selected. + +## Step 1. - splitting ports into subsets + +First, all ports of a module are grouped into disjoint subsets. Execution of this step differs based on the options supplied to `topwrap parse`: +- with `--iface` the user supplies topwrap with interface names - ports with names starting with a given interface name will be put in the same subset. +- with `--use-yosys` grouping is done by parsing the RTL source with `yosys`, where ports have attributes in the form of `(* interface="interface_name" *)`. +Ports with the same `interface_name` will be put in the same subset. +- with `--iface-deduce` grouping is done by computing longest common prefixes among all ports. +This is done with the help of a [trie](https://en.wikipedia.org/wiki/Trie) and only allows prefixes that would split the port name on an underscore (e.g. in `under_score` valid prefixes are an empty string, `under` and `under_score`) or a camel-case word boundary (e.g. in `wordBoundary` valid prefixes are an empty string, `word` and `wordBoundary`). +As with user-supplied prefixes, ports with names starting with a given prefix will be put in the same subset. + +## Step 2. - matching ports with interface signal names + +Given a subset of ports from a previous step, this step tries to match a regexp from an interface definition YAML for a given interface signal to one of the port names and returns a collection of pairs: RTL port + interface port. +For example, when matching against AXI4, a port named `axi_a_arvalid` should match to an interface port named `ARVALID` in the interface definition YAML. + +This operation is performed for all defined interfaces per a given subset of ports so the overall result of this step is a collection of matchings. +For most interfaces these matching will be poor - e.g. `axi_a_arvalid` or other AXI4 signals won't match to most Wishbone interface signals, but an interface that a human would usually assign to a given set of signals will have the most signals matched. + +## Step 3. - inferring interface direction + +This step picks a representative RTL signal from a single signal matching from the previous step and checks its direction against direction of the corresponding interface signal in interface definition YAML - if it's the same then it's a master interface (since the convention in interface description files is to describe signals from the master's perspective), otherwise it's a slave. + +## Step 4. - computing interface matching score + +This step computes a score for each matching returned by step 2. +This score is based on the number of matched/unmatched optional/required signals in each matching. + +Not matching some signals in a given group (from step 1.) is heavily penalized to encourage selecting interface that "fits" a given group best. +For example, AXI Lite is a subset of AXI4, so a set of signals that should be assigned AXI4 interface could very well fit the description of AXI Lite, but this mechanism discourages selecting such matching in favor of selecting the other. + +Not matching some signals of a given interface (from interface description YAML) is also penalized. +Inverting the previous example, a set of signals that should be assigned AXI Lite interface could very well fit the description of AXI4, but because it's missing a few AXI4 signals so selecting this matching is discouraged in favor of selecting the other. + +### Good scoring function + +A well-behaving scoring function should satisfy some properties to ensure that the best "fitting" interface is selected. +To describe these we introduce the following terminology: +* `>`/`>=`/`==` should be read as "must have a greater/greater or equal/equal score than". +* Partial matching means matching where some rtl signals haven't been matched to interface signals, full matching means matching where all have been matched. + +Current implementation when used with default config values satisfies these properties: + +1. full matching with N+1 signals matched (same type) == full matching with N signals matched (same type) +2. full matching with N signals matched (same type) > partial matching with N signals matched (same type) +3. partial matching with N+1 signals matched (same type) > partial matching with N signals matched (same type) +4. full matching with N+1 required, M+1 optional signals >= full matching with N+1 optional, M optional signals >= full matching with N required, M+1 optional signals >= full matching with N required, M optional signals + +Properties 2-4 generally ensure that interfaces with more signals matched are favored more over those with less signals matched. +Property 1. follows from the current implementation and is not needed in all implementations. + +Full details can be found in the implementation itself. diff --git a/_sources/developers_guide/setup.md.txt b/_sources/developers_guide/setup.md.txt new file mode 100644 index 00000000..2c76d8bf --- /dev/null +++ b/_sources/developers_guide/setup.md.txt @@ -0,0 +1,12 @@ +# Setup + +It is required for developers to keep code style and recommended to frequently run tests. +In order to setup the developer's environment install optional dependency groups `topwrap-parse`, `tests` and `lint` specified in `pyproject.toml` which include `nox` and `pre-commit`: + +```bash +python -m venv venv +source venv/bin/activate +pip install -e ".[topwrap-parse,tests,lint]" +``` + +The `-e` option is for installing in editable mode - meaning changes in the code under development will be immediately visible when using the package. diff --git a/_sources/developers_guide/style.md.txt b/_sources/developers_guide/style.md.txt new file mode 100644 index 00000000..a8f55990 --- /dev/null +++ b/_sources/developers_guide/style.md.txt @@ -0,0 +1,70 @@ +# Code style + +Automatic formatting and linting of the code can be performed with either `nox` or `pre-commit`. + +## Lint with nox + +After successful setup, `nox` sessions can be executed to perform lint checks: + +```bash +nox -s lint +``` + +This runs `isort`, `black`, `flake8` and `codespell` and fixes almost all formatting and linting problems automatically, but a small minority has to be fixed by hand (e.g. unused imports). + +:::{note} +To reuse current virtual environment and avoid long installation time use `-R` option: + +```bash +nox -R -s lint +``` +::: + +:::{note} +pre-commit can also be run from nox: + +```bash +nox -s pre_commit +``` +::: +## Lint with pre-commit + +Alternatively, you can use pre-commit to perform the same job. +`Pre-commit` hooks need to be installed: + +```bash +pre-commit install +``` + +Now, each use of `git commit` in the shell will trigger actions defined in the `.pre-commit-config.yaml` file. +Pre-commit can be easily disabled with a similar command: + +```bash +pre-commit uninstall +``` + +If you wish to run `pre-commit` asynchronously, then use: + +```bash +pre-commit run --all-files +``` + +:::{note} +`pre-commit` by default also runs `nox` with `isort`,`flake8`, `black` and `codespell` sessions +::: + +## Tools + +Tools used in project for maintaining code style: +* `Nox` is a tool, which simplifies management of Python testing. +[Visit nox website](https://nox.thea.codes/en/stable/) +* `Pre-commit` is a framework for managing and maintaining multi-language pre-commit hooks. +[Visit pre-commit website](https://pre-commit.com/) +* `Black` is a code formatter. +[Visit black website](https://black.readthedocs.io/en/stable/) +* `Flake8` is a tool capable of linting, styling fixes and complexity analysis. +[Visit flake8 website](https://flake8.pycqa.org/en/latest/) +* `Isort` is a Python utility to sort imports alphabetically. +[Visit isort website](https://pycqa.github.io/isort/) +* `Codespell` is a Python tool to fix common spelling mistakes in text files +[Visit codespell repository](https://github.com/codespell-project/codespell) diff --git a/_sources/developers_guide/tests.md.txt b/_sources/developers_guide/tests.md.txt new file mode 100644 index 00000000..c91d2db3 --- /dev/null +++ b/_sources/developers_guide/tests.md.txt @@ -0,0 +1,95 @@ +# Tests + +Topwrap functionality is validated with tests, leveraging the `pytest` library. + + +## Test execution + +Tests are located in the `tests` directory. +All tests can be run with `nox` by specifying the `tests` session: + +```bash +nox -s tests +``` + +This only runs tests on python interpreter versions that are available locally. +There is also a session `tests_in_env` that will automatically install all required python versions, provided you have [pyenv](https://github.com/pyenv/pyenv) installed: + +```bash +nox -s tests_in_env +``` + +:::{note} +To reuse existing virtual environment and avoid long installation time use `-R` option: + +```bash +nox -R -s tests_in_env +``` +::: + +To force a specific Python version and avoid running tests for all listed versions, use `-p VERSION` option: + +```bash +nox -p 3.10 -s tests_in_env +``` + +Tests can also be launched without `nox` by executing: +```bash +python -m pytest +``` + +:::{warning} +When running tests by invoking `pytest` directly, tests are ran only on the locally selected python interpreter. +As CI runs them on all supported Python versions it's recommended to run tests with `nox` on all versions before pushing. +::: + +Ignoring particular test can be done with `--ignore=test_path`, e.g: +```bash +python -m pytest --ignore=tests/tests_build/test_interconnect.py +``` + +Sometimes it's useful to see what's being printed by the test for debugging purposes. +Pytest captures all output from the test and displays it when all tests finish. +To see the output immediately, pass `-s` option to pytest: +```bash +python -m pytest -s +``` + +## Test coverage + +Test coverage is automatically generated when running tests with `nox`. +When invoking `pytest` directly it can be generated with `--cov=topwrap` option. +This will generate a summary of coverage displayed in CLI. + +```bash +python -m pytest --cov=topwrap +``` + +Additionally, the summary can be generated in HTML with `--cov=topwrap --cov-report html`, where lines that were not covered by tests can be browsed: + +```bash +python -m pytest --cov=topwrap --cov-report html +``` + +Generated report is available at `htmlcov/index.html` + +## Updating kpm test data + +All kpm data from examples can be generated using nox. +This is useful when changing topwrap functionality related to kpm in order to avoid manually changing every example's test data. +You can either update only one part of examples data like specification or update everything (dataflows, specifications, designs). + +To update everything run: +```bash +nox -s update_test_data +``` + +To update only specifications run: +```bash +nox -s update_test_data -- specification +``` + +Possible options for `update_test_data` session: +* `specification` - updates specifications +* `dataflow` - updates dataflows +* `design` - updates designs diff --git a/_sources/developers_guide/wrapper.md.txt b/_sources/developers_guide/wrapper.md.txt new file mode 100644 index 00000000..7bd6beea --- /dev/null +++ b/_sources/developers_guide/wrapper.md.txt @@ -0,0 +1,11 @@ +# Wrapper + +{class}`~topwrap.wrapper.Wrapper` is an abstraction over entities that have ports - examples include IP cores written in Verilog/VHDL, cores written in Amaranth and hierarchical collections for these that expose some external ports. +Subclasses of this class have to supply implementation of property {meth}`~topwrap.wrapper.Wrapper.get_ports` that has to return a list of all ports of the entity. + +```{eval-rst} +.. autoclass:: topwrap.wrapper.Wrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/wrapper_port.md.txt b/_sources/developers_guide/wrapper_port.md.txt new file mode 100644 index 00000000..fd59289b --- /dev/null +++ b/_sources/developers_guide/wrapper_port.md.txt @@ -0,0 +1,28 @@ +# Wrapper Port + +Class {class}`~topwrap.amaranth_helpers.WrapperPort` is an extension to Amaranth's {class}`Signal`. +It wraps a port, adding a new name and optionally slicing the signal. +It adds these attributes: + +```python +WrapperPort.internal_name # name of the port in internal source to be wrapped +WrapperPort.direction # DIR_FANIN, DIR_FANOUT or DIR_NONE +WrapperPort.interface_name # name of the group of ports (interface) +WrapperPort.bounds # range of bits that belong to the port + # and range which is sliced from the port +``` + +See {ref}`Port slicing ` to know more about `bounds`. + +This is used in {class}`~topwrap.ipwrapper.IPWrapper` class implementation and there should be no need to use {class}`~topwrap.amaranth_helpers.WrapperPort` individually. + +:::{warning} +{class}`~topwrap.amaranth_helpers.WrapperPort` is scheduled to be replaced in favor of plain Amaranth's {class}`Signal` so it should not be used in any new functionality. +::: + +```{eval-rst} +.. autoclass:: topwrap.amaranth_helpers.WrapperPort + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/examples.md.txt b/_sources/examples.md.txt new file mode 100644 index 00000000..d7d7891f --- /dev/null +++ b/_sources/examples.md.txt @@ -0,0 +1,343 @@ +# Example projects + +These example projects show some useful ways in which Topwrap can be used by the end-user. + +:::{admonition} Information about embedded GUI +:class: note + +This section extensively uses an embedded version of Topwrap's GUI, [Kenning Pipeline Manager](kenning-pipeline-manager), to visualize the design of all the examples. + +You can use it to freely explore the entire design, add new blocks, connections, nodes and hierarchies. +You cannot however use features that require direct connection with the Topwrap's backend. +These features include, among others: + +- Saving and loading data from/to `.yaml` files +- Verifying designs +- Building designs +::: + +:::{tip} +Don't forget to use the "Enable fullscreen" button if the viewport feels too small! +```{image} img/kpm_button_fullscreen.png +``` +::: + +## Constant + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/constant) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_constant.json +:dataflow: ../build/kpm_jsons/data_constant.json +``` + +There is often a need to pass constant values to input ports of some IP Cores. +This example shows how easy expressing that is in the GUI and correspondingly, in the design description file (`project.yml`). + +:::{tip} +You can find the constant node blueprint in the Nodes browser under the `Metanode` section. +::: + +### Usage + +**Enter the example's directory** +```bash +cd examples/constant +``` + +**Generate HDL source** + +```bash +make generate +``` + + +## Inout + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/inout) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_inout.json +:dataflow: ../build/kpm_jsons/data_inout.json +``` + +This example showcases the usage of an inout port and the way it's represented in the GUI. + +:::{tip} +An inout port is denoted in the GUI by a green circle without a directional arrow inside. +::: + +The design consists of 3 modules: input buffer `ibuf`, output buffer `obuf`, and bidirectional buffer `iobuf`. +Their operation can be described as: +* input buffer is a synchronous D-type flip flop with an asynchronous reset +* output buffer is a synchronous D-type flip flop with an asynchronous reset and an `output enable`, which sets output to high impedance state (Hi-Z) +* inout buffer instantiates 1 input and 1 output buffer. Input of the `ibuf` and output of the `obuf` are connected with an inout wire (port). + +### Usage + +**Enter the example's directory** +```bash +cd examples/inout +``` + +:::{admonition} Install required dependencies +:class: note + +```bash +pip install -r requirements.txt +``` +::: + +**Generate bitstream for Zynq** + +```bash +make +``` + +**Generate HDL sources without implementation** + +```bash +make generate +``` + +## User repository + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/user_repository) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_user_repository.json +:dataflow: ../build/kpm_jsons/data_user_repository.json +``` + +This example presents a structure of a user repository containing prepackaged IP cores with sources and custom interface definitions, the design file and the config file. +Elements of the `repo` directory can be easily reused in different designs as long as you point to it either in the config file or in the CLI. + +:::{seealso} +For more information about user repositories see [](user_repositories.md). +::: + +:::{tip} +Because other components of the design are automatically imported from the repository, it's possible to load the entire example by specifying just the design file: +```bash +topwrap kpm_client -d project.yml +``` +::: + +### Usage + +Build and run Pipeline Manager server + +```bash +python -m topwrap kpm_build_server +python -m topwrap kpm_run_server +``` + +Navigate to `/examples/user_repository/` directory and run: + +```bash +python -m topwrap kpm_client -d project.yml +``` + +Connect to the web GUI frontend in your browser on `http://127.0.0.1:5000`. + +**Expected result** + +Topwrap will load two cores from the `cores` directory that use an interface from the `interfaces` directory. + +In the Nodes browser under `IPcore`, two loaded cores: `core1` and `core2`, should be visible. + + +## Hierarchy + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/hierarchy) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_hierarchy.json +:dataflow: ../build/kpm_jsons/data_hierarchy.json +``` + +This example shows how to create a hierarchical design in Topwrap. +It includes a hierarchy containing some IP cores and other nested hierarchies. + +Check out `project.yml` to learn how does the above design translate to a [design description file](description_files.md) + +:::{seealso} +For more information about hierarchies see [hierarchies docs](hierarchies). +::: + +:::{tip} +Hierarchies are represented in the GUI by nodes with a green header. + +You can display their inner designs by clicking the `Edit subgraph` option from the right click menu. + +To exit from the hierarchy subgraph, find the back arrow button in the top left. + + +To add a new hierarchy node use the `New Graph Node` option in the node browser! +::: + +### Usage +This example contains [user repo](https://antmicro.github.io/topwrap/user_repositories.html) (`repo` directory) and a configuration file for topwrap (`topwrap.yaml`) so it can be loaded by running +``` +python -m topwrap kpm_client -d project.yml +``` +in this example's directory. + + +## PWM + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/pwm) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_pwm.json +:dataflow: ../build/kpm_jsons/data_pwm.json +``` + +:::{tip} +The IP Core in the center of the design (`axi_axil_adapter`) showcases how IP Cores with overridable parameters are represented in the GUI. +::: + +This is an example of an AXI-mapped PWM IP Core that can be generated with LiteX being connected to the ZYNQ Processing System. +The Core uses AXILite interface, so a proper `AXI -> AXILite` converter is needed. +You can access its registers starting from address `0x4000000` (that's the base address of `AXI_GP0` on ZYNQ). +The generated signal can be used in FPGA or connected to a physical port on a board. + +:::{note} +To connect the I/O signals to specific FPGA pins, you need proper mappings in a constraints file. See `zynq.xdc` used in the setup and modify it accordingly. +::: + +### Usage + +**Enter the example's directory** +```bash +cd examples/pwm +``` + +:::{admonition} Install required dependencies +:class: note + +```bash +pip install -r requirements.txt +``` + +In order to be able to generate a bitstream you also need to install Vivado and add it to your `PATH`. +::: + +**Generate bitstream for Zynq** + +```bash +make +``` + +**If you wish to generate HDL sources without running Vivado, you can use** + +```bash +make generate +``` + + + +## HDMI + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/hdmi) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_hdmi.json +:dataflow: ../build/kpm_jsons/data_hdmi.json +``` + +This is an example on how to use Topwrap to build a complex, synthesizable design. + +### Usage + +**Enter the example's directory** +```bash +cd examples/hdmi +``` + +:::{admonition} Install required dependencies +:class: note + +```bash +pip install -r requirements.txt +``` + +In order to be able to generate a bitstream you also need to install Vivado and add it to your `PATH`. +::: + +**Generate bitstream for desired target** + +Snickerdoodle Black: + +```bash +make snickerdoodle +``` + +Zynq Video Board: + +```bash +make zvb +``` + +**If you wish to generate HDL sources without running Vivado, you can use** + +```bash +make generate +``` + + + +## SoC + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/soc) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_soc.json +:dataflow: ../build/kpm_jsons/data_soc.json +``` + +This is an example on how to use Topwrap to build a synthesizable SoC design. +The SoC contains a VexRiscv core, data and instruction memory, UART and interconnect that ties all components together. + +### Usage + +**Enter the example's directory** +```bash +cd examples/soc +``` + +:::{admonition} Install required dependencies +:class: note + +```bash +sudo apt install git make g++ ninja-build gcc-riscv64-unknown-elf bsdextrautils +``` + +To run the simulation you also need: +- verilator + +To create and load bitstream you also need: +- vivado (preferably version 2020.2) +- openFPGALoader ([this branch](https://github.com/antmicro/openFPGALoader/tree/antmicro-ddr-tester-boards)) +::: + + +**Generate HDL sources** + +```bash +make generate +``` + +**Build and run simulation** + +```bash +make sim +``` + +Expected waveform generated by the simulation is shown in `expected-waveform.svg`. + +**Generate bitstream** + +```bash +make bitstream +``` diff --git a/_sources/fusesoc.md.txt b/_sources/fusesoc.md.txt new file mode 100644 index 00000000..023c4f20 --- /dev/null +++ b/_sources/fusesoc.md.txt @@ -0,0 +1,16 @@ +# FuseSoC + +Topwrap uses FuseSoC to automate project generation and build process. +When `topwrap build` is invoked it generates a FuseSoC core file along with the top-level wrapper. + +A template for the core file is bundled with Topwrap (`templates/core.yaml.j2`). +You may need to edit the file to change the backend tool, set additional `Hooks` and change the FPGA part name or other parameters. +By default, {class}`topwrap.fuse_helper.FuseSocBuilder` searches for the template file in the directory you work in, so you should first copy the template into the project's location. + +After generating the core file you can run FuseSoC to generate bitstream and program FPGA: + +```bash +fusesoc --cores-root build run project_1 +``` + +This requires having the suitable backend tool in your `PATH` (Vivado, for example). diff --git a/_sources/getting_started.md.txt b/_sources/getting_started.md.txt new file mode 100644 index 00000000..1a2cb765 --- /dev/null +++ b/_sources/getting_started.md.txt @@ -0,0 +1,220 @@ +(getting-started)= + +# Getting started + +Goal of this chapter is to show step by step how to create simple design with topwrap. + +All necessary files to follow this guide are in `examples/getting_started_demo` directory. + +:::{admonition} Important +:class: attention +This is just an example, if you haven't installed the topwrap yet go to the [Installation chapter](installation.md) and make sure to install additional dependencies for `topwrap parse`. +::: + +## Design overview + +The design we are going to create is visually represented below: + +```{kpm_iframe} +:spec: ../../examples/getting_started_demo/kpm/specification.json +:dataflow: ../../examples/getting_started_demo/kpm/dataflow.json +``` + +It consists of two cores: `simple_core_1` and `simple_core_2` that are connected to each other and to some external metanodes. + +## Parsing verilog files + +First step in creating own designs is to parse verilog files into ip core description yamls that are understood by topwrap. + +In the `verilogs` directory you can find two verilog files which describe `simple_core_1` and `simple_core_2`. + +To generate ip core descriptions from these verilogs run: + +```bash +topwrap parse verilogs/{simple_core_1.v,simple_core_2.v} +``` + +Topwrap will generate two files `gen_simple_core_1.yaml` and `gen_simple_core_2.yaml` that represent corresponding verilogs. + +## Building design with topwrap + +### Creating the design + +Generated ip core yamls can be loaded into GUI. + +1. Build and run gui server +```bash +topwrap kpm_build_server && topwrap kpm_run_server & +``` + +2. Run gui client with the generated ip core yamls +```bash +topwrap kpm_client gen_simple_core_1.yaml gen_simple_core_2.yaml +``` + +Now when you connect to [http://127.0.0.1:5000](http://127.0.0.1:5000) there should be kpm gui. + +Loaded ip cores can be found under IPcore section: + +```{image} img/side_bar_kpm.png +``` + +With these IPcores and default metanodes you can easily create designs by dragging cores and connecting them. + +Let's make the design from the demo that was shown at the beginning of this guide. + +```{image} img/getting_started_project.png +``` + +:::{note} +You can change name of node by right clicking on it and selecting `rename`. +::: + +You can save the project to the [Design Description](description_files.md) format, which is used by topwrap to represent the created design. + +To do this select the graph button and select `Save file`. + +```{image} img/save_graph_kpm.png +``` + +:::{note} +The difference between `Save file` and `Save graph file` lays in which format will be used for saving. + +`Save file` will save the design description in yaml format which topwrap uses. + +`Save graph file` will save the design in graph json format which kpm uses. You should only choose this one if you have some specific custom layout of nodes in design and you want to save it. +::: + +### Generating verilog + +You can generate verilog from design created in previous section. + + +If you have the example running as described in previous section then on the top bar you should see these 4 buttons: + +```{image} img/kpm_buttons.png +``` + +First one is for loading or saving designs. +Second is for toggling node browser. +Third one is for validating the design. +And the fourth is for running the design which will generate the verilog file in `/build` directory of the current example and run the design. + +## Appendix: Command-line flow + +### Creating the design + +Manual creation of designs requires familiarity with [Design Description](description_files.md) format. + +First let's include all the ip core files we will need in the `ips` section. + +```yaml +ips: + simple_core_1: + file: gen_simple_core_1.yaml + simple_core_2: + file: gen_simple_core_2.yaml +``` + +Notice that here we also declare how to node will be named. +Ip core `gen_simple_core_1.yaml` will be named `simple_core_1` in gui. +Now we can start creating the design under the `design` section. +Our design doesn't have any parameters so we can skip this part and go straight into `ports` section. +There we define connections between ip cores. +In demo example there is only one connection - between `gen_simple_core_1` and `gen_simple_core_2`. +In our design it will look like below: + +```yaml +design: + ports: + simple_core_2: + a: + - simple_core_1 + - z +``` + +Notice that we connect `input` to `output`. +All left to do are external connections to metanodes. +We declare them like this: + +```yaml +external: + ports: + in: + - rst + - clk + out: + - Output_y + - Output_c +``` + +Now connect them to ip cores. + +```yaml +design: + ports: + simple_core_1: + clk: clk + rst: rst + simple_core_2: + a: + - simple_core_1 + - z + c: Output_c + y: Output_y +``` + +Final design: + +```yaml +ips: + simple_core_1: + file: gen_simple_core_1.yaml + simple_core_2: + file: gen_simple_core_2.yaml +design: + ports: + simple_core_1: + clk: clk + rst: rst + simple_core_2: + a: + - simple_core_1 + - z + c: Output_c + y: Output_y +external: + ports: + in: + - rst + - clk + out: + - Output_y + - Output_c +``` + +### Generating verilog + +:::{info} +Topwrap uses [Amaranth](https://github.com/amaranth-lang/amaranth) for generating verilog top file. +::: + +To generate top file use `topwrap build` and provide the design. + +Ensure you are in the `examples/getting_started_demo` directory and run: + +```bash +topwrap build --design {design_name.yaml} +``` + +Where the `{design_name.yaml}` is the design saved at the end of previous section. +The generated verilog file can be found in `/build` directory. + +Notice that you will get warning: + +``` +WARNING:root:You did not specify part number. 'None' will be used and thus your implementation may fail. +``` + +It's because we didn't specify any part with `--part` flag since it's just a dummy example that is not for any specific FPGA chip. +For building your designs we recommend specifying the `--part`. diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 00000000..ce2fa02e --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,35 @@ +# Welcome to Topwrap! + +```{toctree} +:caption: Documentation +:maxdepth: 2 +introduction +installation +getting_started +examples +description_files +usage +user_repositories +interconnect_gen +fusesoc +``` + +```{toctree} +:caption: Developer's Guide +:maxdepth: 2 +developers_guide/setup +developers_guide/style +developers_guide/tests +developers_guide/wrapper +developers_guide/ipwrapper +developers_guide/ipconnect +developers_guide/elaboratable_wrapper +developers_guide/wrapper_port +developers_guide/fusesocbuilder +developers_guide/interface +developers_guide/config +developers_guide/parsing +developers_guide/examples +developers_guide/future_enhancements +developers_guide/inline_kpm_howto +``` diff --git a/_sources/installation.md.txt b/_sources/installation.md.txt new file mode 100644 index 00000000..d846671a --- /dev/null +++ b/_sources/installation.md.txt @@ -0,0 +1,50 @@ +(installation)= + +# Installation + +1. Install required system packages: + + Debian: + ```bash + apt install -y git g++ make python3 python3-pip antlr4 libantlr4-runtime-dev yosys npm + ``` + + Arch: + ```bash + pacman -Syu git gcc make python3 python-pip antlr4 antlr4-runtime yosys npm + ``` + + Fedora: + ```bash + dnf install git g++ make python3 python3-pip python3-devel antlr4 antlr4-cpp-runtime-devel yosys npm + ``` + +2. Install the Topwrap package (It is highly recommended to run this step in a Python virtual environment, e.g. [venv](https://docs.python.org/3/library/venv.html)): + + ```bash + python3 -m venv venv + source venv/bin/activate + pip install . + ``` + +:::{note} +To use `topwrap parse` command you also need to install optional dependencies: +```bash +pip install ".[topwrap-parse]" +``` +On Arch-based distributions a symlink to antlr4 runtime library needs to created and an environment variable set: +```bash +ln -s /usr/share/java/antlr-complete.jar antlr4-complete.jar +ANTLR_COMPLETE_PATH=`pwd` pip install ".[topwrap-parse]" +``` +On Fedora-based distributions symlinks need to be made inside `/usr/share/java` directory itself: +```bash +sudo ln -s /usr/share/java/stringtemplate4/ST4.jar /usr/share/java/stringtemplate4.jar +sudo ln -s /usr/share/java/antlr4/antlr4.jar /usr/share/java/antlr4.jar +sudo ln -s /usr/share/java/antlr4/antlr4-runtime.jar /usr/share/java/antlr4-runtime.jar +sudo ln -s /usr/share/java/treelayout/org.abego.treelayout.core.jar /usr/share/java/treelayout.jar +pip install ".[topwrap-parse]" +``` +::: + +If you want to contribute to the project please see the [Developer's setup guide](developers_guide/setup.md). diff --git a/_sources/interconnect_gen.md.txt b/_sources/interconnect_gen.md.txt new file mode 100644 index 00000000..a26be4a4 --- /dev/null +++ b/_sources/interconnect_gen.md.txt @@ -0,0 +1,68 @@ +(interconnect-generation)= +# Interconnect generation + +Generating interconnects is an experimental feature of topwrap. +With a specification of which interfaces are masters or slaves and their address ranges, topwrap is able to automatically generate an interconnect conforming to this description. Currently supported interconnect types are: +- Wishbone round-robin + +## Format + +The format for describing interconnects is specified below. `interconnects` key must be a direct descendant of the `design` key in the design description. + +```yaml +interconnects: + {interconnect1_name}: + # specify clock and reset to drive the interconnect with + clock: [{ip_name, clk_port_name}] + reset: [{ip_name, rst_port_name}] + # alternatively you can specify a connection to an external interface: + # clock: ext_clk_port_name + # reset: ext_rst_port_name + + # specify interconnect type + type: {interconnect_type} + + # specify interconnect parameters - interconnect-type-dependent (see "Interconnect params" section): + params: + {param_name1}: param_value1 + ... + + # specify masters and their interfaces connected to the bus + masters: + {master1_name}: + - {master1_iface1_name} + ... + ... + + # specify slaves, their interfaces connected to the bus and their bus parameters + slaves: + {slave1_name}: + {slave1_interface1_name}: + # requests in address range [address, address+size) will be routed to this interface + address: {start_address} + size: {range_size} + ... + ... +``` + +## Interconnect params + +Different interconnect types may provide different configuration options. +This section lists parameter names for available interconnects for use in the `params` section of interconnect specification. + +### Wishbone round-robin + +Corresponds to `type: wishbone_roundrobin` + +- `addr_width` - bit width of the address line (addresses access `data_width`-sized chunks) +- `data_width` - bit width of the data line +- `granularity` - access granularity - smallest unit of data transfer that the interconnect is capable of transferring. Must be one of: 8, 16, 32, 64 +- `features` - optional, list of optional wishbone signals, can contain: `err`, `rty`, `stall`, `lock`, `cti`, `bte` + +## Limitations + +Known limitations currently are: +- only word-sized addressing is supported (in other words - consecutive addresses access word-sized chunks of data) +- crossing clock domains is not supported +- down-converting (initiating multiple transactions on a narrow bus per one transaction on a wider bus) is not supported +- up-converting is not supported diff --git a/_sources/introduction.md.txt b/_sources/introduction.md.txt new file mode 100644 index 00000000..f3f982d4 --- /dev/null +++ b/_sources/introduction.md.txt @@ -0,0 +1,13 @@ +# Introduction + +ASIC and FPGA designs consist of distinct blocks of logic bound together by a top-level design. +To take advantage of this modularity and enable reuse of blocks across designs and so facilitate the shift towards automation in logic design, it is necessary to derive a generic way to aggregate the blocks in various configurations and make the top-level design easy to parse and process automatically. + +Topwrap is an open source command line toolkit for connecting individual HDL modules into full designs of varying complexity. +The toolkit is designed to take advantage of the ever-growing availability of open source digital logic designs and offers a user-friendly graphical interface which lets you mix-and-match GUI-driven design with CLI-based adjustments and present designs in a diagram form thanks to the integration with Antmicro’s [Pipeline Manager](https://github.com/antmicro/kenning-pipeline-manager). + +Topwrap's most notable features are: +* User-friendly GUI +* Parsing HDL design files with automatic recognition of common interfaces +* Simple YAML-based description for command-line use +* Capability to create custom libraries for reuse across projects diff --git a/_sources/usage.md.txt b/_sources/usage.md.txt new file mode 100644 index 00000000..bf7685c9 --- /dev/null +++ b/_sources/usage.md.txt @@ -0,0 +1,155 @@ +# Using topwrap + +(GUI)= +## GUI + +Topwrap can make use of [Kenning Pipeline Manager](https://github.com/antmicro/kenning-pipeline-manager) to visualize the process of creating block design. + +(kenning-pipeline-manager)= + +### Run Topwrap with Pipeline Manager + +1. Build and run Pipeline Manager server + + In order to start creating block design in Pipeline Manager, you need to first build and run a server application - here is a brief instruction on how to achieve this (the process of building and installation of Pipeline Manager is described in detail in its [documentation](https://antmicro.github.io/kenning-pipeline-manager/project-readme.html#building-and-running)): + + ``` + python -m topwrap kpm_build_server + python -m topwrap kpm_run_server + ``` + + After executing the above-mentioned commands, the Pipeline Manager server is waiting for an external application (i.e. Topwrap) to connect on `127.0.0.1:9000` and you can connect to the web GUI frontend in your browser on `http://127.0.0.1:5000`. + +2. Establish connection with Topwrap + + Once the Pipeline Manager server is running, you can now launch Topwrap's client application in order to connect to the server. You need to specify: + * IP address (`127.0.0.1` is default) + * listening port (`9000` is default) + * yamls describing IP cores, that will be used in the block design + * design to load initially (`None` by default) + + An example command, that runs Topwrap's client, may look like this: + ``` + python -m topwrap kpm_client -h 127.0.0.1 -p 9000 \ + topwrap/ips/axi/axi_axil_adapter.yaml \ + examples/pwm/ipcores/{litex_pwm.yml,ps7.yaml} -d examples/pwm/project.yml + ``` +3. Create block design in Pipeline Manager + + Upon successful connection to a Pipeline Manager server, Topwrap will generate and send to the server a specification describing the structure of previously selected IP cores. If the `-d` option was used a design will be shown in gui. From there you can create or modify designs by: + * adding IP core instances to the block design. Each Pipeline Manager's node has `delete` and `rename` options, which make it possible to remove the selected node and change its name respectively. This means that you can create multiple instances of the same IP core. + * adjusting IP cores' parameters values. Each node may have input boxes in which you can enter parameters' values (default parameter values are added while adding an IP core to the block design): + ```{image} img/node_parameters.png + ``` + * connecting IP cores' ports and interfaces. Only connections between ports or interfaces of matching types are allowed. This is automatically checked by Pipeline Manager, as the types of nodes' ports and interfaces are contained in the loaded specification, so Pipeline Manager will prevent you from connecting non-matching interfaces (e.g. *AXI4* with *AXI4Lite* or a port with an interface). A green line will be displayed if a connection is possible to create, or a red line elsewhere: + ```{image} img/invalid_connection.png + ``` + * specifying external ports or interfaces in the top module. This can be done by adding `External Input`, `External Output` or `External Inout` metanodes and creating connections between them and chosen ports or interfaces. Note that you should adjust the name of the external port or interface in a textbox inside selected metanode. In the example below, output port `pwm` of `litex_pwm_top` IP core will be made external in the generated top module and the external port name will be set to `ext_pwm`: + ```{image} img/external_port.png + ``` + Note, that you don't always have to create a new block design by hand - you can use a {ref}`design import ` feature to load an existing block design from a description in Topwrap's yaml format. + + An example block design in Pipeline Manager for the PWM project may look like this: + + ```{image} img/pwm_design.png + ``` + +### Pipeline Manager features + +While creating a custom block design, you can make use of the following Pipeline Manager's features: +* export (save) design to a file +* import (load) design from a file +* validate design +* build design + +(export-design)= + +#### Export design to yaml description file + +Created block design can be saved to a {ref}`design description file ` in yaml format, using Pipeline Manager's `Save file` option. +Target location on the filesystem can then be browsed in a filesystem dialog window. + +(import-design)= + +#### Import design from yaml description file + +Topwrap also supports conversion in the opposite way - block design in Pipeline Manager can be generated from a yaml design description file using `Load file` feature. + +(validate-design)= + +#### Design validation + +Pipeline Manager is capable of performing some basic checks at runtime such as interface type checking while creating a connection. However you can also run more complex tests by using Pipeline Manager's `Validate` option. Topwrap will then respond with a validity confirmation or error messages. The rules you need to follow in order to keep your block design valid are: +* multiple IP cores with the same name are not allowed (except from external metanodes). +* parameters values can be integers of different bases (e.g. `0x28`, `40` or `0b101000`) or arithmetic expressions, that are later evaluated using [numexpr.evaluate()](https://numexpr.readthedocs.io/en/latest/api.html#numexpr.evaluate) function (e.g. `(AXI_DATA_WIDTH+1)/4` is a valid parameter value assuming that a parameter named `AXI_DATA_WIDTH` exists in the same IP core). You can also write a parameter value in a Verilog format (e.g. `8'b00011111` or `8'h1F`) - in such case it will be interpreted as a fixed-width bit vector. +* a single port or interface cannot be external and connected to another IP core at the same time. +* connections between two external metanodes are not allowed. +* all the created external output or inout ports must have unique names. Only multiple input ports of IP cores can be driven be the same external signal. + +Topwrap can also generate warnings if: +* some ports or interfaces remain unconnected. +* multiple ports are connected to an `External Input` metanode with an empty `External Name` property. +* `inout` ports of two modules are connected together (all `inout` ports are required to be directly connected to `External Inout` metanodes) + +If a block design validation returns a warning, it means that the block design can be successfully built, but it is recommended to follow the suggestion and resolve a particular issue. + +(build-design)= + +#### Building design + +Once the design has been created and tested for validity, you can build design using `Run` button. If the design does not contain any errors, this will result in creating a top module in a directory where `topwrap kpm_client` was ran, similarly when using Topwrap's `topwrap build` command. + +## CLI + +Topwrap has a couple CLI only functions that expand gui functionality. + +(generating-ip-yamls)= +### Generating IP core description YAMLs + +You can use Topwrap to generate ip core description yamls from HDL sources to use them in your `project.yml`. +To learn how project and core yamls work check {ref}`design description ` and {ref}`ip description ` + +``` +python -m topwrap parse HDL_FILES +``` + +In HDL source files, ports that belong to the same interface (e.g. wishbone or AXI), +have often a common prefix, which corresponds to the interface name. If such naming +convention is followed in the HDL sources, Topwrap can also divide ports into user-specified +interfaces, or automatically deduce interfaces names when generating yaml file: + +``` +python -m topwrap parse --iface wishbone --iface s_axi HDL_FILES + +python -m topwrap parse --iface-deduce HDL_FILES +``` + +To get help, use: + +``` +python -m topwrap [build|kpm_client|parse] --help +``` + +(building-design)= + +### Building design + +Topwrap can build a synthesizable design from source files connected in a way described by a design file, to do this run: + +``` +python -m topwrap build --design project.yml +``` + +Where `project.yml` should be your file with description of the top module. + +You can specify a directory to be scanned for additional sources: + +``` +python -m topwrap build --sources src --design project.yml +``` + +To implement the design for a specific FPGA chip, provide the part name: + +``` +python -m topwrap build --sources src --design project.yml --part 'xc7z020clg400-3' +``` diff --git a/_sources/user_repositories.md.txt b/_sources/user_repositories.md.txt new file mode 100644 index 00000000..1508eef4 --- /dev/null +++ b/_sources/user_repositories.md.txt @@ -0,0 +1,46 @@ +# Packaging multiple files + +Repositories allow for easy packaging and loading multiple IP-cores and custom interfaces. + +You can specify repositories to be loaded each time topwrap is ran by listing them in a configuration file that should be located in one of the following locations: +``` +topwrap.yaml +~/.config/topwrap/topwrap.yaml +~/.config/topwrap/config.yaml +``` + +Example contents of user config: +``` +force_interface_compliance: true +repositories: + - name: name_of_repo + path: ~/path_to_repo/repo +``` + +Topwrap provides internal API for constructing repositories in python code which can be [found here](https://github.com/antmicro/topwrap/blob/main/topwrap/repo/user_repo.py) + +Structure of repository has to be as follows: +``` +path_to_repository/ +|───cores +| |───someCore1 +| | |───srcs +| | | | file1.v +| | | design.yaml +| | +| |───someCore1 +| |───srcs +| | | file1.v +| | design.yaml +| +|───interfaces(Optional) +| interface1.yaml +| interface2.yaml +``` +Repository has two main directories: `cores` and `interfaces`. + +Inside `cores` each core has it's own directory with it's description file and `srcs` where the verilog/VHDL files are stored. + +The `interfaces` directory is optional, and contains interface description files. + +Example User Repo can be found in [examples/user_repository](https://github.com/antmicro/topwrap/tree/main/examples/user_repository). diff --git a/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 new file mode 100644 index 00000000..ab301009 Binary files /dev/null and b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 differ diff --git a/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 new file mode 100644 index 00000000..09e03c95 Binary files /dev/null and b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 differ diff --git a/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 new file mode 100644 index 00000000..d338178b Binary files /dev/null and b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 differ diff --git a/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 new file mode 100644 index 00000000..6b0b4afe Binary files /dev/null and b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 differ diff --git a/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 new file mode 100644 index 00000000..f477fda0 Binary files /dev/null and b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 differ diff --git a/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 new file mode 100644 index 00000000..9a378af0 Binary files /dev/null and b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 differ diff --git a/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 new file mode 100644 index 00000000..48a8c10f Binary files /dev/null and b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 differ diff --git a/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 new file mode 100644 index 00000000..6aa28456 Binary files /dev/null and b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 differ diff --git a/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf new file mode 100644 index 00000000..fbb56251 Binary files /dev/null and b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf differ diff --git a/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 new file mode 100644 index 00000000..5b0171c1 Binary files /dev/null and b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 differ diff --git a/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 new file mode 100644 index 00000000..71c9bb7d Binary files /dev/null and b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 differ diff --git a/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 new file mode 100644 index 00000000..186d9986 Binary files /dev/null and b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 differ diff --git a/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 new file mode 100644 index 00000000..02a27ead Binary files /dev/null and b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 differ diff --git a/_static/fonts/1181a8e619707033241139715eca64c6.woff2 b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 new file mode 100644 index 00000000..59ed385e Binary files /dev/null and b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 differ diff --git a/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 new file mode 100644 index 00000000..40b9fda9 Binary files /dev/null and b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 differ diff --git a/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 new file mode 100644 index 00000000..d953103e Binary files /dev/null and b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 differ diff --git a/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 new file mode 100644 index 00000000..508baefb Binary files /dev/null and b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 differ diff --git a/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 new file mode 100644 index 00000000..bdad3dfb Binary files /dev/null and b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 differ diff --git a/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf new file mode 100644 index 00000000..1a6895d1 Binary files /dev/null and b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf differ diff --git a/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 new file mode 100644 index 00000000..cb9bfa71 Binary files /dev/null and b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 differ diff --git a/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 new file mode 100644 index 00000000..6d458ad0 Binary files /dev/null and b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 differ diff --git a/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf new file mode 100644 index 00000000..2cf147e1 Binary files /dev/null and b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf differ diff --git a/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 new file mode 100644 index 00000000..87711c04 Binary files /dev/null and b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 differ diff --git a/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 new file mode 100644 index 00000000..bc7e1b2c Binary files /dev/null and b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 differ diff --git a/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 new file mode 100644 index 00000000..d4ec1890 Binary files /dev/null and b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 differ diff --git a/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 new file mode 100644 index 00000000..2950a77c Binary files /dev/null and b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 differ diff --git a/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 new file mode 100644 index 00000000..51c88fde Binary files /dev/null and b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 differ diff --git a/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 new file mode 100644 index 00000000..81848e2c Binary files /dev/null and b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 differ diff --git a/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 new file mode 100644 index 00000000..7e931875 Binary files /dev/null and b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 differ diff --git a/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 new file mode 100644 index 00000000..544eddca Binary files /dev/null and b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 differ diff --git a/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 new file mode 100644 index 00000000..cf61b889 Binary files /dev/null and b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 differ diff --git a/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf new file mode 100644 index 00000000..d7455040 Binary files /dev/null and b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf differ diff --git a/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 new file mode 100644 index 00000000..c8091bc9 Binary files /dev/null and b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 differ diff --git a/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf new file mode 100644 index 00000000..64fca947 Binary files /dev/null and b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf differ diff --git a/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 new file mode 100644 index 00000000..8c63b51b Binary files /dev/null and b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 differ diff --git a/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 new file mode 100644 index 00000000..1f579aa4 Binary files /dev/null and b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 differ diff --git a/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 new file mode 100644 index 00000000..e0d3c435 Binary files /dev/null and b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 differ diff --git a/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf new file mode 100644 index 00000000..ea5c8fe0 Binary files /dev/null and b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf differ diff --git a/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 new file mode 100644 index 00000000..4b7a373a Binary files /dev/null and b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 differ diff --git a/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf new file mode 100644 index 00000000..d25425d8 Binary files /dev/null and b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf differ diff --git a/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 new file mode 100644 index 00000000..c5776a5e Binary files /dev/null and b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 differ diff --git a/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf new file mode 100644 index 00000000..9c48d222 Binary files /dev/null and b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf differ diff --git a/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 new file mode 100644 index 00000000..53d081f3 Binary files /dev/null and b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 differ diff --git a/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 new file mode 100644 index 00000000..45eae25c Binary files /dev/null and b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 differ diff --git a/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 new file mode 100644 index 00000000..f3c5f6ac Binary files /dev/null and b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 differ diff --git a/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 new file mode 100644 index 00000000..cb5834ff Binary files /dev/null and b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 differ diff --git a/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf new file mode 100644 index 00000000..7c38f724 Binary files /dev/null and b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf differ diff --git a/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 new file mode 100644 index 00000000..b1dc168f Binary files /dev/null and b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 differ diff --git a/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 new file mode 100644 index 00000000..53b8d0dc Binary files /dev/null and b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 differ diff --git a/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 new file mode 100644 index 00000000..8a8de615 Binary files /dev/null and b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 differ diff --git a/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 new file mode 100644 index 00000000..63995528 Binary files /dev/null and b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 differ diff --git a/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 new file mode 100644 index 00000000..59cab0f1 Binary files /dev/null and b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 differ diff --git a/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 new file mode 100644 index 00000000..99b1da1b Binary files /dev/null and b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 differ diff --git a/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 new file mode 100644 index 00000000..45f222cc Binary files /dev/null and b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 differ diff --git a/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 new file mode 100644 index 00000000..8ab91719 Binary files /dev/null and b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 differ diff --git a/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 new file mode 100644 index 00000000..1f384187 Binary files /dev/null and b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 differ diff --git a/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 new file mode 100644 index 00000000..0f6e60b8 Binary files /dev/null and b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 differ diff --git a/_static/fonts/437939342255944b82a49f916404c5fc.woff2 b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 new file mode 100644 index 00000000..0bb27069 Binary files /dev/null and b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 differ diff --git a/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 new file mode 100644 index 00000000..b289f002 Binary files /dev/null and b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 differ diff --git a/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 new file mode 100644 index 00000000..9d7fb7f8 Binary files /dev/null and b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 differ diff --git a/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 new file mode 100644 index 00000000..47da3629 Binary files /dev/null and b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 differ diff --git a/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 new file mode 100644 index 00000000..997a45c6 Binary files /dev/null and b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 differ diff --git a/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 new file mode 100644 index 00000000..3c450111 Binary files /dev/null and b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 differ diff --git a/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 new file mode 100644 index 00000000..fb22fec2 Binary files /dev/null and b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 differ diff --git a/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 new file mode 100644 index 00000000..de10a3cf Binary files /dev/null and b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 differ diff --git a/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 new file mode 100644 index 00000000..2e71425c Binary files /dev/null and b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 differ diff --git a/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 new file mode 100644 index 00000000..c0099878 Binary files /dev/null and b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 differ diff --git a/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 new file mode 100644 index 00000000..a0f44185 Binary files /dev/null and b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 differ diff --git a/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 new file mode 100644 index 00000000..3df1d8a0 Binary files /dev/null and b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 differ diff --git a/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 new file mode 100644 index 00000000..100e81a6 Binary files /dev/null and b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 differ diff --git a/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 new file mode 100644 index 00000000..a0d68e2b Binary files /dev/null and b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 differ diff --git a/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 new file mode 100644 index 00000000..f496f9e2 Binary files /dev/null and b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 differ diff --git a/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 new file mode 100644 index 00000000..dd5a4a2e Binary files /dev/null and b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 differ diff --git a/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 new file mode 100644 index 00000000..c2862d73 Binary files /dev/null and b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 differ diff --git a/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 new file mode 100644 index 00000000..6a258ac6 Binary files /dev/null and b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 differ diff --git a/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 new file mode 100644 index 00000000..fecc1855 Binary files /dev/null and b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 differ diff --git a/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 new file mode 100644 index 00000000..122ac2c7 Binary files /dev/null and b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 differ diff --git a/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 new file mode 100644 index 00000000..00a4a4be Binary files /dev/null and b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 differ diff --git a/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 new file mode 100644 index 00000000..edfc6cd0 Binary files /dev/null and b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 differ diff --git a/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 new file mode 100644 index 00000000..ae1933f3 Binary files /dev/null and b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 differ diff --git a/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 new file mode 100644 index 00000000..ece005fc Binary files /dev/null and b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 differ diff --git a/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 new file mode 100644 index 00000000..1bb7737c Binary files /dev/null and b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 differ diff --git a/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf new file mode 100644 index 00000000..3e69acbe Binary files /dev/null and b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf differ diff --git a/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf new file mode 100644 index 00000000..563f4493 Binary files /dev/null and b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf differ diff --git a/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 new file mode 100644 index 00000000..a56a6ede Binary files /dev/null and b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 differ diff --git a/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf new file mode 100644 index 00000000..604934aa Binary files /dev/null and b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf differ diff --git a/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 new file mode 100644 index 00000000..cbe564b0 Binary files /dev/null and b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 differ diff --git a/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 new file mode 100644 index 00000000..92fe38dd Binary files /dev/null and b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 differ diff --git a/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 new file mode 100644 index 00000000..0933dfe8 Binary files /dev/null and b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 differ diff --git a/_static/fonts/71e06579279fba7436d58a1c49288909.ttf b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf new file mode 100644 index 00000000..454e5d05 Binary files /dev/null and b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf differ diff --git a/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf new file mode 100644 index 00000000..10f8720c Binary files /dev/null and b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf differ diff --git a/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 new file mode 100644 index 00000000..943c5a0a Binary files /dev/null and b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 differ diff --git a/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 new file mode 100644 index 00000000..9eda94a2 Binary files /dev/null and b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 differ diff --git a/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 new file mode 100644 index 00000000..c0f0f73b Binary files /dev/null and b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 differ diff --git a/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 new file mode 100644 index 00000000..6284d2e3 Binary files /dev/null and b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 differ diff --git a/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 new file mode 100644 index 00000000..dd0851d5 Binary files /dev/null and b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 differ diff --git a/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 new file mode 100644 index 00000000..be81ddf5 Binary files /dev/null and b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 differ diff --git a/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 new file mode 100644 index 00000000..e0d41239 Binary files /dev/null and b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 differ diff --git a/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 new file mode 100644 index 00000000..ff1f96d3 Binary files /dev/null and b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 differ diff --git a/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 new file mode 100644 index 00000000..66efc250 Binary files /dev/null and b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 differ diff --git a/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 new file mode 100644 index 00000000..067cb322 Binary files /dev/null and b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 differ diff --git a/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 new file mode 100644 index 00000000..68f094cd Binary files /dev/null and b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 differ diff --git a/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf new file mode 100644 index 00000000..13a7f42e Binary files /dev/null and b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf differ diff --git a/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 new file mode 100644 index 00000000..11c7018c Binary files /dev/null and b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 differ diff --git a/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 new file mode 100644 index 00000000..e836b518 Binary files /dev/null and b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 differ diff --git a/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf new file mode 100644 index 00000000..99c5795f Binary files /dev/null and b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf differ diff --git a/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 new file mode 100644 index 00000000..8a81a2ff Binary files /dev/null and b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 differ diff --git a/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 new file mode 100644 index 00000000..ef9a2bdd Binary files /dev/null and b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 differ diff --git a/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 new file mode 100644 index 00000000..6b05020c Binary files /dev/null and b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 differ diff --git a/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf new file mode 100644 index 00000000..57a6dc38 Binary files /dev/null and b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf differ diff --git a/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 new file mode 100644 index 00000000..9756ba7c Binary files /dev/null and b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 differ diff --git a/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf new file mode 100644 index 00000000..68ff2a47 Binary files /dev/null and b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf differ diff --git a/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 new file mode 100644 index 00000000..72fc0214 Binary files /dev/null and b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 differ diff --git a/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf new file mode 100644 index 00000000..9c039d63 Binary files /dev/null and b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf differ diff --git a/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 new file mode 100644 index 00000000..f8d7a0d4 Binary files /dev/null and b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 differ diff --git a/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 new file mode 100644 index 00000000..472bf5a5 Binary files /dev/null and b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 differ diff --git a/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 new file mode 100644 index 00000000..5fd10290 Binary files /dev/null and b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 differ diff --git a/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 new file mode 100644 index 00000000..cb00b8b5 Binary files /dev/null and b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 differ diff --git a/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 new file mode 100644 index 00000000..ef920e5a Binary files /dev/null and b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 differ diff --git a/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 new file mode 100644 index 00000000..3f7f93ab Binary files /dev/null and b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 differ diff --git a/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 new file mode 100644 index 00000000..663ec4c2 Binary files /dev/null and b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 differ diff --git a/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 new file mode 100644 index 00000000..d0c5aa5e Binary files /dev/null and b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 differ diff --git a/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 new file mode 100644 index 00000000..3f060b34 Binary files /dev/null and b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 differ diff --git a/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 new file mode 100644 index 00000000..2f2cacd3 Binary files /dev/null and b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 differ diff --git a/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 new file mode 100644 index 00000000..1d173f2a Binary files /dev/null and b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 differ diff --git a/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 new file mode 100644 index 00000000..dd587a2b Binary files /dev/null and b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 differ diff --git a/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 new file mode 100644 index 00000000..9213da01 Binary files /dev/null and b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 differ diff --git a/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 new file mode 100644 index 00000000..c932cd45 Binary files /dev/null and b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 differ diff --git a/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 new file mode 100644 index 00000000..cce41ce7 Binary files /dev/null and b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 differ diff --git a/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 new file mode 100644 index 00000000..c8ab3b2d Binary files /dev/null and b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 differ diff --git a/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 new file mode 100644 index 00000000..477887e3 Binary files /dev/null and b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 differ diff --git a/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf new file mode 100644 index 00000000..aa6a46dd Binary files /dev/null and b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf differ diff --git a/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 new file mode 100644 index 00000000..c88b8aea Binary files /dev/null and b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 differ diff --git a/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 new file mode 100644 index 00000000..8571683e Binary files /dev/null and b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 differ diff --git a/_static/fonts/b019538234514166ec7665359d097403.woff2 b/_static/fonts/b019538234514166ec7665359d097403.woff2 new file mode 100644 index 00000000..29342a8d Binary files /dev/null and b/_static/fonts/b019538234514166ec7665359d097403.woff2 differ diff --git a/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 new file mode 100644 index 00000000..91231c9c Binary files /dev/null and b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 differ diff --git a/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 new file mode 100644 index 00000000..4ccadd18 Binary files /dev/null and b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 differ diff --git a/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 new file mode 100644 index 00000000..38d4c74d Binary files /dev/null and b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 differ diff --git a/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 new file mode 100644 index 00000000..ee64c936 Binary files /dev/null and b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 differ diff --git a/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 new file mode 100644 index 00000000..18c3f128 Binary files /dev/null and b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 differ diff --git a/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 new file mode 100644 index 00000000..a4699c78 Binary files /dev/null and b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 differ diff --git a/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 new file mode 100644 index 00000000..22ddee9c Binary files /dev/null and b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 differ diff --git a/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 new file mode 100644 index 00000000..fa67bec9 Binary files /dev/null and b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 differ diff --git a/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 new file mode 100644 index 00000000..22c57b01 Binary files /dev/null and b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 differ diff --git a/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf new file mode 100644 index 00000000..ce5a5252 Binary files /dev/null and b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf differ diff --git a/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 new file mode 100644 index 00000000..20eb7ec2 Binary files /dev/null and b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 differ diff --git a/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 new file mode 100644 index 00000000..2900346b Binary files /dev/null and b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 differ diff --git a/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 new file mode 100644 index 00000000..0f11176a Binary files /dev/null and b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 differ diff --git a/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 new file mode 100644 index 00000000..6363b1c7 Binary files /dev/null and b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 differ diff --git a/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf new file mode 100644 index 00000000..99e1e894 Binary files /dev/null and b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf differ diff --git a/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 new file mode 100644 index 00000000..27773c96 Binary files /dev/null and b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 differ diff --git a/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 new file mode 100644 index 00000000..b2ffb560 Binary files /dev/null and b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 differ diff --git a/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 new file mode 100644 index 00000000..7148fac7 Binary files /dev/null and b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 differ diff --git a/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 new file mode 100644 index 00000000..fcadc912 Binary files /dev/null and b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 differ diff --git a/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf new file mode 100644 index 00000000..7a8b630b Binary files /dev/null and b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf differ diff --git a/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 new file mode 100644 index 00000000..d2f30b58 Binary files /dev/null and b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 differ diff --git a/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 new file mode 100644 index 00000000..24a1bfd3 Binary files /dev/null and b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 differ diff --git a/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf new file mode 100644 index 00000000..4242da4d Binary files /dev/null and b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf differ diff --git a/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 new file mode 100644 index 00000000..65687e73 Binary files /dev/null and b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 differ diff --git a/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 new file mode 100644 index 00000000..6abf54d0 Binary files /dev/null and b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 differ diff --git a/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 new file mode 100644 index 00000000..b8dff97b Binary files /dev/null and b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 differ diff --git a/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 new file mode 100644 index 00000000..93cd525d Binary files /dev/null and b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 differ diff --git a/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 new file mode 100644 index 00000000..bfa05a0f Binary files /dev/null and b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 differ diff --git a/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 new file mode 100644 index 00000000..72ce0e98 Binary files /dev/null and b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 differ diff --git a/_static/fonts/d422317033deb87342a5e56c7be67458.ttf b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf new file mode 100644 index 00000000..6a9fc931 Binary files /dev/null and b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf differ diff --git a/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 new file mode 100644 index 00000000..b9cee29d Binary files /dev/null and b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 differ diff --git a/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf new file mode 100644 index 00000000..11a1e9fe Binary files /dev/null and b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf differ diff --git a/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 new file mode 100644 index 00000000..0b792b0b Binary files /dev/null and b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 differ diff --git a/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 new file mode 100644 index 00000000..fe8fcec7 Binary files /dev/null and b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 differ diff --git a/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 new file mode 100644 index 00000000..3d0f604e Binary files /dev/null and b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 differ diff --git a/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 new file mode 100644 index 00000000..fc71d944 Binary files /dev/null and b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 differ diff --git a/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 new file mode 100644 index 00000000..e1b7a79f Binary files /dev/null and b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 differ diff --git a/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 new file mode 100644 index 00000000..75d29cff Binary files /dev/null and b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 differ diff --git a/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 new file mode 100644 index 00000000..44819272 Binary files /dev/null and b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 differ diff --git a/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 new file mode 100644 index 00000000..a181dfe7 Binary files /dev/null and b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 differ diff --git a/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 new file mode 100644 index 00000000..b2391b92 Binary files /dev/null and b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 differ diff --git a/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 new file mode 100644 index 00000000..9997e98d Binary files /dev/null and b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 differ diff --git a/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 new file mode 100644 index 00000000..bfcc76fa Binary files /dev/null and b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 differ diff --git a/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 new file mode 100644 index 00000000..677de8b5 Binary files /dev/null and b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 differ diff --git a/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 new file mode 100644 index 00000000..064e94b7 Binary files /dev/null and b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 differ diff --git a/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 new file mode 100644 index 00000000..074504d6 Binary files /dev/null and b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 differ diff --git a/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 new file mode 100644 index 00000000..0bfb07d7 Binary files /dev/null and b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 differ diff --git a/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 new file mode 100644 index 00000000..f041fde3 Binary files /dev/null and b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 differ diff --git a/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 new file mode 100644 index 00000000..5b19d60d Binary files /dev/null and b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 differ diff --git a/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 new file mode 100644 index 00000000..23fcdf30 Binary files /dev/null and b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 differ diff --git a/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 new file mode 100644 index 00000000..2bfc2cee Binary files /dev/null and b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 differ diff --git a/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 new file mode 100644 index 00000000..481279c0 Binary files /dev/null and b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 differ diff --git a/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 new file mode 100644 index 00000000..771fbecc Binary files /dev/null and b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 differ diff --git a/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 new file mode 100644 index 00000000..d87fe266 Binary files /dev/null and b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 differ diff --git a/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 new file mode 100644 index 00000000..020729ef Binary files /dev/null and b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 differ diff --git a/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 new file mode 100644 index 00000000..60681387 Binary files /dev/null and b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 differ diff --git a/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 new file mode 100644 index 00000000..4487ab7b Binary files /dev/null and b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 differ diff --git a/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 new file mode 100644 index 00000000..1351aad4 Binary files /dev/null and b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 differ diff --git a/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 new file mode 100644 index 00000000..94ab5fb0 Binary files /dev/null and b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 differ diff --git a/_static/kpm/css/491.e7d65321.css b/_static/kpm/css/491.e7d65321.css new file mode 100644 index 00000000..e61e6f58 --- /dev/null +++ b/_static/kpm/css/491.e7d65321.css @@ -0,0 +1,1383 @@ +.self-building-square-spinner,.self-building-square-spinner *{box-sizing:border-box}.self-building-square-spinner{height:40px;width:40px;top:calc(-10px * 2 / 3)}.self-building-square-spinner .square{height:10px;width:10px;top:calc(-10px * 2 / 3);margin-right:calc(10px / 3);margin-top:calc(10px / 3);background:#ff1d5e;float:left;position:relative;opacity:0;animation:self-building-square-spinner 6s infinite}.self-building-square-spinner .square:nth-child(1){animation-delay:calc(.3s * 6)}.self-building-square-spinner .square:nth-child(2){animation-delay:2.1s}.self-building-square-spinner .square:nth-child(3){animation-delay:2.4s}.self-building-square-spinner .square:nth-child(4){animation-delay:calc(.3s * 3)}.self-building-square-spinner .square:nth-child(5){animation-delay:1.2s}.self-building-square-spinner .square:nth-child(6){animation-delay:1.5s}.self-building-square-spinner .square:nth-child(7){animation-delay:0s}.self-building-square-spinner .square:nth-child(8){animation-delay:.3s}.self-building-square-spinner .square:nth-child(9){animation-delay:.6s}.self-building-square-spinner .clear{clear:both}@keyframes self-building-square-spinner{0%{opacity:0}5%{opacity:1;top:0}50.9%{opacity:1;top:0}55.9%{opacity:0;top:inherit}} + +:root { + --baklava-control-color-primary: #5379b5; + --baklava-control-color-error: red; + --baklava-control-color-background: #2c2c2c; + --baklava-control-color-foreground: white; + --baklava-control-color-hover: #4c4c4c; + --baklava-control-color-active: #6c6c6c; + --baklava-control-color-disabled-foreground: gray; + --baklava-control-border-radius: 3px; + --baklava-sidebar-color-background: #3f3f3f; + --baklava-sidebar-color-foreground: white; + --baklava-node-color-background: #3f3f3fcc; + --baklava-node-color-foreground: white; + --baklava-node-color-selected: var(--baklava-control-color-primary); + --baklava-node-title-color-background: black; + --baklava-node-title-color-foreground: white; + --baklava-group-node-title-color-background: rgb(5, 75, 5); + --baklava-group-node-title-color-foreground: white; + --baklava-node-border-radius: 4px; + --baklava-color-connection-default: white; + --baklava-color-connection-allowed: green; + --baklava-color-connection-forbidden: red; + --baklava-editor-background-pattern-default: #232323; + --baklava-editor-background-pattern-line: #131313; + --baklava-editor-background-pattern-black: #00000022; + --baklava-context-menu-background: #000000cc; + --baklava-context-menu-shadow: 0 0 8px rgba(0, 0, 0, 0.65); + --baklava-toolbar-background: #0003; + --baklava-toolbar-foreground: white; + --baklava-node-palette-background: #0003; + --baklava-node-palette-foreground: white; + --baklava-visual-transition: 0.1s linear; +} + +.baklava-button { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + transition: background-color var(--baklava-visual-transition); + border: none; + padding: 0.45em 0.35em; + border-radius: var(--baklava-control-border-radius); + font-size: inherit; + cursor: pointer; + overflow-x: hidden; +} +.baklava-button:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-button:active { + background-color: var(--baklava-control-color-primary); +} +.baklava-button.--block { + width: 100%; +} + +.baklava-checkbox { + display: flex; + padding: 0.35em 0; + cursor: pointer; + overflow-x: hidden; + align-items: center; +} +.baklava-checkbox .__checkmark-container { + display: flex; + background-color: var(--baklava-control-color-background); + border-radius: var(--baklava-control-border-radius); + transition: background-color var(--baklava-visual-transition); + width: 18px; + height: 18px; +} +.baklava-checkbox:hover .__checkmark-container { + background-color: var(--baklava-control-color-hover); +} +.baklava-checkbox:active .__checkmark-container { + background-color: var(--baklava-control-color-active); +} +.baklava-checkbox .__checkmark { + stroke-dasharray: 15; + stroke-dashoffset: 15; + stroke: var(--baklava-control-color-foreground); + stroke-width: 2px; + fill: none; + transition: stroke-dashoffset var(--baklava-visual-transition); +} +.baklava-checkbox.--checked .__checkmark { + stroke-dashoffset: 0; +} +.baklava-checkbox.--checked .__checkmark-container { + background-color: var(--baklava-control-color-primary); +} +.baklava-checkbox .__label { + margin-left: 0.5rem; +} + +.baklava-context-menu { + color: var(--baklava-control-color-foreground); + position: absolute; + display: inline-block; + z-index: 100; + background-color: var(--baklava-context-menu-background); + box-shadow: var(--baklava-context-menu-shadow); + border-radius: 0 0 var(--baklava-control-border-radius) var(--baklava-control-border-radius); + min-width: 6rem; + width: -moz-max-content; + width: max-content; +} +.baklava-context-menu > .item { + display: flex; + align-items: center; + padding: 0.35em 1em; + transition: background 0.05s linear; + position: relative; +} +.baklava-context-menu > .item > .__label { + flex: 1 1 auto; +} +.baklava-context-menu > .item > .__submenu-icon { + margin-left: 0.75rem; +} +.baklava-context-menu > .item.--disabled { + color: var(--baklava-control-color-hover); +} +.baklava-context-menu > .item:not(.--header):not(.--active):not(.--disabled):hover { + background: var(--baklava-control-color-primary); +} +.baklava-context-menu > .item.--active { + background: var(--baklava-control-color-primary); +} +.baklava-context-menu.--nested { + left: 100%; + top: 0; +} +.baklava-context-menu.--flipped-x.--nested { + left: unset; + right: 100%; +} +.baklava-context-menu.--flipped-y.--nested { + top: unset; + bottom: 0; +} +.baklava-context-menu > .divider { + margin: 0.35em 0; + height: 1px; + background-color: var(--baklava-control-color-hover); +} + +.baklava-icon { + display: block; + height: 100%; +} +.baklava-icon.--clickable { + cursor: pointer; + transition: color var(--baklava-visual-transition); +} +.baklava-icon.--clickable:hover { + color: var(--baklava-control-color-primary); +} + +.baklava-input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + border: none; + border-radius: var(--baklava-control-border-radius); + padding: 0.45em 0.75em; + width: 100%; + transition: background-color var(--baklava-visual-transition); + font-size: inherit; + font: inherit; +} +.baklava-input:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-input:active { + background-color: var(--baklava-control-color-active); +} +.baklava-input:focus-visible { + outline: 1px solid var(--baklava-control-color-primary); +} +.baklava-input[type=number]::-webkit-inner-spin-button, .baklava-input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.baklava-input.--invalid { + box-shadow: 0 0 2px 2px var(--baklava-control-color-error); +} + +.baklava-num-input { + background: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + border-radius: var(--baklava-control-border-radius); + width: 100%; + display: grid; + grid-template-columns: 20px 1fr 20px; +} +.baklava-num-input > .__button { + display: flex; + flex: 0 0 auto; + width: 20px; + justify-content: center; + align-items: center; + transition: background var(--baklava-visual-transition); + cursor: pointer; +} +.baklava-num-input > .__button:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-num-input > .__button:active { + background-color: var(--baklava-control-color-active); +} +.baklava-num-input > .__button.--dec { + grid-area: 1/1/span 1/span 1; +} +.baklava-num-input > .__button.--dec > svg { + transform: rotateZ(90deg); +} +.baklava-num-input > .__button.--inc { + grid-area: 1/3/span 1/span 1; +} +.baklava-num-input > .__button.--inc > svg { + transform: rotateZ(-90deg); +} +.baklava-num-input > .__button path { + stroke: var(--baklava-control-color-foreground); + fill: var(--baklava-control-color-foreground); +} +.baklava-num-input > .__content { + grid-area: 1/2/span 1/span 1; + display: inline-flex; + cursor: pointer; + max-width: 100%; + min-width: 0; + align-items: center; + transition: background-color var(--baklava-visual-transition); +} +.baklava-num-input > .__content:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-num-input > .__content:active { + background-color: var(--baklava-control-color-active); +} +.baklava-num-input > .__content > .__label, .baklava-num-input > .__content > .__value { + margin: 0.35em 0; + padding: 0 0.5em; +} +.baklava-num-input > .__content > .__label { + flex: 1; + min-width: 0; + overflow: hidden; +} +.baklava-num-input > .__content > .__value { + text-align: right; +} +.baklava-num-input > .__content > input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + padding: 0.35em; + width: 100%; +} + +.baklava-select { + width: 100%; + position: relative; + color: var(--baklava-control-color-foreground); +} +.baklava-select.--open > .__selected { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.baklava-select.--open > .__selected > .__icon { + transform: rotate(180deg); +} +.baklava-select > .__selected { + background-color: var(--baklava-control-color-background); + padding: 0.35em 0.75em; + border-radius: var(--baklava-control-border-radius); + transition: background var(--baklava-visual-transition); + min-height: 1.7em; + display: flex; + align-items: center; + cursor: pointer; +} +.baklava-select > .__selected:hover { + background: var(--baklava-control-color-hover); +} +.baklava-select > .__selected:active { + background: var(--baklava-control-color-active); +} +.baklava-select > .__selected > .__text { + flex: 1 0 auto; + flex-basis: 0; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.baklava-select > .__selected > .__icon { + flex: 0 0 auto; + display: flex; + justify-content: center; + align-items: center; + transition: transform 0.25s ease; + width: 18px; + height: 18px; +} +.baklava-select > .__selected > .__icon path { + stroke: var(--baklava-control-color-foreground); + fill: var(--baklava-control-color-foreground); +} +.baklava-select > .__dropdown { + position: absolute; + top: 100%; + left: 0; + right: 0; + z-index: 10; + background-color: var(--baklava-context-menu-background); + filter: drop-shadow(0 0 4px black); + border-radius: 0 0 var(--baklava-control-border-radius) var(--baklava-control-border-radius); + max-height: 15em; + overflow-y: scroll; +} +.baklava-select > .__dropdown::-webkit-scrollbar { + width: 0px; + background: transparent; +} +.baklava-select > .__dropdown > .item { + padding: 0.35em; + padding-left: 1em; + transition: background 0.05s linear; +} +.baklava-select > .__dropdown > .item:not(.--header):not(.--active) { + cursor: pointer; +} +.baklava-select > .__dropdown > .item:not(.--header):not(.--active):hover { + background: var(--baklava-control-color-hover); +} +.baklava-select > .__dropdown > .item.--active { + background: var(--baklava-control-color-primary); +} +.baklava-select > .__dropdown > .item.--header { + color: var(--baklava-control-color-disabled-foreground); + border-bottom: 1px solid var(--baklava-control-color-disabled-foreground); + padding: 0.5em 0.35em; + padding-left: 1em; +} + +.baklava-slider { + background: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + border-radius: var(--baklava-control-border-radius); + position: relative; + cursor: pointer; +} +.baklava-slider > .__content { + display: flex; + position: relative; + z-index: 1; +} +.baklava-slider > .__content > .__label, .baklava-slider > .__content > .__value { + flex: 1 1 auto; + margin: 0.35em 0; + padding: 0 0.5em; + text-overflow: ellipsis; +} +.baklava-slider > .__content > .__value { + text-align: right; +} +.baklava-slider > .__content > input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + padding: 0.35em; + width: 100%; +} +.baklava-slider > .__slider { + position: absolute; + top: 0; + bottom: 0; + left: 0; + background-color: var(--baklava-control-color-primary); + border-radius: var(--baklava-control-border-radius); +} + +.baklava-connection { + stroke: var(--baklava-color-connection-default); + stroke-width: 2px; + fill: none; +} +.baklava-connection.--temporary { + stroke-width: 4px; + stroke-dasharray: 5 5; + stroke-dashoffset: 0; + animation: dash 1s linear infinite; + transform: translateY(-1px); +} +@keyframes dash { + to { + stroke-dashoffset: 20; + } +} +.baklava-connection.--allowed { + stroke: var(--baklava-color-connection-allowed); +} +.baklava-connection.--forbidden { + stroke: var(--baklava-color-connection-forbidden); +} + +.minimap { + position: absolute; + height: 15%; + width: 15%; + min-width: 150px; + max-width: 90%; + top: 20px; + right: 20px; + z-index: 900; +} + +.baklava-editor { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + outline: none !important; + font-family: "Lato", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-size: 15px; + touch-action: none; +} +.baklava-editor .background { + background-color: var(--baklava-editor-background-pattern-default); + background-image: linear-gradient(var(--baklava-editor-background-pattern-black) 2px, transparent 2px), linear-gradient(90deg, var(--baklava-editor-background-pattern-black) 2px, transparent 2px), linear-gradient(var(--baklava-editor-background-pattern-line) 1px, transparent 1px), linear-gradient(90deg, var(--baklava-editor-background-pattern-line) 1px, transparent 1px); + background-repeat: repeat; + width: 100%; + height: 100%; + pointer-events: none !important; +} +.baklava-editor *:not(input):not(textarea) { + -webkit-user-select: none; + user-select: none; + -moz-user-select: none; + touch-action: none; +} +.baklava-editor .input-user-select { + -webkit-user-select: auto; + user-select: auto; + -moz-user-select: auto; +} +.baklava-editor *, .baklava-editor *::after, .baklava-editor *::before { + box-sizing: border-box; +} +.baklava-editor.--temporary-connection { + cursor: crosshair; +} +.baklava-editor .connections-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none !important; +} +.baklava-editor .node-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; +} +.baklava-editor .node-container * { + pointer-events: all; +} + +.baklava-ignore-mouse * { + pointer-events: none !important; +} + +.baklava-ignore-mouse .__port { + pointer-events: all !important; +} + +.baklava-node-interface { + padding: 0.25em 0; + position: relative; +} +.baklava-node-interface .__port { + position: absolute; + width: 10px; + height: 10px; + background: white; + border-radius: 50%; + top: calc(50% - 5px); + cursor: crosshair; +} +.baklava-node-interface.--input { + text-align: left; + padding-left: 0.5em; +} +.baklava-node-interface.--input .__port { + left: -1.1em; +} +.baklava-node-interface.--output { + text-align: right; + padding-right: 0.5em; +} +.baklava-node-interface.--output .__port { + right: -1.1em; +} + +.baklava-node-palette { + position: absolute; + left: 0; + top: 60px; + width: 250px; + height: calc(100% - 60px); + z-index: 3; + padding: 2rem; + overflow-y: auto; + background: var(--baklava-node-palette-background); + color: var(--baklava-node-palette-foreground); +} +.baklava-node-palette h1 { + margin-top: 2rem; +} + +.baklava-node.--palette { + position: unset; + margin: 1rem 0; + cursor: grab; +} +.baklava-node.--palette:first-child { + margin-top: 0; +} +.baklava-node.--palette .__title { + padding: 0.5rem; + border-radius: var(--baklava-node-border-radius); +} + +.baklava-dragged-node { + position: absolute; + width: calc(250px - 4rem); + height: 40px; + z-index: 4; + pointer-events: none; +} + +.baklava-node { + max-width: 20rem; + background: var(--baklava-node-color-background); + color: var(--baklava-node-color-foreground); + border-radius: var(--baklava-node-border-radius); + position: absolute; + filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.8)); + transition: box-shadow var(--baklava-visual-transition), filter var(--baklava-visual-transition); +} +.baklava-node:hover { + box-shadow: 0 0 0 0.35px var(--baklava-node-color-selected); +} +.baklava-node.--selected { + z-index: 5; + box-shadow: 0 0 0 1px var(--baklava-node-color-selected); +} +.baklava-node.--dragging { + filter: drop-shadow(0 0 7px rgba(0, 0, 0, 0.8)); +} +.baklava-node.--dragging > .__title { + cursor: grabbing; +} +.baklava-node > .__title { + display: flex; + background: var(--baklava-node-title-color-background); + color: var(--baklava-node-title-color-foreground); + padding: 0.4em 0.75em; + border-radius: var(--baklava-node-border-radius) var(--baklava-node-border-radius) 0 0; + cursor: grab; +} +.baklava-node > .__title > *:first-child { + flex-grow: 1; +} +.baklava-node > .__title > .__title-label { + pointer-events: none; +} +.baklava-node > .__title > .__menu { + position: relative; + cursor: initial; +} +.baklava-node[data-node-type^=__baklava_] > .__title { + background: var(--baklava-group-node-title-color-background); + color: var(--baklava-group-node-title-color-foreground); +} +.baklava-node > .__content { + padding: 0.75em; +} +.baklava-node > .__content > div > div { + margin: 0.5em 0; +} +.baklava-node.--two-column > .__content { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + grid-template-areas: ". ." ". ."; +} +.baklava-node.--two-column > .__content > .__inputs { + grid-row: 1; + grid-column: 1; +} +.baklava-node.--two-column > .__content > .__outputs { + grid-row: 1; + grid-column: 2; +} + +.baklava-sidebar { + position: absolute; + height: 100%; + width: 25%; + min-width: 300px; + max-width: 90%; + top: 0; + right: 0; + z-index: 1000; + background-color: var(--baklava-sidebar-color-background); + color: var(--baklava-sidebar-color-foreground); + box-shadow: none; + overflow-x: hidden; + padding: 1em; + transform: translateX(100%); + transition: transform 0.5s; + display: flex; + flex-direction: column; +} +.baklava-sidebar.--open { + transform: translateX(0); + box-shadow: 0px 0px 15px black; +} +.baklava-sidebar .__resizer { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 4px; + cursor: col-resize; +} +.baklava-sidebar .__header { + display: flex; + align-items: center; +} +.baklava-sidebar .__header .__node-name { + margin-left: 0.5rem; +} +.baklava-sidebar .__close { + font-size: 2em; + border: none; + background: none; + color: inherit; + cursor: pointer; +} +.baklava-sidebar .__interface { + margin: 0.5em 0; +} + +.baklava-toolbar { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 60px; + z-index: 3; + padding: 0.5rem 2rem; + background: var(--baklava-toolbar-background); + color: var(--baklava-toolbar-foreground); + display: flex; + align-items: center; +} + +.baklava-toolbar-entry { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + +.baklava-toolbar-button { + color: var(--baklava-toolbar-foreground); + background: none; + border: none; + transition: color var(--baklava-visual-transition); +} +.baklava-toolbar-button:not([disabled]) { + cursor: pointer; +} +.baklava-toolbar-button:hover:not([disabled]) { + color: var(--baklava-control-color-primary); +} +.baklava-toolbar-button[disabled] { + color: var(--baklava-control-color-disabled-foreground); +} + +.slide-fade-enter-active { + transition: all 0.1s ease-out; +} + +.slide-fade-leave-active { + transition: all 0.1s ease-out; +} + +.slide-fade-enter-from, +.slide-fade-leave-to { + transform: translateY(5px); + opacity: 0; +} + +.fade-enter-active { + transition: opacity 0.1s ease-out !important; +} + +.fade-leave-active { + transition: opacity 0.1s ease-out !important; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} +/* sass-plugin-1:/Users/maronato/Developer/vue-toastification/src/scss/index.scss */ +.Vue-Toastification__container { + z-index: 9999; + position: fixed; + padding: 4px; + width: 600px; + box-sizing: border-box; + display: flex; + min-height: 100%; + color: #fff; + flex-direction: column; + pointer-events: none; +} +@media only screen and (min-width : 600px) { + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.top-center { + top: 1em; + } + .Vue-Toastification__container.bottom-left, + .Vue-Toastification__container.bottom-right, + .Vue-Toastification__container.bottom-center { + bottom: 1em; + flex-direction: column-reverse; + } + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.bottom-left { + left: 1em; + } + .Vue-Toastification__container.top-left .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-left .Vue-Toastification__toast { + margin-right: auto; + } + @supports not (-moz-appearance: none) { + .Vue-Toastification__container.top-left .Vue-Toastification__toast--rtl, + .Vue-Toastification__container.bottom-left .Vue-Toastification__toast--rtl { + margin-right: unset; + margin-left: auto; + } + } + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.bottom-right { + right: 1em; + } + .Vue-Toastification__container.top-right .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-right .Vue-Toastification__toast { + margin-left: auto; + } + @supports not (-moz-appearance: none) { + .Vue-Toastification__container.top-right .Vue-Toastification__toast--rtl, + .Vue-Toastification__container.bottom-right .Vue-Toastification__toast--rtl { + margin-left: unset; + margin-right: auto; + } + } + .Vue-Toastification__container.top-center, + .Vue-Toastification__container.bottom-center { + left: 50%; + margin-left: -300px; + } + .Vue-Toastification__container.top-center .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-center .Vue-Toastification__toast { + margin-left: auto; + margin-right: auto; + } +} +@media only screen and (max-width : 600px) { + .Vue-Toastification__container { + width: 100vw; + padding: 0; + left: 0; + margin: 0; + } + .Vue-Toastification__container .Vue-Toastification__toast { + width: 100%; + } + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.top-center { + top: 0; + } + .Vue-Toastification__container.bottom-left, + .Vue-Toastification__container.bottom-right, + .Vue-Toastification__container.bottom-center { + bottom: 0; + flex-direction: column-reverse; + } +} +.Vue-Toastification__toast { + display: inline-flex; + position: relative; + max-height: 800px; + min-height: 64px; + box-sizing: border-box; + margin-bottom: 1rem; + padding: 22px 24px; + border-radius: 8px; + box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05); + justify-content: space-between; + font-family: + "Lato", + Helvetica, + "Roboto", + Arial, + sans-serif; + max-width: 600px; + min-width: 326px; + pointer-events: auto; + overflow: hidden; + transform: translateZ(0); + direction: ltr; +} +.Vue-Toastification__toast--rtl { + direction: rtl; +} +.Vue-Toastification__toast--default { + background-color: #1976d2; + color: #fff; +} +.Vue-Toastification__toast--info { + background-color: #2196f3; + color: #fff; +} +.Vue-Toastification__toast--success { + background-color: #4caf50; + color: #fff; +} +.Vue-Toastification__toast--error { + background-color: #ff5252; + color: #fff; +} +.Vue-Toastification__toast--warning { + background-color: #ffc107; + color: #fff; +} +@media only screen and (max-width : 600px) { + .Vue-Toastification__toast { + border-radius: 0px; + margin-bottom: 0.5rem; + } +} +.Vue-Toastification__toast-body { + flex: 1; + line-height: 24px; + font-size: 16px; + word-break: break-word; + white-space: pre-wrap; +} +.Vue-Toastification__toast-component-body { + flex: 1; +} +.Vue-Toastification__toast.disable-transition { + animation: none !important; +} +.Vue-Toastification__close-button { + font-weight: bold; + font-size: 24px; + line-height: 24px; + background: transparent; + outline: none; + border: none; + padding: 0; + padding-left: 10px; + cursor: pointer; + transition: 0.3s ease; + align-items: center; + color: #fff; + opacity: 0.3; + transition: visibility 0s, opacity 0.2s linear; +} +.Vue-Toastification__close-button:hover, +.Vue-Toastification__close-button:focus { + opacity: 1; +} +.Vue-Toastification__toast:not(:hover) .Vue-Toastification__close-button.show-on-hover { + opacity: 0; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__close-button { + padding-left: unset; + padding-right: 10px; +} +@keyframes scale-x-frames { + 0% { + transform: scaleX(1); + } + 100% { + transform: scaleX(0); + } +} +.Vue-Toastification__progress-bar { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 5px; + z-index: 10000; + background-color: rgba(255, 255, 255, 0.7); + transform-origin: left; + animation: scale-x-frames linear 1 forwards; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__progress-bar { + right: 0; + left: unset; + transform-origin: right; +} +.Vue-Toastification__icon { + margin: auto 18px auto 0px; + background: transparent; + outline: none; + border: none; + padding: 0; + transition: 0.3s ease; + align-items: center; + width: 20px; + height: 100%; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__icon { + margin: auto 0px auto 18px; +} +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + 75% { + transform: translate3d(10px, 0, 0); + } + 90% { + transform: translate3d(-5px, 0, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutRight { + 40% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + to { + opacity: 0; + transform: translate3d(1000px, 0, 0); + } +} +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + transform: translate3d(-3000px, 0, 0); + } + 60% { + opacity: 1; + transform: translate3d(25px, 0, 0); + } + 75% { + transform: translate3d(-10px, 0, 0); + } + 90% { + transform: translate3d(5px, 0, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutLeft { + 20% { + opacity: 1; + transform: translate3d(20px, 0, 0); + } + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + transform: translate3d(0, 3000px, 0); + } + 60% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + 75% { + transform: translate3d(0, 10px, 0); + } + 90% { + transform: translate3d(0, -5px, 0); + } + to { + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceOutUp { + 20% { + transform: translate3d(0, -10px, 0); + } + 40%, 45% { + opacity: 1; + transform: translate3d(0, 20px, 0); + } + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + transform: translate3d(0, -3000px, 0); + } + 60% { + opacity: 1; + transform: translate3d(0, 25px, 0); + } + 75% { + transform: translate3d(0, -10px, 0); + } + 90% { + transform: translate3d(0, 5px, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutDown { + 20% { + transform: translate3d(0, 10px, 0); + } + 40%, 45% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} +.Vue-Toastification__bounce-enter-active.top-left, +.Vue-Toastification__bounce-enter-active.bottom-left { + animation-name: bounceInLeft; +} +.Vue-Toastification__bounce-enter-active.top-right, +.Vue-Toastification__bounce-enter-active.bottom-right { + animation-name: bounceInRight; +} +.Vue-Toastification__bounce-enter-active.top-center { + animation-name: bounceInDown; +} +.Vue-Toastification__bounce-enter-active.bottom-center { + animation-name: bounceInUp; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-left { + animation-name: bounceOutLeft; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-right { + animation-name: bounceOutRight; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-center { + animation-name: bounceOutUp; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-center { + animation-name: bounceOutDown; +} +.Vue-Toastification__bounce-leave-active, +.Vue-Toastification__bounce-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__bounce-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} +@keyframes fadeOutTop { + 0% { + transform: translateY(0); + opacity: 1; + } + 100% { + transform: translateY(-50px); + opacity: 0; + } +} +@keyframes fadeOutLeft { + 0% { + transform: translateX(0); + opacity: 1; + } + 100% { + transform: translateX(-50px); + opacity: 0; + } +} +@keyframes fadeOutBottom { + 0% { + transform: translateY(0); + opacity: 1; + } + 100% { + transform: translateY(50px); + opacity: 0; + } +} +@keyframes fadeOutRight { + 0% { + transform: translateX(0); + opacity: 1; + } + 100% { + transform: translateX(50px); + opacity: 0; + } +} +@keyframes fadeInLeft { + 0% { + transform: translateX(-50px); + opacity: 0; + } + 100% { + transform: translateX(0); + opacity: 1; + } +} +@keyframes fadeInRight { + 0% { + transform: translateX(50px); + opacity: 0; + } + 100% { + transform: translateX(0); + opacity: 1; + } +} +@keyframes fadeInTop { + 0% { + transform: translateY(-50px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +@keyframes fadeInBottom { + 0% { + transform: translateY(50px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +.Vue-Toastification__fade-enter-active.top-left, +.Vue-Toastification__fade-enter-active.bottom-left { + animation-name: fadeInLeft; +} +.Vue-Toastification__fade-enter-active.top-right, +.Vue-Toastification__fade-enter-active.bottom-right { + animation-name: fadeInRight; +} +.Vue-Toastification__fade-enter-active.top-center { + animation-name: fadeInTop; +} +.Vue-Toastification__fade-enter-active.bottom-center { + animation-name: fadeInBottom; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-left { + animation-name: fadeOutLeft; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-right { + animation-name: fadeOutRight; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-center { + animation-name: fadeOutTop; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-center { + animation-name: fadeOutBottom; +} +.Vue-Toastification__fade-leave-active, +.Vue-Toastification__fade-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__fade-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} +@keyframes slideInBlurredLeft { + 0% { + transform: translateX(-1000px) scaleX(2.5) scaleY(0.2); + transform-origin: 100% 50%; + filter: blur(40px); + opacity: 0; + } + 100% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredTop { + 0% { + transform: translateY(-1000px) scaleY(2.5) scaleX(0.2); + transform-origin: 50% 0%; + filter: blur(240px); + opacity: 0; + } + 100% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredRight { + 0% { + transform: translateX(1000px) scaleX(2.5) scaleY(0.2); + transform-origin: 0% 50%; + filter: blur(40px); + opacity: 0; + } + 100% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredBottom { + 0% { + transform: translateY(1000px) scaleY(2.5) scaleX(0.2); + transform-origin: 50% 100%; + filter: blur(240px); + opacity: 0; + } + 100% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideOutBlurredTop { + 0% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 0%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateY(-1000px) scaleY(2) scaleX(0.2); + transform-origin: 50% 0%; + filter: blur(240px); + opacity: 0; + } +} +@keyframes slideOutBlurredBottom { + 0% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateY(1000px) scaleY(2) scaleX(0.2); + transform-origin: 50% 100%; + filter: blur(240px); + opacity: 0; + } +} +@keyframes slideOutBlurredLeft { + 0% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateX(-1000px) scaleX(2) scaleY(0.2); + transform-origin: 100% 50%; + filter: blur(40px); + opacity: 0; + } +} +@keyframes slideOutBlurredRight { + 0% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateX(1000px) scaleX(2) scaleY(0.2); + transform-origin: 0% 50%; + filter: blur(40px); + opacity: 0; + } +} +.Vue-Toastification__slideBlurred-enter-active.top-left, +.Vue-Toastification__slideBlurred-enter-active.bottom-left { + animation-name: slideInBlurredLeft; +} +.Vue-Toastification__slideBlurred-enter-active.top-right, +.Vue-Toastification__slideBlurred-enter-active.bottom-right { + animation-name: slideInBlurredRight; +} +.Vue-Toastification__slideBlurred-enter-active.top-center { + animation-name: slideInBlurredTop; +} +.Vue-Toastification__slideBlurred-enter-active.bottom-center { + animation-name: slideInBlurredBottom; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-left { + animation-name: slideOutBlurredLeft; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-right { + animation-name: slideOutBlurredRight; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-center { + animation-name: slideOutBlurredTop; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-center { + animation-name: slideOutBlurredBottom; +} +.Vue-Toastification__slideBlurred-leave-active, +.Vue-Toastification__slideBlurred-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__slideBlurred-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} + diff --git a/_static/kpm/css/index-e0bb4ee9.b589bbb5.css b/_static/kpm/css/index-e0bb4ee9.b589bbb5.css new file mode 100644 index 00000000..46300999 --- /dev/null +++ b/_static/kpm/css/index-e0bb4ee9.b589bbb5.css @@ -0,0 +1,38 @@ +@import url(https://fonts.googleapis.com/css2?family=Montserrat:wght@500&family=Roboto&family=Roboto+Mono&display=swap); +.active>.highlighted[data-v-7a759b63]{fill:#fff}.active>.highlighted_line[data-v-7a759b63]{stroke:#fff;stroke-width:.998972}.active>.hovered[data-v-7a759b63]{fill:#00e58d}.active>.hovered_line[data-v-7a759b63]{stroke:#00e58d;stroke-width:.998972} +.white[data-v-ef71f1c4]{fill:#fff}.green[data-v-ef71f1c4]{fill:#00e58d}.black[data-v-ef71f1c4]{fill:#0f0f0f}.left[data-v-ef71f1c4]{rotate:270deg}.right[data-v-ef71f1c4]{rotate:180deg}.up[data-v-ef71f1c4]{rotate:90deg}.small[data-v-ef71f1c4]{scale:.33}.medium[data-v-ef71f1c4]{scale:.5}.big[data-v-ef71f1c4]{scale:.6}.hovered[data-v-ef71f1c4]{fill:#00e58d}.noninteractable[data-v-ef71f1c4]{pointer-events:none} +.hovered[data-v-78309d1e]{fill:#00e58d} +.hovered[data-v-e991a23a]{fill:#00e58d} +.normal[data-v-5307c3a1]{fill:#fff}.hovered[data-v-5307c3a1]{fill:#00e58d} +.normal[data-v-653cba30]{fill:#fff}.hovered[data-v-653cba30]{fill:#00e58d} +.__active>.highlighted[data-v-05d4af55]{fill:#00e58d}.__active:hover>.highlighted[data-v-05d4af55]{fill:#80f2c6}.__inactive>.highlighted[data-v-05d4af55],.__inactive>.normal[data-v-05d4af55]{fill:#fff}.__inactive:hover>.highlighted[data-v-05d4af55]{fill:#00e58d}.__inactive>.hovered[data-v-05d4af55]{fill:#00e58d}.connected[data-v-05d4af55]{fill:#00e58d}.disconnected[data-v-05d4af55]{fill:#cc4747}.normal[data-v-05d4af55]{fill:#fff} +.normal[data-v-410f3ef8]{fill:#fff}.gray[data-v-410f3ef8]{fill:#6f6f6f}.hovered[data-v-410f3ef8]{fill:#00e58d}.green[data-v-410f3ef8]{fill:#00e58d}.animate[data-v-410f3ef8]{animation:blink-410f3ef8 2 cubic-bezier(0.68, -0.55, 0.27, 1.55) 1.5s}@keyframes blink-410f3ef8{0%{fill:#00e58d}40%{fill:#cca747}60%{fill:#cca747}100%{fill:#00e58d}} +.normal[data-v-41e945d3]{fill:#fff}.hovered[data-v-41e945d3]{fill:#00e58d} +.white[data-v-f95c2bf4]{fill:#fff}.hovered[data-v-f95c2bf4]{fill:#00e58d} +div[data-v-74c292ef]{display:flex;justify-content:space-between;min-width:10em;height:2.5em;flex-direction:row;align-items:center}div>input[type=button][data-v-74c292ef],div label[data-v-74c292ef]{width:100%;font-size:12px;color:#fff;padding:0 .9375em;line-height:2.5rem;background-color:unset;border:unset;cursor:pointer}div>input[type=button][data-v-74c292ef]:hover,div label[data-v-74c292ef]:hover{color:#00e58d} +.normal[data-v-5707e051]{fill:#fff}.hovered[data-v-5707e051]{fill:#00e58d} +.normal[data-v-a4021e88]{stroke:#fff;fill:#1d1d1d}.hovered[data-v-a4021e88]{stroke:#00e58d;fill:#1d1d1d} +svg[data-v-0f26c012]{stroke:#6f6f6f}.white[data-v-0f26c012]{stroke:#fff} +.flip[data-v-0f428cc6]{rotate:180deg} +div[data-v-9ef0f814]{width:35px;height:35px;border-radius:50%;display:flex;align-items:center;justify-content:center}.info[data-v-9ef0f814]{background-color:#00e58d}.warning[data-v-9ef0f814]{background-color:#cca747}.error[data-v-9ef0f814]{background-color:#cc4747} +.notification-container[data-v-0512bfcb]{display:flex;align-items:center;gap:20px;height:90px;border-radius:15px;padding:15px}.notification-container.border[data-v-0512bfcb]{border:1px solid #6f6f6f}.notification-container>.notification-badge[data-v-0512bfcb]{flex-basis:35px}.notification-container>.notification-message[data-v-0512bfcb]{display:flex;flex-direction:column;flex-grow:1;font-size:12px;min-width:0}.notification-container>.notification-message>.message[data-v-0512bfcb]{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.notification-container>.notification-message>.info[data-v-0512bfcb]{color:#00e58d}.notification-container>.notification-message>.warning[data-v-0512bfcb]{color:#cca747}.notification-container>.notification-message>.error[data-v-0512bfcb]{color:#cc4747}.notification-container>.notification-message>span[data-v-0512bfcb]:last-child{color:#fff} +.notifications[data-v-fd15cad8]{height:calc(100% - 120px - 35px);width:435px;max-width:calc(100vw - 60px);background-color:#1d1d1d;opacity:.9;position:absolute;top:60px;right:-495px;z-index:4;padding:30px;overflow-y:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.notifications>.info[data-v-fd15cad8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.notifications>.info>span[data-v-fd15cad8]{color:#fff;font-size:16px}.notifications>.info>button[data-v-fd15cad8]{color:#6f6f6f;font-size:14px}.notifications>.panel[data-v-fd15cad8]{display:grid;grid-row-gap:20px}.notifications>.panel ul[data-v-fd15cad8]{max-width:calc(100vw - 60px)}.notifications>.panel li[data-v-fd15cad8]{-webkit-user-select:text;-moz-user-select:text;user-select:text} +.settings-panel{background-color:#1d1d1dE6;position:absolute;padding:20px;color:#fff;top:61px;right:-495px;width:435px;max-height:calc(100% - 60px - 35px - 40px);min-height:-moz-fit-content;min-height:fit-content;max-width:calc(100vw - 40px);z-index:4;overflow-y:auto}.settings-panel>.setting-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.settings-panel>.setting-header>span{color:#fff;font-size:16px}.settings-panel>.panel{display:grid;grid-row-gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.settings-panel>.panel>div{max-width:calc(100vw - 40px)}.settings-panel>.panel>div>.option-label{padding-bottom:10px;color:#fff;font-size:14px} +.popup-menu{position:absolute;background-color:#1d1d1dE6;border:1px solid #00e58d;border-radius:10px;color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:50vw;top:50vh;transform:translate(-50%, -50%);padding:1em;display:flex;flex-direction:column;gap:1em;height:-moz-max-content;height:max-content}.popup-menu>.__header{display:flex;align-items:center}.popup-menu>.__header>.__header-title{font-size:12px;flex-grow:1}.popup-menu>.__header>.__close{flex-grow:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;cursor:pointer}.popup-menu>.__name-option>.baklava-input{box-sizing:border-box} +.blur-panel{background-color:#1d1d1d80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;padding:20px;color:#fff;left:0%;z-index:10;top:0%;width:100%;height:100%;min-height:-moz-fit-content;min-height:fit-content}.blur-panel>.panel{display:grid;grid-row-gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:25%;top:25%;width:50%;height:50%}.blur-panel>.panel>div>.option-label{padding-bottom:10px;color:#fff;font-size:14px} +.__tooltip{z-index:4;font-size:12px;color:#fff;position:absolute;text-align:center;flex-direction:column;width:-moz-max-content;width:max-content;margin:1em 0;padding:1em;background-color:#1d1d1d;border:1px solid #343434;border-radius:15px;transform:translateX(-50%)} +.prevent-select[data-v-1fe64c2d]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.prevent-select>.__content[data-v-1fe64c2d]{-webkit-user-select:text;-moz-user-select:text;user-select:text} +.normal{fill:#fff}.gray{fill:#6f6f6f}.green{fill:#00e58d} +.white[data-v-1fc3c03b]{fill:#fff}.hovered[data-v-1fc3c03b]{fill:#00e58d} +.hovered svg{display:block}.hovered path{fill:#00e58d !important} +.wrapper[data-v-45b20100]{z-index:5}.wrapper-hud[data-v-45b20100]{position:relative}.wrapper-hidden[data-v-45b20100]{position:absolute;width:100%;top:-60px;padding-bottom:90px;transition:.2s}.wrapper-hidden.isHovered[data-v-45b20100]{transform:translateY(60px);padding-bottom:0}.wrapper-hidden:not(.isHovered)>.progress-bar[data-v-45b20100]{bottom:91px}.container[data-v-45b20100]{display:flex;justify-content:space-between;align-items:center;height:60px;background-color:#1d1d1d;border:1px solid #343434;border-left:0;border-right:0}.container .editorTitle[data-v-45b20100]{width:auto;text-wrap:wrap;flex-grow:1;cursor:text;text-align:center;padding:0 10px}.container .editorTitle.compressed-mobile[data-v-45b20100]{display:none}.container .editorTitleInput[data-v-45b20100]{font-size:12px;padding:0 10px;flex-grow:1}.container .editorTitleInput.compressed-mobile[data-v-45b20100]{display:none}.container .progress-bar[data-v-45b20100]{position:absolute;height:12px;left:0;bottom:0;border-radius:3px;z-index:5;background-color:#00e58d}.container .progress-bar.animate[data-v-45b20100]{animation:pulse-45b20100 ease-in-out 2s infinite}@keyframes pulse-45b20100{0%{left:0;width:0}50%{width:100%;left:0}100%{left:100%;width:0%}}.container>div[data-v-45b20100]{display:inherit;flex-grow:1}.container>div>div[data-v-45b20100]{flex-grow:0;display:flex;width:3.75em;height:3.75em;justify-content:center;align-items:center;position:relative;box-sizing:border-box;border-left:1px solid #343434}.container>div>div.compressed-mobile[data-v-45b20100]{width:auto;flex-grow:1;max-width:3.75em}.container>div>div[data-v-45b20100]:last-child{border-right:1px solid #343434}.container>div>div>svg[data-v-45b20100]{display:block;width:1.6875em;height:1.6875em}.container>div>div>.small_svg[data-v-45b20100]{display:block;width:1.2em;height:1.2em}.container>div>div>.smaller_svg[data-v-45b20100]{display:block;width:1em;height:1em}.container>div>div>.small_svg_stop[data-v-45b20100]{position:absolute;width:.8em;height:.8em;top:8%;right:8%;stroke:#999}.container>div>div>.dropdown-wrapper[data-v-45b20100],.container>div>div>.tooltip[data-v-45b20100],.container>div>div>.backend-status[data-v-45b20100]{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;flex-direction:column;top:100%;left:0;display:none;background-color:#181818;border:2px solid #737373}.container>div>div>.dropdown-wrapper>div[data-v-45b20100]:hover,.container>div>div>.tooltip>div[data-v-45b20100]:hover,.container>div>div>.backend-status>div[data-v-45b20100]:hover{background-color:#2a2a2a}.container>div>div>.backend-status[data-v-45b20100]{width:220px;display:flex;transform:translate(-89%, -180px);padding:20px;font-size:12px;justify-content:space-between;border:none;transition:transform 1s}.container>div>div>.backend-status>div[data-v-45b20100]{display:flex;justify-content:space-between}.container>div>div>.backend-status>div>.disconnected[data-v-45b20100]{color:#cc4747}.container>div>div>.backend-status>div>.connected[data-v-45b20100]{color:#00e58d}.container>div>div>.tooltip[data-v-45b20100]{border-radius:15px;background-color:#1d1d1d;border:1px solid #6f6f6f;padding:10px;left:1.875em;transform:translate(-50%, 25%);pointer-events:none;white-space:nowrap}.container>div>div>.tooltip.last[data-v-45b20100]{transform:translate(-75%, 25%)}.container>div>div>.tooltip.first[data-v-45b20100]{transform:translate(-25%, 25%)}.container>div>div.logo:hover>.dropdown-wrapper[data-v-45b20100],.container>div>div.logo:hover>.backend-status[data-v-45b20100],.container>div>div.logo:hover>.tooltip[data-v-45b20100]{display:flex}.container>div>div.box>.small_svg[data-v-45b20100],.container>div>div.hoverbox>.small_svg[data-v-45b20100]{fill:#fff}.container>div>div.box:hover>.tooltip[data-v-45b20100]:not(.compressed-mobile),.container>div>div.hoverbox:hover>.tooltip[data-v-45b20100]:not(.compressed-mobile){display:flex;z-index:11}.container>div>div.hoverbox[data-v-45b20100]:hover{cursor:pointer}.container>div>div.hoverbox:hover>.small_svg[data-v-45b20100]{fill:#00e58d}.container>div>div.hoverbox:hover>.small_svg_stop[data-v-45b20100]{stroke:#a02c2c}.container>div>div.box>.small_svg[data-v-45b20100]{filter:brightness(50%)}.container>div>div.search-editor-nodes[data-v-45b20100]{max-width:15em}.container>div>div.search-editor-nodes>input[data-v-45b20100]{width:100%;height:100%;padding:0 .5em;color:#fff;border:none;background-color:#1d1d1d}.container>div>div.search-editor-nodes>input[data-v-45b20100]:focus{outline:1px solid #00e58d;z-index:12}.container>div>div.search-editor-nodes>input[data-v-45b20100]::-moz-placeholder{opacity:.5}.container>div>div.search-editor-nodes>input[data-v-45b20100]::placeholder{opacity:.5}.container>div>div.search-editor-nodes.compressed-mobile[data-v-45b20100]{position:absolute;top:61px;max-width:40vw;border:1px solid #343434;box-sizing:border-box}span[data-v-45b20100]{font-size:12px;color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.prevent-select[data-v-45b20100]{-webkit-user-select:none;-moz-user-select:none;user-select:none} +#hterm-terminal[data-v-c10c6824]{position:relative;width:100%;height:100%;background-color:#1d1d1d} +.terminal-wrapper[data-v-028890e5]{z-index:3;position:absolute;min-height:35px;border-top:1px solid #343434;bottom:0;width:100%;transition:transform 1s;display:flex;flex-direction:column}.container[data-v-028890e5]{position:relative;height:35px;min-height:35px;background-color:#1d1d1d;width:calc(100% - 30px);border-bottom:1px solid #343434;display:flex;padding-right:30px;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none}.container>.resizer[data-v-028890e5]{position:absolute;height:5px;width:100%;top:0;cursor:row-resize;pointer-events:none}.container>.button-wrapper[data-v-028890e5]{display:flex;align-items:center;gap:30px}.container>.button-wrapper>button[data-v-028890e5]{gap:10px}.container>.tab[data-v-028890e5]{display:flex;text-align:center;height:35px}.container>.tab>.tab-item[data-v-028890e5]{border-right:1px solid #343434;padding:0 0 0 25px;line-height:35px}.container>.tab>.tab-item.active[data-v-028890e5]{background-color:#4a4a4a}.container>.tab>.tab-item[data-v-028890e5]:not(.active):hover{background-color:#343434}.container>.tab>.tab-item.active:hover>span[data-v-028890e5]{color:#00e58d}.container>.tab>.tab-item .indicator-wrapper[data-v-028890e5]{width:25px;height:100%;display:flex}.container>.tab>.tab-item .indicator-wrapper>svg[data-v-028890e5]{padding:5px;display:block;margin-left:auto}span[data-v-028890e5]{color:#fff;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}button[data-v-028890e5]{display:flex}button[data-v-028890e5]:hover{color:#00e58d}button:hover>span[data-v-028890e5]{color:#00e58d} +.loading-screen{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:99;background-color:#1d1d1d80}#loading-screen-spinner>.square{background:#00e58d !important} +.hex-input{text-align:right} +.interface-cursor[data-v-f0e65632]{position:relative;top:0;left:0}.interface-cursor>.line[data-v-f0e65632]{position:absolute;height:.2em;width:1.4em;background-color:#cca747;z-index:100} +.anchor{pointer-events:all}.anchor>circle{fill:#00e58d}.anchor>circle:hover{fill:#cc4747} +.normal[data-v-5ad7104f]{fill:#fff}.hovered[data-v-5ad7104f]{fill:#00e58d}.green[data-v-5ad7104f]{fill:#00e58d} +a[data-v-12450553]{color:#fff;text-decoration:none;word-wrap:normal;width:100%}a>.link_item[data-v-12450553]{border:1px solid #737373;border-bottom:0px solid}a>.link_item>img[data-v-12450553]{display:inline-block;vertical-align:middle;margin:1em 1em 1em 1em;width:auto;height:100%;max-height:1.75em}a>.link_item>span[data-v-12450553]{vertical-align:middle;font-size:12px}a>.link_item:hover>span[data-v-12450553]{color:#00e58d} +.__dragged[data-v-cfa387f2]{border-radius:var(--baklava-node-border-radius);border-width:0px} +:root{--baklava-control-color-primary: #00E58D;--baklava-control-color-error: #cc4747;--baklava-control-color-background: #343434;--baklava-control-color-foreground: #ffffff;--baklava-control-color-hover: #4a4a4a;--baklava-control-color-active: #6f6f6f;--baklava-control-border-radius: 10px;--baklava-node-color-background: #1d1d1d;--baklava-node-color-foreground: #ffffff;--baklava-node-color-selected: --baklava-control-color-primary;--baklava-node-title-color-background: #343434;--baklava-node-title-color-foreground: #ffffff;--baklava-node-border-radius: 15px;--baklava-color-connection-default: #ffffff;--baklava-color-connection-allowed: #00E58D;--baklava-color-connection-forbidden: #cc4747;--baklava-editor-background-pattern-default: #0f0f0f;--baklava-editor-background-pattern-line: #343434;--baklava-editor-background-pattern-black: #343434;--baklava-sidebar-color-background: #1d1d1d;--baklava-sidebar-color-foreground: #ffffff}.connections-container{z-index:1}.node-container{z-index:2}.selection-container{z-index:3;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none}.baklava-editor .background{background-image:linear-gradient(#151515 2px, transparent 2px),linear-gradient(90deg, #151515 2px, transparent 2px)}.baklava-editor{position:relative;z-index:1}.baklava-slider>.__slider{background-color:#00e58d}.baklava-node-interface{padding:.5em 0}.baklava-node-interface .--output{height:1em}.baklava-node-interface .--input{height:1em}.baklava-node-interface>.__port,.baklava-node-interface>.__square{background-color:#00e58d;width:1em;height:1em;top:calc(50% - .5em)}.baklava-node-interface>.__port>svg,.baklava-node-interface>.__square>svg{position:absolute;top:0;left:0;height:1em;width:1em}.baklava-node-interface>.__square{border-radius:10%}.baklava-node-interface>.__square>.__port_name_left,.baklava-node-interface>.__square>.__port_name_right{position:relative;height:1em;width:-moz-fit-content;width:fit-content;top:-0.15em}.baklava-node-interface>.__square>.__port_name_left>span,.baklava-node-interface>.__square>.__port_name_right>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 .3em 0 .3em;border-radius:5px;background-color:rgba(0,229,141,.5)}.baklava-node-interface>.__square>.__port_name_left>input,.baklava-node-interface>.__square>.__port_name_right>input{color:#fff;background-color:rgba(52,52,52,.7);position:relative;outline:none;border:none;border-radius:5px}.baklava-node-interface>.__square>.__port_name_left>input:focus,.baklava-node-interface>.__square>.__port_name_right>input:focus{outline:solid 2px #00e58d}.baklava-node-interface>.__square>.__port_name_left>input.__error,.baklava-node-interface>.__square>.__port_name_right>input.__error{outline:solid 2px #cc4747}.baklava-node-interface>.__square>.__port_name_left{left:0;translate:-100%}.baklava-node-interface>.__square>.__port_name_left>span,.baklava-node-interface>.__square>.__port_name_left>input{margin-left:0}.baklava-node-interface>.__square>.__port_name_left>span{margin-right:.15em}.baklava-node-interface>.__square>.__port_name_left>input{margin-right:.3em}.baklava-node-interface>.__square>.__port_name_right{left:100%}.baklava-node-interface>.__square>.__port_name_right>span,.baklava-node-interface>.__square>.__port_name_right>input{margin-right:0}.baklava-node-interface>.__square>.__port_name_right>span{margin-left:.15em}.baklava-node-interface>.__square>.__port_name_right>input{margin-left:.3em}.baklava-node-interface>.__square.__port_input{position:relative;top:-0.15em;height:1em;width:-moz-fit-content;width:fit-content;background-color:rgba(0,0,0,0);border:none;border-radius:10%;color:#fff;caret-color:#fff}.baklava-node-interface.__readonly>*{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:auto}.baklava-node-interface.__readonly>* *{pointer-events:none}.baklava-node-interface>.baklava-num-input>.__button.--inc{border-bottom-right-radius:var(--baklava-control-border-radius);border-top-right-radius:var(--baklava-control-border-radius)}.baklava-node-interface>.baklava-num-input>.__button.--dec{border-bottom-left-radius:var(--baklava-control-border-radius);border-top-left-radius:var(--baklava-control-border-radius)}.baklava-checkbox .__checkmark-container>svg>path{display:none}.baklava-node-interface .greyedout_arrow{background-color:#343434}.baklava-node-interface .picked{background-color:#cca747 !important}.baklava-context-menu{display:flex;flex-direction:column;background-color:#1d1d1d;border-radius:unset;border:1px solid #343434;cursor:pointer}.baklava-context-menu.hidden-navbar{translate:0 60px}.baklava-context-menu>.item{display:flex;gap:1em;position:relative;flex-direction:row;text-decoration:none;padding:.75em 1em;height:2.75em;color:inherit;font-size:.875em}.baklava-context-menu>.item:hover{color:var(--baklava-control-color-primary)}.baklava-context-menu>.item>.icon{flex-grow:0;pointer-events:none;width:auto;height:1.25em;width:1.25em}.baklava-context-menu>.item>.icon:not(.readonly):hover{color:var(--baklava-control-color-primary)}.baklava-context-menu>.item>.icon>img{height:1.25em;width:1.25em}.baklava-context-menu>.item>.icon>svg{height:1.25em;width:1.25em}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover{background-color:#1d1d1d}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover>.flex-fill{color:#00e58d}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover>.ml-3 svg path{fill:#00e58d}.baklava-context-menu>.item>.ml-3>svg{height:7px;transform:scale(80);scale:.02}.baklava-context-menu>.item>.ml-3>svg>path{d:path("M99.4,111.6l64.2,69.2L99.4,250h54.5l64.2-69.2l-64.2-69.2H99.4z") !important}.rectangle-selection{height:100%;width:100%;opacity:.15;background-color:#00e58d}.rectangle-selection-border{border:2px dashed #00e58d;opacity:.7}.Vue-Toastification__toast--default{background-color:#1d1d1d !important}@media only screen and (max-width: 600px){.Vue-Toastification__toast{width:90% !important;margin-left:5%;border-radius:8px !important}}*{font-family:"Montserrat",sans-serif}html,body,#app,#container{position:absolute;width:100%;height:100%;margin:0;background-color:#0f0f0f;overflow:hidden}input[type=file]{display:none}input[type=button],label{margin:0;padding:0;text-align:left;-webkit-user-select:unset;-moz-user-select:unset;user-select:unset}hr{margin:0;border:1px solid #343434}ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:20px}button{background-color:unset;border:unset;cursor:pointer;-webkit-user-select:unset;-moz-user-select:unset;user-select:unset;padding:0}:root{scrollbar-color:#6f6f6f #343434 !important}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#343434}::-webkit-scrollbar-thumb{background-color:#6f6f6f;border-radius:5px}.baklava-connection,.connection-wrapper{pointer-events:visibleStroke;stroke:var(--color)}.baklava-connection.--hover,.--hover.connection-wrapper{stroke-width:4px;stroke:#00e58d}.baklava-connection.--dashed,.--dashed.connection-wrapper{stroke-dasharray:10 4;stroke-dashoffset:0}.baklava-connection.--dotted,.--dotted.connection-wrapper{stroke-dasharray:3 3}.connection-wrapper{stroke:rgba(0,0,0,0);stroke-width:10px}.baklava-node{min-width:300px !important;width:auto;display:table;max-width:none;background-color:#1d1d1dE6;transition:box-shadow var(--baklava-visual-transition) !important;filter:none}.baklava-node.--selected{z-index:5;box-shadow:0 0 0 calc(1px/var(--scale)) #00e58d}.baklava-node:hover{box-shadow:0 0 0 calc(1px/var(--scale)) #00e58d}.baklava-node.--dragging{box-shadow:0 0 0 calc(1.5px/var(--scale)) #00e58d;filter:none}.baklava-node>.__content>div>div{margin:0}.baklava-node>.__title{height:4em;display:flex;align-items:center;gap:1em;padding:0 1em;width:auto;white-space:nowrap}.baklava-node>.__title>.__title-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.baklava-node>.__title>.__title-label{flex-grow:1}.baklava-node>.__title>.__title-label>.subtitle{margin:0;font-size:12px;color:#999;pointer-events:all}.baklava-node>.__title>.__title-label>.subtitle>span{color:#00e58d}.baklava-node>.__title>.__title-label>span{color:#00e58d}.baklava-node>.__title>.__menu{cursor:pointer;flex-grow:0;height:2em;width:2em;padding:.5em}.baklava-node>.__title>.__menu>svg{height:1em;width:1em}.baklava-node>.__title>.__menu:hover>svg{color:#00e58d}.baklava-node.--two-column>.__content>.__inputs{grid-row:2;grid-column:1}.baklava-node.--two-column>.__content>.__outputs{grid-row:2;grid-column:2}.baklava-node.--two-column>.__content>.__properties{grid-row:1;grid-column:1/span 2}.baklava-node.--greyed-out{filter:brightness(60%) blur(0.5px)}.baklava-node-palette{top:0;width:auto;min-width:min(300px,50vw);max-width:min(450px,50vw);background:#151515;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-right:1px solid #393939;height:calc(100% - 60px - 35px);padding:0;z-index:3;display:flex;flex-direction:column;overflow:visible}.baklava-node-palette.hidden-navbar{top:60px;transform:translate(-450px, 0px)}.baklava-node-palette .search-bar .palette-title{display:flex;align-items:center;margin:0;border:1px solid #393939;border-right:0;border-top:0;border-left:0;padding-bottom:1em;padding-top:1em;padding-left:2em}.baklava-node-palette .nodes{overflow-y:auto;overflow-x:hidden}.baklava-node-palette h1{margin:0}.baklava-node-palette>.nodes{overflow-y:auto}.__entry,.__entry_search{gap:1em;padding:0 1em;width:auto;font-size:12px;border:1px solid #393939;border-right:0;border-top:0;border-left:0;height:4em;background:var(--baklava-node-color-background);color:#fff;display:flex;align-items:center;cursor:grab;overflow:hidden}.__entry:hover,.__entry_search:hover{color:#00e58d}.__entry>.__title-icon,.__entry_search>.__title-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.__entry>.__title-label,.__entry_search>.__title-label{flex-grow:1;width:-moz-max-content;width:max-content}.__entry>.__title-label>span,.__entry_search>.__title-label>span{color:#00e58d}.__entry.__category,.__category.__entry_search{cursor:pointer;background-color:#151515;padding-right:0}.__entry.__category>.__entry,.__category.__entry_search>.__entry,.__entry.__category>.__entry_search,.__category.__entry_search>.__entry_search{flex-grow:1;border-left:1px solid #393939}.__entry.__category>.__title>span,.__category.__entry_search>.__title>span{color:#00e58d}.__entry>.__url,.__entry_search>.__url{display:inline;text-decoration:none;color:inherit;width:auto}.__entry>.__url img,.__entry_search>.__url img{width:2em;height:2em;display:block}.__entry.__node-entry,.__node-entry.__entry_search{width:100%;flex-grow:1;justify-content:space-between}.__entry.__node-entry.__default-graph-node-entry>.__title-icon,.__node-entry.__default-graph-node-entry.__entry_search>.__title-icon{height:.75em;width:.75em}.__entry>.__node-entry,.__entry_search>.__node-entry{border-bottom:0}.__entry .__vertical_ellipsis,.__entry_search .__vertical_ellipsis{cursor:pointer !important}.__entry>.__icondiv,.__entry_search>.__icondiv{position:absolute;left:100%;max-width:18em;background-color:#181818;border-bottom:1px solid #737373;z-index:9999;transform:translate(0%, 50%) translate(0, -1.75em) translate(0, -4px)}.__entry_search{background-color:#151515;cursor:auto;padding-right:0;overflow:visible}.__entry_search>.node-search{height:100%;width:100%;color:#fff;border:none;background-color:#151515;padding-left:1em}.__entry_search>.node-search:focus{outline:1px solid #00e58d}.__entry_search>.node-search::-moz-placeholder{opacity:.5}.__entry_search>.node-search::placeholder{opacity:.5}.baklava-sidebar{position:absolute;min-width:-moz-min-content;min-width:min-content;max-width:50vw;z-index:3;padding:0;top:61px;border:1px solid #393939;border-right:0;height:calc(100% - 60px - 35px);transform:translateX(100%);transition:transform .4s;overflow-y:scroll}.baklava-sidebar.--preview{top:0px;height:100%}.baklava-sidebar.--hidehud:not(.--preview){height:calc(100% - 60px)}.baklava-sidebar.--open{transform:translateX(0);transition:transform .2s;box-shadow:0 15px 15px #000}.baklava-sidebar>.__resizer{width:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.baklava-sidebar>.__content{display:flex;flex-direction:column}.baklava-sidebar>.__content>div{border:1px solid #393939;border-right:0;border-left:0;border-top:0}.baklava-sidebar>.__content>div>.__title{text-align:left;font-weight:600;padding:1.25em .625em;border:1px solid #393939;border-right:0;border-left:0;border-top:0}.baklava-sidebar>.__content>.__header{height:4em;display:flex;gap:1em;padding:0 1em;width:auto}.baklava-sidebar>.__content>.__header .__close{min-width:.5em;cursor:pointer;outline:none}.baklava-sidebar>.__content>.__header>.__node-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.baklava-sidebar>.__content>.__header>.__node-name{margin:0;flex-grow:1;white-space:nowrap}.baklava-sidebar>.__content>.__header>.__url{display:inline;text-decoration:none;color:inherit;width:auto;position:relative}.baklava-sidebar>.__content>.__header>.__url img{width:2em;height:2em;display:block}.baklava-sidebar>.__content>.__category>.__category-name{white-space:nowrap;padding:.625em 1.25em}.baklava-sidebar>.__content>.__replace>.__replace_entry{display:flex;flex-wrap:wrap;align-items:center;gap:.5em;padding:.5em}.baklava-sidebar>.__content>.__replace>.__replace_entry>.__replace_title{padding:0 .75em}.baklava-sidebar>.__content>.__properties>.__property{padding:.625em 1.25em 0 1.25em}.baklava-sidebar>.__content>.__properties>.__property>.__property-name{font-size:.9em}.baklava-sidebar>.__content>.__properties>.__property *{box-sizing:border-box}.baklava-sidebar>.__content>.__properties>.__property:last-child{padding-bottom:1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group{padding:.3em 1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group:last-child{border:0}.baklava-sidebar>.__content>.__interface_groups>.__group-assign{padding:.625em 1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group-assign .--disabled{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.baklava-sidebar>.__content>.__error_outputs p{padding:0 1.25em}.__markdown{background-color:#1d1d1d80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;padding:20px;color:#fff;left:0%;z-index:10;top:0%;width:100%;height:100%;min-height:-moz-fit-content;min-height:fit-content;overflow-y:scroll}.__markdown-content>div{display:block;vertical-align:bottom;width:30%}.__markdown-content span{max-width:30vh}.__markdown-content>.node_description{display:block;vertical-align:bottom;margin-left:1em;margin-right:1em;width:auto;overflow-wrap:break-word}.__markdown-content code{background-color:#343434E0;color:#cca747;font-family:monospace;padding:0px 2px 2px 2px}.__markdown-content a{color:#00e58d;text-decoration:none;word-wrap:normal}.__markdown-content img{display:block;margin-left:auto;margin-right:auto;margin-top:10px;max-width:100%}.__markdown-content li{list-style-type:circle;margin-left:20px} diff --git a/_static/kpm/favicon.svg b/_static/kpm/favicon.svg new file mode 100644 index 00000000..700ab4bf --- /dev/null +++ b/_static/kpm/favicon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/_static/kpm/index.html b/_static/kpm/index.html new file mode 100644 index 00000000..66a27f1e --- /dev/null +++ b/_static/kpm/index.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/_static/kpm/js/114.1887e3ae.js b/_static/kpm/js/114.1887e3ae.js new file mode 100644 index 00000000..66c92478 --- /dev/null +++ b/_static/kpm/js/114.1887e3ae.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[114],{55873:(e,n,t)=>{t.d(n,{E:()=>i,w:()=>a});var o=t(81025);class i extends o.l{constructor(e){super(),this.entity=e}emit(e){this.listeners.forEach((n=>n(e,this.entity)))}}class a extends o.l{constructor(e){super(),this.entity=e}emit(e){let n=!1;const t=()=>[n=!0];for(const o of Array.from(this.listeners.values()))if(o(e,t,this.entity),n)return{prevented:!0};return{prevented:!1}}}},12020:(e,n,t)=>{t.d(n,{FQ:()=>l,p$:()=>a});var o=t(81025);class i extends o.l{execute(e,n){let t=e;for(const e of this.listeners)t=e(t,n);return t}}class a extends i{constructor(e){super(),this.entity=e}execute(e){return super.execute(e,this.entity)}}class l extends o.l{constructor(e){super(),this.entity=e}execute(e){const n=[];for(const t of this.listeners)n.push(t(e,this.entity));return n}}},37886:(e,n,t)=>{t.d(n,{D:()=>i});var o=t(81025);function i(){const e=Symbol(),n=new Map,t=new Set,i=(t,i)=>{i instanceof o.l&&i.registerProxy(e,(()=>{var e,o;return null!==(o=null===(e=n.get(t))||void 0===e?void 0:e.listeners)&&void 0!==o?o:[]}))},a=e=>{t.add(e);for(const t of n.keys())i(t,e[t])},l=i=>{for(const t of n.keys())i[t]instanceof o.l&&i[t].unregisterProxy(e);t.delete(i)},s=()=>{t.forEach((e=>l(e))),n.clear()};return new Proxy({},{get:(e,r)=>"addTarget"===r?a:"removeTarget"===r?l:"destroy"===r?s:"string"!=typeof r||r.startsWith("_")?e[r]:(n.has(r)||(e=>{const a=new o.l;n.set(e,a),t.forEach((n=>i(e,n[e])))})(r),n.get(r))})}},81025:(e,n,t)=>{t.d(n,{l:()=>o});class o{constructor(){this.listenerMap=new Map,this._listeners=[],this.proxyMap=new Map,this.proxies=[]}get listeners(){return this._listeners.concat(this.proxies.flatMap((e=>e())))}subscribe(e,n){this.listenerMap.has(e)&&(console.warn("Already subscribed. Unsubscribing for you.\nPlease check that you don't accidentally use the same token twice to register two different handlers for the same event/hook."),this.unsubscribe(e)),this.listenerMap.set(e,n),this._listeners.push(n)}unsubscribe(e){if(this.listenerMap.has(e)){const n=this.listenerMap.get(e);this.listenerMap.delete(e);const t=this._listeners.indexOf(n);t>=0&&this._listeners.splice(t,1)}}registerProxy(e,n){this.proxyMap.has(e)&&(console.warn("Already subscribed. Unsubscribing for you.\nPlease check that you don't accidentally use the same token twice to register two different proxies for the same event/hook."),this.unregisterProxy(e)),this.proxyMap.set(e,n),this.proxies.push(n)}unregisterProxy(e){if(!this.proxyMap.has(e))return;const n=this.proxyMap.get(e);this.proxyMap.delete(e);const t=this.proxies.indexOf(n);t>=0&&this.proxies.splice(t,1)}}},3823:(e,n,t)=>{t.d(n,{Ac:()=>wn,Dz:()=>f,Hm:()=>y,J$:()=>oo,PG:()=>to,RM:()=>Fn,Sd:()=>Je,Ud:()=>ln,_N:()=>Bn,cg:()=>En,jg:()=>$n,n4:()=>h,z8:()=>lo,zp:()=>ao});var o=t(2262),i=t(66252),a=t(3577),l=t(49963),s=t(44773),r=t(88272),u=t(45521),d=t(88518),c=t(44653),p=t(70828),v=t(12020);let m=null;function f(){if(!m)throw new Error("providePlugin() must be called before usePlugin()");return{viewModel:m}}function h(){const{viewModel:e}=f();return{graph:(0,o.Vh)(e.value,"displayedGraph"),switchGraph:e.value.switchGraph}}function g(e){const{graph:n}=h(),t=(0,o.iH)(null),a=(0,o.iH)(null);return{dragging:(0,i.Fl)((()=>!!t.value)),onPointerDown:n=>{t.value={x:n.pageX,y:n.pageY},a.value={x:e.value.x,y:e.value.y}},onPointerMove:o=>{if(t.value){const i=o.pageX-t.value.x,l=o.pageY-t.value.y;e.value.x=a.value.x+i/n.value.scaling,e.value.y=a.value.y+l/n.value.scaling}},onPointerUp:()=>{t.value=null,a.value=null}}}function y(){const{graph:e}=h();return{transform:(n,t)=>[n/e.value.scaling-e.value.panning.x,t/e.value.scaling-e.value.panning.y]}}var w=(e=>(e[e.NONE=0]="NONE",e[e.ALLOWED=1]="ALLOWED",e[e.FORBIDDEN=2]="FORBIDDEN",e))(w||{});const b=(e,n)=>{const t=e.__vccOpts||e;for(const[e,o]of n)t[e]=o;return t},x=b((0,i.aZ)({setup(){const{viewModel:e}=f(),{graph:n}=h();return{styles:(0,i.Fl)((()=>{const t=e.value.settings.background,o=n.value.panning.x*n.value.scaling,i=n.value.panning.y*n.value.scaling,a=n.value.scaling*t.gridSize,l=a/t.gridDivision;return{backgroundPosition:`left ${o}px top ${i}px`,backgroundSize:`${a}px ${a}px, ${a}px ${a}px ${n.value.scaling>t.subGridVisibleThreshold?`, ${l}px ${l}px, ${l}px ${l}px`:""}`}}))}}}),[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{class:"background",style:(0,a.j5)(e.styles)},null,4)}]]);var k;const _="undefined"!=typeof window,C=e=>"string"==typeof e,M=()=>{};_&&(null==(k=null==window?void 0:window.navigator)?void 0:k.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var E=Object.defineProperty,N=Object.defineProperties,I=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,S=Object.prototype.propertyIsEnumerable,H=(e,n,t)=>n in e?E(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,P=(e,n)=>{for(var t in n||(n={}))O.call(n,t)&&H(e,t,n[t]);if(D)for(var t of D(n))S.call(n,t)&&H(e,t,n[t]);return e},j=(e,n)=>N(e,I(n));function T(e){var n;const t="function"==typeof(i=e)?i():(0,o.SU)(i);var i;return null!=(n=null==t?void 0:t.$el)?n:t}const F=_?window:void 0;function V(...e){let n,t,a,l;if(C(e[0])||Array.isArray(e[0])?([t,a,l]=e,n=F):[n,t,a,l]=e,!n)return M;Array.isArray(t)||(t=[t]),Array.isArray(a)||(a=[a]);const s=[],r=()=>{s.forEach((e=>e())),s.length=0},u=(0,i.YP)((()=>T(n)),(e=>{r(),e&&s.push(...t.flatMap((n=>a.map((t=>((e,n,t)=>(e.addEventListener(n,t,l),()=>e.removeEventListener(n,t,l)))(e,n,t))))))}),{immediate:!0,flush:"post"}),d=()=>{u(),r()};var c;return c=d,(0,o.nZ)()&&(0,o.EB)(c),d}function W(e,n,t={}){const{window:o=F,ignore:i=[],capture:a=!0,detectIframe:l=!1}=t;if(!o)return;let s,r=!0;const u=e=>i.some((n=>{if("string"==typeof n)return Array.from(o.document.querySelectorAll(n)).some((n=>n===e.target||e.composedPath().includes(n)));{const t=T(n);return t&&(e.target===t||e.composedPath().includes(t))}})),d=t=>{o.clearTimeout(s);const i=T(e);i&&i!==t.target&&!t.composedPath().includes(i)&&(0===t.detail&&(r=!u(t)),r?n(t):r=!0)},c=[V(o,"click",d,{passive:!0,capture:a}),V(o,"pointerdown",(n=>{const t=T(e);t&&(r=!n.composedPath().includes(t)&&!u(n))}),{passive:!0}),V(o,"pointerup",(e=>{if(0===e.button){const n=e.composedPath();e.composedPath=()=>n,s=o.setTimeout((()=>d(e)),50)}}),{passive:!0}),l&&V(o,"blur",(t=>{var i;const a=T(e);"IFRAME"!==(null==(i=o.document.activeElement)?void 0:i.tagName)||(null==a?void 0:a.contains(o.document.activeElement))||n(t)}))].filter(Boolean);return()=>c.forEach((e=>e()))}_&&window.document,_&&window.navigator,_&&window.location;const U="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},A="__vueuse_ssr_handlers__";U[A]=U[A]||{},U[A];var L=Object.defineProperty,$=Object.defineProperties,q=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable,G=(e,n,t)=>n in e?L(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Y={x:0,y:0,pointerId:0,pressure:0,tiltX:0,tiltY:0,width:0,height:0,twist:0,pointerType:null},K=Object.keys(Y);var Z,X;(X=Z||(Z={})).UP="UP",X.RIGHT="RIGHT",X.DOWN="DOWN",X.LEFT="LEFT",X.NONE="NONE";var Q=Object.defineProperty,J=Object.getOwnPropertySymbols,ee=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable,te=(e,n,t)=>n in e?Q(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;((e,n)=>{for(var t in n||(n={}))ee.call(n,t)&&te(e,t,n[t]);if(J)for(var t of J(n))ne.call(n,t)&&te(e,t,n[t])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});const oe=(0,i.aZ)({props:{modelValue:{type:Boolean,default:!1},items:{type:Array,required:!0},x:{type:Number,default:0},y:{type:Number,default:0},isNested:{type:Boolean,default:!1},isFlipped:{type:Object,default:()=>({x:!1,y:!1})},flippable:{type:Boolean,default:!1}},emits:["click","update:modelValue"],setup(e,{emit:n}){let t=null;const a=(0,o.iH)(null),l=(0,o.iH)(-1),s=(0,o.iH)(0),r=(0,o.iH)({x:!1,y:!1}),u=(0,i.Fl)((()=>e.flippable&&(r.value.x||e.isFlipped.x))),d=(0,i.Fl)((()=>e.flippable&&(r.value.y||e.isFlipped.y))),c=(0,i.Fl)((()=>{const n={};return e.isNested||(n.top=(d.value?e.y-s.value:e.y)+"px",n.left=e.x+"px"),n})),p=(0,i.Fl)((()=>({"--flipped-x":u.value,"--flipped-y":d.value,"--nested":e.isNested}))),v=(0,i.Fl)((()=>e.items.map((e=>({...e,hover:!1})))));return(0,i.YP)([()=>e.y,()=>e.items],(()=>{var n,t,o,i;s.value=30*e.items.length;const l=(null==(t=null==(n=a.value)?void 0:n.parentElement)?void 0:t.offsetWidth)??0,u=(null==(i=null==(o=a.value)?void 0:o.parentElement)?void 0:i.offsetHeight)??0;r.value.x=!e.isNested&&e.x>.75*l,r.value.y=!e.isNested&&e.y+s.value>u-20})),W(a,(()=>{e.modelValue&&n("update:modelValue",!1)})),{el:a,activeMenu:l,flippedX:u,flippedY:d,styles:c,classes:p,itemsWithHoverProperty:v,onClick:e=>{!e.submenu&&e.value&&(n("click",e.value),n("update:modelValue",!1))},onChildClick:t=>{n("click",t),l.value=-1,e.isNested||n("update:modelValue",!1)},onClickOutside:W,onMouseEnter:(n,o)=>{e.items[o].submenu&&(l.value=o,null!==t&&(clearTimeout(t),t=null))},onMouseLeave:(n,o)=>{e.items[o].submenu&&(t=window.setTimeout((()=>{l.value=-1,t=null}),200))}}}}),ie=["onMouseenter","onMouseleave","onClick"],ae={class:"flex-fill"},le={key:0,class:"__submenu-icon",style:{"line-height":"1em"}},se=[(0,i._)("svg",{width:"13",height:"13",viewBox:"-60 120 250 250"},[(0,i._)("path",{d:"M160.875 279.5625 L70.875 369.5625 L70.875 189.5625 L160.875 279.5625 Z",stroke:"none",fill:"white"})],-1)],re=b(oe,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("context-menu",!0);return(0,i.wg)(),(0,i.j4)(l.uT,{name:"slide-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{ref:"el",class:(0,a.C_)(["baklava-context-menu",e.classes]),style:(0,a.j5)(e.styles)},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.itemsWithHoverProperty,((n,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[n.isDivider?((0,i.wg)(),(0,i.iD)("div",{key:`d-${t}`,class:"divider"})):((0,i.wg)(),(0,i.iD)("div",{key:`i-${t}`,class:(0,a.C_)(["item",{submenu:!!n.submenu,"--disabled":!!n.disabled}]),onMouseenter:n=>e.onMouseEnter(n,t),onMouseleave:n=>e.onMouseLeave(n,t),onClick:(0,l.iM)((t=>e.onClick(n)),["stop","prevent"])},[(0,i._)("div",ae,(0,a.zw)(n.label),1),n.submenu?((0,i.wg)(),(0,i.iD)("div",le,se)):(0,i.kq)("",!0),n.submenu?((0,i.wg)(),(0,i.j4)(u,{key:1,value:e.activeMenu===t,items:n.submenu,"is-nested":!0,"is-flipped":{x:e.flippedX,y:e.flippedY},flippable:e.flippable,onClick:e.onChildClick},null,8,["value","items","is-flipped","flippable","onClick"])):(0,i.kq)("",!0)],42,ie))],64)))),256))],6),[[l.F8,e.modelValue]])])),_:1})}]]),ue={},de={xmlns:"http://www.w3.org/2000/svg",class:"baklava-icon",width:"16",height:"16",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},ce=[(0,i._)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),(0,i._)("circle",{cx:"12",cy:"12",r:"1"},null,-1),(0,i._)("circle",{cx:"12",cy:"19",r:"1"},null,-1),(0,i._)("circle",{cx:"12",cy:"5",r:"1"},null,-1)],pe=b(ue,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",de,ce)}]]),ve=(0,i.aZ)({props:{node:{type:Object,required:!0},intf:{type:Object,required:!0}},setup(e){const{viewModel:n}=f(),t=(0,i.f3)("hoveredOver"),a=(0,o.iH)(null),l=(0,i.Fl)((()=>e.intf.connectionCount>0)),s=(0,i.Fl)((()=>({"--input":e.intf.isInput,"--output":!e.intf.isInput,"--connected":l.value}))),r=(0,i.Fl)((()=>e.intf.component&&0===e.intf.connectionCount&&(e.intf.isInput||!e.intf.port))),u=()=>{a.value&&n.value.hooks.renderInterface.execute({intf:e.intf,el:a.value})};return(0,i.bv)(u),(0,i.ic)(u),{el:a,isConnected:l,classes:s,showComponent:r,startHover:()=>{t(e.intf)},endHover:()=>{t(void 0)},openSidebar:()=>{const t=n.value.displayedGraph.sidebar;t.nodeId=e.node.id,t.optionName=e.intf.name,t.visible=!0}}}}),me=["id"],fe={key:2,class:"align-middle"},he=b(ve,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{id:e.intf.id,ref:"el",class:(0,a.C_)(["baklava-node-interface",e.classes])},[e.intf.port?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__port",onPointerover:n[0]||(n[0]=(...n)=>e.startHover&&e.startHover(...n)),onPointerout:n[1]||(n[1]=(...n)=>e.endHover&&e.endHover(...n))},null,32)):(0,i.kq)("",!0),e.showComponent?((0,i.wg)(),(0,i.j4)((0,i.LL)(e.intf.component),{key:1,modelValue:e.intf.value,"onUpdate:modelValue":n[2]||(n[2]=n=>e.intf.value=n),node:e.node,intf:e.intf,onOpenSidebar:e.openSidebar},null,40,["modelValue","node","intf","onOpenSidebar"])):((0,i.wg)(),(0,i.iD)("span",fe,(0,a.zw)(e.intf.name),1))],10,me)}]]),ge=["id","data-node-type"],ye=["onPointerdown"],we={class:"__title-label"},be={class:"__menu"},xe=["onKeydown"],ke={class:"__content"},_e={class:"__outputs"},Ce={class:"__inputs"},Me=(0,i.aZ)({__name:"Node",props:{node:null,selected:{type:Boolean,default:!1}},emits:["select"],setup(e,{emit:n}){const t=e,{viewModel:r}=f(),{graph:u,switchGraph:d}=h(),c=g((0,o.Vh)(t.node,"position")),p=(0,o.iH)(null),v=(0,o.iH)(!1),m=(0,o.iH)(""),y=(0,o.iH)(null),w=(0,o.iH)(!1),b=(0,i.Fl)((()=>{const e=[{value:"rename",label:"Rename"},{value:"delete",label:"Delete"}];return t.node.type.startsWith(s.qM)&&e.push({value:"editSubgraph",label:"Edit Subgraph"}),e})),x=(0,i.Fl)((()=>({"--selected":t.selected,"--dragging":c.dragging.value,"--two-column":!!t.node.twoColumn}))),k=(0,i.Fl)((()=>{var e,n;return{top:`${(null==(e=t.node.position)?void 0:e.y)??0}px`,left:`${(null==(n=t.node.position)?void 0:n.x)??0}px`,width:`${t.node.width??200}px`}})),_=(0,i.Fl)((()=>Object.values(t.node.inputs).filter((e=>!e.hidden)))),C=(0,i.Fl)((()=>Object.values(t.node.outputs).filter((e=>!e.hidden)))),M=()=>{n("select")},E=e=>{c.onPointerDown(e),document.addEventListener("pointermove",c.onPointerMove),document.addEventListener("pointerup",N),M()},N=()=>{c.onPointerUp(),document.removeEventListener("pointermove",c.onPointerMove),document.removeEventListener("pointerup",N)},I=()=>{w.value=!0},D=async e=>{var n;switch(e){case"delete":u.value.removeNode(t.node);break;case"rename":m.value=t.node.title,v.value=!0,await(0,i.Y3)(),null==(n=y.value)||n.focus();break;case"editSubgraph":d(t.node.template)}},O=()=>{t.node.title=m.value,v.value=!1},S=()=>{p.value&&r.value.hooks.renderNode.execute({node:t.node,el:p.value})};return(0,i.bv)(S),(0,i.ic)(S),(n,t)=>((0,i.wg)(),(0,i.iD)("div",{id:e.node.id,ref_key:"el",ref:p,class:(0,a.C_)(["baklava-node",(0,o.SU)(x)]),style:(0,a.j5)((0,o.SU)(k)),"data-node-type":e.node.type,onPointerdown:M},[(0,i._)("div",{class:"__title",onPointerdown:(0,l.iM)(E,["self","stop"])},[v.value?(0,i.wy)(((0,i.wg)(),(0,i.iD)("input",{key:1,ref_key:"renameInputEl",ref:y,"onUpdate:modelValue":t[1]||(t[1]=e=>m.value=e),type:"text",class:"baklava-input",placeholder:"Node Name",onBlur:O,onKeydown:(0,l.D2)(O,["enter"])},null,40,xe)),[[l.nr,m.value]]):((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",we,(0,a.zw)(e.node.title),1),(0,i._)("div",be,[(0,i.Wm)(pe,{class:"--clickable",onClick:I}),(0,i.Wm)(re,{modelValue:w.value,"onUpdate:modelValue":t[0]||(t[0]=e=>w.value=e),x:0,y:0,items:(0,o.SU)(b),onClick:D},null,8,["modelValue","items"])])],64))],40,ye),(0,i._)("div",ke,[(0,i._)("div",_e,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,o.SU)(C),(n=>((0,i.wg)(),(0,i.j4)(he,{key:n.id,node:e.node,intf:n},null,8,["node","intf"])))),128))]),(0,i._)("div",Ce,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,o.SU)(_),(n=>((0,i.wg)(),(0,i.j4)(he,{key:n.id,node:e.node,intf:n},null,8,["node","intf"])))),128))])])],46,ge))}}),Ee=(0,i.aZ)({props:{x1:{type:Number,required:!0},y1:{type:Number,required:!0},x2:{type:Number,required:!0},y2:{type:Number,required:!0},state:{type:Number,default:w.NONE},isTemporary:{type:Boolean,default:!1}},setup(e){const{viewModel:n}=f(),{graph:t}=h(),o=(e,n)=>[(e+t.value.panning.x)*t.value.scaling,(n+t.value.panning.y)*t.value.scaling];return{d:(0,i.Fl)((()=>{const[t,i]=o(e.x1,e.y1),[a,l]=o(e.x2,e.y2);if(n.value.settings.useStraightConnections)return`M ${t} ${i} L ${a} ${l}`;{const e=.3*Math.abs(t-a);return`M ${t} ${i} C ${t+e} ${i}, ${a-e} ${l}, ${a} ${l}`}})),classes:(0,i.Fl)((()=>({"--temporary":e.isTemporary,"--allowed":e.state===w.ALLOWED,"--forbidden":e.state===w.FORBIDDEN})))}}}),Ne=["d"],Ie=b(Ee,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("path",{class:(0,a.C_)(["baklava-connection",e.classes]),d:e.d},null,10,Ne)}]]);function De(e){const n=document.getElementById(e.id),t=null==n?void 0:n.getElementsByClassName("__port");return{node:(null==n?void 0:n.closest(".baklava-node"))??null,interface:n,port:t&&t.length>0?t[0]:null}}const Oe=b((0,i.aZ)({components:{"connection-view":Ie},props:{connection:{type:Object,required:!0}},setup(e){const{graph:n}=h();let t;const a=(0,o.iH)({x1:0,y1:0,x2:0,y2:0}),l=(0,i.Fl)((()=>e.connection.isInDanger?w.FORBIDDEN:w.NONE)),s=(0,i.Fl)((()=>{var t;return null==(t=n.value.findNodeById(e.connection.from.nodeId))?void 0:t.position})),r=(0,i.Fl)((()=>{var t;return null==(t=n.value.findNodeById(e.connection.to.nodeId))?void 0:t.position})),u=e=>e.node&&e.interface&&e.port?[e.node.offsetLeft+e.interface.offsetLeft+e.port.offsetLeft+e.port.clientWidth/2,e.node.offsetTop+e.interface.offsetTop+e.port.offsetTop+e.port.clientHeight/2]:[0,0],d=()=>{const n=De(e.connection.from),o=De(e.connection.to);n.node&&o.node&&(t||(t=new ResizeObserver((()=>{d()})),t.observe(n.node),t.observe(o.node)));const[i,l]=u(n),[s,r]=u(o);a.value={x1:i,y1:l,x2:s,y2:r}};return(0,i.bv)((async()=>{await(0,i.Y3)(),d()})),(0,i.Jd)((()=>{t&&t.disconnect()})),(0,i.YP)([s,r],(()=>d()),{deep:!0}),{d:a,state:l}}}),[["render",function(e,n,t,o,a,l){const s=(0,i.up)("connection-view");return(0,i.wg)(),(0,i.j4)(s,{x1:e.d.x1,y1:e.d.y1,x2:e.d.x2,y2:e.d.y2,state:e.state},null,8,["x1","y1","x2","y2","state"])}]]);function Se(e){return e.node&&e.interface&&e.port?[e.node.offsetLeft+e.interface.offsetLeft+e.port.offsetLeft+e.port.clientWidth/2,e.node.offsetTop+e.interface.offsetTop+e.port.offsetTop+e.port.clientHeight/2]:[0,0]}const He=b((0,i.aZ)({components:{"connection-view":Ie},props:{connection:{type:Object,required:!0}},setup(e){const n=(0,i.Fl)((()=>e.connection?e.connection.status:w.NONE));return{d:(0,i.Fl)((()=>{if(!e.connection)return{input:[0,0],output:[0,0]};const n=Se(De(e.connection.from)),t=e.connection.to?Se(De(e.connection.to)):[e.connection.mx||n[0],e.connection.my||n[1]];return e.connection.from.isInput?{input:t,output:n}:{input:n,output:t}})),status:n}}}),[["render",function(e,n,t,o,a,l){const s=(0,i.up)("connection-view");return(0,i.wg)(),(0,i.j4)(s,{x1:e.d.input[0],y1:e.d.input[1],x2:e.d.output[0],y2:e.d.output[1],state:e.status,"is-temporary":""},null,8,["x1","y1","x2","y2","state"])}]]),Pe=(0,i.aZ)({setup(){const{graph:e}=h(),n=(0,o.iH)(null),t=(0,o.iH)(300),a=(0,i.Fl)((()=>{const n=e.value.sidebar.nodeId;return e.value.nodes.find((e=>e.id===n))})),l=(0,i.Fl)((()=>({width:`${t.value}px`}))),s=(0,i.Fl)((()=>a.value?[...Object.values(a.value.inputs),...Object.values(a.value.outputs)].filter((e=>e.displayInSidebar&&e.component)):[])),r=e=>{var o,i;const a=(null==(i=null==(o=n.value)?void 0:o.parentElement)?void 0:i.getBoundingClientRect().width)??500;t.value-=e.movementX,t.value<300?t.value=300:t.value>.9*a&&(t.value=.9*a)};return{el:n,graph:e,node:a,styles:l,displayedInterfaces:s,startResize:()=>{window.addEventListener("mousemove",r),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",r)}),{once:!0})},close:()=>{e.value.sidebar.visible=!1}}}}),je={class:"__header"},Te={class:"__node-name"},Fe=b(Pe,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-sidebar",{"--open":e.graph.sidebar.visible}]),style:(0,a.j5)(e.styles)},[(0,i._)("div",{class:"__resizer",onMousedown:n[0]||(n[0]=(...n)=>e.startResize&&e.startResize(...n))},null,32),(0,i._)("div",je,[(0,i._)("button",{tabindex:"-1",class:"__close",onClick:n[1]||(n[1]=(...n)=>e.close&&e.close(...n))}," × "),(0,i._)("div",Te,[(0,i._)("b",null,(0,a.zw)(e.node?e.node.title:""),1)])]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.displayedInterfaces,(n=>((0,i.wg)(),(0,i.iD)("div",{key:n.id,class:"__interface"},[((0,i.wg)(),(0,i.j4)((0,i.LL)(n.component),{modelValue:n.value,"onUpdate:modelValue":e=>n.value=e,node:e.node,intf:n},null,8,["modelValue","onUpdate:modelValue","node","intf"]))])))),128))],6)}]]),Ve=b((0,i.aZ)({setup(){const{viewModel:e}=f(),{graph:n}=h(),t=(0,o.iH)(null),a=(0,o.iH)(!1);let l,s=!1,r={x1:0,y1:0,x2:0,y2:0};const u=(e,n)=>[(e-r.x1)/(r.x2-r.x1)*l.canvas.clientWidth,(n-r.y1)/(r.y2-r.y1)*l.canvas.clientHeight],d=e=>{if(e){const n=e.querySelector(".__content");if(n){const e=c(n);if(e)return e}const t=c(e);if(t)return t}return"gray"},c=e=>{const n=getComputedStyle(e).backgroundColor;if(n&&"rgba(0, 0, 0, 0)"!==n)return n},p=()=>{const e=t.value.parentElement.offsetWidth,o=t.value.parentElement.offsetHeight,i=e/n.value.scaling-n.value.panning.x,a=o/n.value.scaling-n.value.panning.y;return{x1:-n.value.panning.x,y1:-n.value.panning.y,x2:i,y2:a}},v=e=>{if(s){const[i,a]=(t=e.offsetX,o=e.offsetY,[t*(r.x2-r.x1)/l.canvas.clientWidth+r.x1,o*(r.y2-r.y1)/l.canvas.clientHeight+r.y1]),s=p(),u=(s.x1-s.x2)/2,d=(s.y1-s.y2)/2;n.value.panning.x=-(i+u),n.value.panning.y=-(a+d)}var t,o},m=()=>{s=!1};return(0,i.bv)((()=>{l=t.value.getContext("2d"),l.imageSmoothingQuality="high",(()=>{var t,o;if(!l)return;const i=new Map,s=new Map;for(const e of n.value.nodes){const n=(c=e,document.getElementById(c.id)),a=(null==n?void 0:n.clientWidth)??0,l=(null==n?void 0:n.clientHeight)??0,r=(null==(t=e.position)?void 0:t.x)??0,u=(null==(o=e.position)?void 0:o.y)??0;i.set(e,{x1:r,y1:u,x2:r+a,y2:u+l}),s.set(e,n)}var c;const v={x1:Number.MAX_SAFE_INTEGER,y1:Number.MAX_SAFE_INTEGER,x2:Number.MIN_SAFE_INTEGER,y2:Number.MIN_SAFE_INTEGER};for(const e of i.values())e.x1v.x2&&(v.x2=e.x2),e.y2>v.y2&&(v.y2=e.y2);v.x1-=50,v.y1-=50,v.x2+=50,v.y2+=50,r=v,l.clearRect(0,0,l.canvas.width,l.canvas.height),l.strokeStyle="white";for(const t of n.value.connections){const[n,o]=Se(De(t.from)),[i,a]=Se(De(t.to)),[s,r]=u(n,o),[d,c]=u(i,a);if(l.beginPath(),l.moveTo(s,r),e.value.settings.useStraightConnections)l.lineTo(d,c);else{const e=.3*Math.abs(s-d);l.bezierCurveTo(s+e,r,d-e,c,d,c)}l.stroke()}l.strokeStyle="lightgray";for(const[e,n]of i.entries()){const[t,o]=u(n.x1,n.y1),[i,a]=u(n.x2,n.y2);l.fillStyle=d(s.get(e)),l.beginPath(),l.rect(t,o,i-t,a-o),l.fill(),l.stroke()}if(a.value){const e=p(),[n,t]=u(e.x1,e.y1),[o,i]=u(e.x2,e.y2);l.fillStyle="rgba(255, 255, 255, 0.2)",l.fillRect(n,t,o-n,i-t)}})()})),{canvas:t,showViewBounds:a,mousedown:e=>{0===e.button&&(s=!0,v(e))},mousemove:v,mouseup:m,mouseenter:()=>{a.value=!0},mouseleave:()=>{a.value=!1,m()}}}}),[["render",function(e,n,t,o,a,s){return(0,i.wg)(),(0,i.iD)("canvas",{ref:"canvas",class:"baklava-minimap",onMouseenter:n[0]||(n[0]=(...n)=>e.mouseenter&&e.mouseenter(...n)),onMouseleave:n[1]||(n[1]=(...n)=>e.mouseleave&&e.mouseleave(...n)),onMousedown:n[2]||(n[2]=(0,l.iM)(((...n)=>e.mousedown&&e.mousedown(...n)),["self"])),onMousemove:n[3]||(n[3]=(0,l.iM)(((...n)=>e.mousemove&&e.mousemove(...n)),["self"])),onMouseup:n[4]||(n[4]=(...n)=>e.mouseup&&e.mouseup(...n))},null,544)}]]),We=(0,i.aZ)({components:{ContextMenu:re,VerticalDots:pe},props:{type:{type:String,required:!0},title:{type:String,required:!0}},setup(e){const{viewModel:n}=f(),{switchGraph:t}=h(),a=(0,o.iH)(!1),l=(0,i.Fl)((()=>e.type.startsWith(s.qM)));return{showContextMenu:a,hasContextMenu:l,contextMenuItems:[{label:"Edit Subgraph",value:"editSubgraph"},{label:"Delete Subgraph",value:"deleteSubgraph"}],openContextMenu:()=>{a.value=!0},onContextMenuClick:o=>{const i=e.type.substring(s.qM.length),a=n.value.editor.graphTemplates.find((e=>e.id===i));if(a)switch(o){case"editSubgraph":t(a);break;case"deleteSubgraph":n.value.editor.removeGraphTemplate(a)}}}}}),Ue=["data-node-type"],Ae={class:"__title"},Le={class:"__title-label"},$e={key:0,class:"__menu"},qe=b(We,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("vertical-dots"),d=(0,i.up)("context-menu");return(0,i.wg)(),(0,i.iD)("div",{class:"baklava-node --palette","data-node-type":e.type},[(0,i._)("div",Ae,[(0,i._)("div",Le,(0,a.zw)(e.title),1),e.hasContextMenu?((0,i.wg)(),(0,i.iD)("div",$e,[(0,i.Wm)(u,{class:"--clickable",onPointerdown:n[0]||(n[0]=(0,l.iM)((()=>{}),["stop","prevent"])),onClick:(0,l.iM)(e.openContextMenu,["stop","prevent"])},null,8,["onClick"]),(0,i.Wm)(d,{modelValue:e.showContextMenu,"onUpdate:modelValue":n[1]||(n[1]=n=>e.showContextMenu=n),x:-100,y:0,items:e.contextMenuItems,onClick:e.onContextMenuClick,onPointerdown:n[2]||(n[2]=(0,l.iM)((()=>{}),["stop","prevent"]))},null,8,["modelValue","items","onClick"])])):(0,i.kq)("",!0)])],8,Ue)}]]);let Be;const ze=new Uint8Array(16);function Re(){if(!Be&&(Be="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Be))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Be(ze)}const Ge=[];for(let e=0;e<256;++e)Ge.push((e+256).toString(16).slice(1));const Ye={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ke(e,n,t){if(Ye.randomUUID&&!n&&!e)return Ye.randomUUID();const o=(e=e||{}).random||(e.rng||Re)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,n){t=t||0;for(let e=0;e<16;++e)n[t+e]=o[e];return n}return function(e,n=0){return(Ge[e[n+0]]+Ge[e[n+1]]+Ge[e[n+2]]+Ge[e[n+3]]+"-"+Ge[e[n+4]]+Ge[e[n+5]]+"-"+Ge[e[n+6]]+Ge[e[n+7]]+"-"+Ge[e[n+8]]+Ge[e[n+9]]+"-"+Ge[e[n+10]]+Ge[e[n+11]]+Ge[e[n+12]]+Ge[e[n+13]]+Ge[e[n+14]]+Ge[e[n+15]]).toLowerCase()}(o)}const Ze=(0,i.aZ)({props:{intf:{type:Object,required:!0}},setup:e=>({onClick:()=>{e.intf.callback&&e.intf.callback()}})}),Xe=["title"],Qe=b(Ze,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("button",{class:"baklava-button --block",title:e.intf.name,onClick:n[0]||(n[0]=(...n)=>e.onClick&&e.onClick(...n))},(0,a.zw)(e.intf.name),9,Xe)}]]);class Je extends r.I{constructor(e,n){super(e,void 0),this.component=(0,o.Xl)(Qe),this.callback=n,this.setPort(!1)}}const en=(0,i.aZ)({props:{intf:{type:Object,required:!0}}}),nn=["title"],tn=(0,i._)("div",{class:"__checkmark-container"},[(0,i._)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 18 18"},[(0,i._)("path",{class:"__checkmark",d:"M 6 5 L 6 10 L 16 10",transform:"rotate(-45 10 10)"})])],-1),on={class:"__label"},an=b(en,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{class:(0,a.C_)(["baklava-checkbox",{"--checked":e.intf.value}]),title:e.intf.name,onClick:n[0]||(n[0]=n=>e.intf.value=!e.intf.value)},[tn,(0,i._)("div",on,(0,a.zw)(e.intf.name),1)],10,nn)}]]);class ln extends r.I{constructor(){super(...arguments),this.component=(0,o.Xl)(an)}}class sn extends r.I{constructor(e,n,t,o){super(e,n),this.min=t,this.max=o}validate(e){return(!this.min||e>=this.min)&&(!this.max||e<=this.max)}}const rn=(e,n=3)=>{const t=(0,o.iH)(null),a=(0,o.iH)(!1),l=(0,o.iH)(!1),s=(0,o.iH)("0"),r=(0,i.Fl)((()=>{const t=e.value.value.toFixed(n);return t.length>9?e.value.value.toExponential(4):t})),u=n=>!Number.isNaN(n)&&(!function(e){return"validate"in e}(e.value)||e.value.validate(n)),d=n=>{u(n)&&(e.value.value=n)};return(0,i.YP)(s,(()=>{l.value=!1})),{editMode:a,invalid:l,tempValue:s,inputEl:t,stringRepresentation:r,validate:u,setValue:d,enterEditMode:async()=>{s.value=e.value.value.toFixed(n),a.value=!0,await(0,i.Y3)(),t.value&&t.value.focus()},leaveEditMode:()=>{const e=parseFloat(s.value);u(e)?(d(e),a.value=!1):l.value=!0}}},un={},dn={xmlns:"http://www.w3.org/2000/svg",class:"baklava-icon",width:"24",height:"24",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},cn=[(0,i._)("polyline",{points:"6 9 12 15 18 9"},null,-1)],pn=b(un,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",dn,cn)}]]),vn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=rn((0,o.Vh)(e,"intf"),0);return{...n,increment:()=>{n.setValue(e.intf.value+1)},decrement:()=>{n.setValue(e.intf.value-1)}}}}),mn={class:"baklava-num-input"},fn=["title"],hn={class:"__value"},gn={key:1,class:"__content"},yn=b(vn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",mn,[(0,i._)("div",{class:"__button --dec",onClick:n[0]||(n[0]=(...n)=>e.decrement&&e.decrement(...n))},[(0,i.Wm)(u)]),e.editMode?((0,i.wg)(),(0,i.iD)("div",gn,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[2]||(n[2]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[3]||(n[3]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[4]||(n[4]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__content",onClick:n[1]||(n[1]=(...n)=>e.enterEditMode&&e.enterEditMode(...n))},[(0,i._)("div",{class:"__label",title:e.intf.name},(0,a.zw)(e.intf.name),9,fn),(0,i._)("div",hn,(0,a.zw)(e.stringRepresentation),1)])),(0,i._)("div",{class:"__button --inc",onClick:n[5]||(n[5]=(...n)=>e.increment&&e.increment(...n))},[(0,i.Wm)(u)])])}]]);class wn extends sn{constructor(){super(...arguments),this.component=(0,o.Xl)(yn)}validate(e){return Number.isInteger(e)&&super.validate(e)}}const bn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=rn((0,o.Vh)(e,"intf"));return{...n,increment:()=>{n.setValue(e.intf.value+.1)},decrement:()=>{n.setValue(e.intf.value-.1)}}}}),xn={class:"baklava-num-input"},kn=["title"],_n={class:"__value"},Cn={key:1,class:"__content"},Mn=b(bn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",xn,[(0,i._)("div",{class:"__button --dec",onClick:n[0]||(n[0]=(...n)=>e.decrement&&e.decrement(...n))},[(0,i.Wm)(u)]),e.editMode?((0,i.wg)(),(0,i.iD)("div",Cn,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[2]||(n[2]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[3]||(n[3]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[4]||(n[4]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__content",onClick:n[1]||(n[1]=(...n)=>e.enterEditMode&&e.enterEditMode(...n))},[(0,i._)("div",{class:"__label",title:e.intf.name},(0,a.zw)(e.intf.name),9,kn),(0,i._)("div",_n,(0,a.zw)(e.stringRepresentation),1)])),(0,i._)("div",{class:"__button --inc",onClick:n[5]||(n[5]=(...n)=>e.increment&&e.increment(...n))},[(0,i.Wm)(u)])])}]]);class En extends sn{constructor(){super(...arguments),this.component=(0,o.Xl)(Mn)}}const Nn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=(0,o.iH)(null),t=(0,o.iH)(!1),a=(0,i.Fl)((()=>e.intf.items.find((n=>"string"==typeof n?n===e.intf.value:n.value===e.intf.value)))),l=(0,i.Fl)((()=>a.value?"string"==typeof a.value?a.value:a.value.text:""));return W(n,(()=>{t.value=!1})),{el:n,open:t,selectedItem:a,selectedText:l,setSelected:n=>{e.intf.value="string"==typeof n?n:n.value}}}}),In=["title"],Dn={class:"__selected"},On={class:"__text"},Sn={class:"__icon"},Hn={class:"__dropdown"},Pn={class:"item --header"},jn=["onClick"],Tn=b(Nn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-select",{"--open":e.open}]),title:e.intf.name,onClick:n[0]||(n[0]=n=>e.open=!e.open)},[(0,i._)("div",Dn,[(0,i._)("div",On,(0,a.zw)(e.selectedText),1),(0,i._)("div",Sn,[(0,i.Wm)(u)])]),(0,i.Wm)(l.uT,{name:"slide-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",Hn,[(0,i._)("div",Pn,(0,a.zw)(e.intf.name),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.intf.items,((n,t)=>((0,i.wg)(),(0,i.iD)("div",{key:t,class:(0,a.C_)(["item",{"--active":n===e.selectedItem}]),onClick:t=>e.setSelected(n)},(0,a.zw)("string"==typeof n?n:n.text),11,jn)))),128))],512),[[l.F8,e.open]])])),_:1})],10,In)}]]);class Fn extends r.I{constructor(e,n,t){super(e,n),this.component=(0,o.Xl)(Tn),this.items=t}}const Vn=(0,i.aZ)({props:{intf:{type:Object,required:!0}},setup(e){const n=(0,o.iH)(null),t=rn((0,o.Vh)(e,"intf")),a=(0,o.iH)(!1),l=(0,o.iH)(!1),s=(0,i.Fl)((()=>Math.min(100,Math.max(0,100*e.intf.value/(e.intf.max-e.intf.min)))));return{...t,el:n,percentage:s,mousedown:()=>{t.editMode.value||(l.value=!0)},mouseup:()=>{t.editMode.value||(a.value||t.enterEditMode(),l.value=!1,a.value=!1)},mousemove:o=>{if(t.editMode.value)return;const i=Math.max(e.intf.min,Math.min(e.intf.max,(e.intf.max-e.intf.min)*(o.offsetX/n.value.clientWidth)+e.intf.min));l.value&&(t.setValue(i),a.value=!0)},mouseleave:o=>{t.editMode.value||(l.value&&(o.offsetX>=n.value.clientWidth?t.setValue(e.intf.max):o.offsetX<=0&&t.setValue(e.intf.min)),l.value=!1,a.value=!1)}}}}),Wn={key:0,class:"__content"},Un={class:"__label"},An={class:"__value"},Ln={key:1,class:"__content"},$n=b(Vn,[["render",function(e,n,t,o,s,r){return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-slider",{"baklava-ignore-mouse":!e.editMode}]),onPointerdown:n[3]||(n[3]=(...n)=>e.mousedown&&e.mousedown(...n)),onPointerup:n[4]||(n[4]=(...n)=>e.mouseup&&e.mouseup(...n)),onPointermove:n[5]||(n[5]=(...n)=>e.mousemove&&e.mousemove(...n)),onPointerleave:n[6]||(n[6]=(...n)=>e.mouseleave&&e.mouseleave(...n))},[(0,i._)("div",{class:"__slider",style:(0,a.j5)({width:e.percentage+"%"})},null,4),e.editMode?((0,i.wg)(),(0,i.iD)("div",Ln,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[0]||(n[0]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[1]||(n[1]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[2]||(n[2]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",Wn,[(0,i._)("div",Un,(0,a.zw)(e.intf.name),1),(0,i._)("div",An,(0,a.zw)(e.stringRepresentation),1)]))],34)}]]),qn=b((0,i.aZ)({props:{intf:{type:Object,required:!0}}}),[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",null,(0,a.zw)(e.intf.value),1)}]]);class Bn extends r.I{constructor(e,n){super(e,n),this.component=(0,o.Xl)(qn),this.setPort(!1)}}const zn=(0,i.aZ)({props:{intf:{type:Object,required:!0},modelValue:{type:String,required:!0}},emits:["update:modelValue"],setup:(e,{emit:n})=>({v:(0,i.Fl)({get:()=>e.modelValue,set:e=>{n("update:modelValue",e)}})})}),Rn=["placeholder","title"],Gn=b(zn,[["render",function(e,n,t,o,a,s){return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.wy)((0,i._)("input",{"onUpdate:modelValue":n[0]||(n[0]=n=>e.v=n),type:"text",class:"baklava-input",placeholder:e.intf.name,title:e.intf.name},null,8,Rn),[[l.nr,e.v]])])}]]);class Yn extends r.I{constructor(){super(...arguments),this.component=(0,o.Xl)(Gn)}}const Kn="__baklava_SubgraphInputNode",Zn="__baklava_SubgraphOutputNode",Xn=(0,u.h)({type:Kn,title:"Subgraph Input",inputs:{name:()=>new Yn("Name","Input").setPort(!1)},outputs:{placeholder:()=>new r.I("Connection",void 0)},onCreate(){this.graphInterfaceId=Ke()}}),Qn=(0,u.h)({type:Zn,title:"Subgraph Output",inputs:{name:()=>new Yn("Name","Output").setPort(!1),placeholder:()=>new r.I("Connection",void 0)},onCreate(){this.graphInterfaceId=Ke()}});function Jn(e,n,t){if(!n.template)return!1;if((0,s.Ds)(n.template)===t)return!0;const o=e.graphTemplates.find((e=>(0,s.Ds)(e)===t));return!!o&&o.nodes.filter((e=>e.type.startsWith(s.qM))).some((t=>Jn(e,n,t.type)))}const et=(0,i.aZ)({components:{PaletteEntry:qe},setup(){const{viewModel:e}=f(),{x:n,y:t}=function(e={}){const{target:n=F}=e,t=(0,o.iH)(!1),i=(0,o.iH)(e.initialValue||{});Object.assign(i.value,Y,i.value);const a=n=>{t.value=!0,e.pointerTypes&&!e.pointerTypes.includes(n.pointerType)||(i.value=function(e,n,t=!1){return n.reduce(((n,o)=>(o in e&&(t&&void 0===e[o]||(n[o]=e[o])),n)),{})}(n,K,!1))};return n&&(V(n,"pointerdown",a,{passive:!0}),V(n,"pointermove",a,{passive:!0}),V(n,"pointerleave",(()=>t.value=!1),{passive:!0})),l=((e,n)=>{for(var t in n||(n={}))z.call(n,t)&&G(e,t,n[t]);if(B)for(var t of B(n))R.call(n,t)&&G(e,t,n[t]);return e})({},function(e){if(!(0,o.dq)(e))return(0,o.BK)(e);const n=Array.isArray(e.value)?new Array(e.value.length):{};for(const t in e.value)n[t]=(0,o.ZM)((()=>({get:()=>e.value[t],set(n){if(Array.isArray(e.value)){const o=[...e.value];o[t]=n,e.value=o}else{const o=j(P({},e.value),{[t]:n});Object.setPrototypeOf(o,e.value),e.value=o}}})));return n}(i)),$(l,q({isInside:t}));var l}(),{transform:a}=y(),l=(0,i.f3)("editorEl"),s=(0,o.iH)(null),r=(0,i.Fl)((()=>{const n=Array.from(e.value.editor.nodeTypes.entries()),t=new Set(n.map((([,e])=>e.category))),o=[];for(const i of t.values()){let t=n.filter((([,e])=>e.category===i));t=e.value.displayedGraph.template?t.filter((([n])=>!Jn(e.value.editor,e.value.displayedGraph,n))):t.filter((([e])=>![Kn,Zn].includes(e))),t.length>0&&o.push({name:i,nodeTypes:Object.fromEntries(t)})}return o.sort(((e,n)=>"default"===e.name?-1:"default"===n.name||e.name>n.name?1:-1)),o})),u=(0,i.Fl)((()=>{if(!s.value||!(null==l?void 0:l.value))return{};const{left:e,top:o}=l.value.getBoundingClientRect();return{top:t.value-o+"px",left:n.value-e+"px"}}));return{draggedNode:s,categories:r,draggedNodeStyles:u,onDragStart:(i,r)=>{s.value={type:i,nodeInformation:r};const u=()=>{const i=(0,o.qj)(new r.type);e.value.displayedGraph.addNode(i);const d=l.value.getBoundingClientRect(),[c,p]=a(n.value-d.left,t.value-d.top);i.position.x=c,i.position.y=p,s.value=null,document.removeEventListener("pointerup",u)};document.addEventListener("pointerup",u)},mouseX:n,mouseY:t}}}),nt={class:"baklava-node-palette"},tt={key:0},ot=b(et,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("PaletteEntry");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",nt,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.categories,(n=>((0,i.wg)(),(0,i.iD)("section",{key:n.name},["default"!==n.name?((0,i.wg)(),(0,i.iD)("h1",tt,(0,a.zw)(n.name),1)):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.nodeTypes,((n,t)=>((0,i.wg)(),(0,i.j4)(u,{key:t,type:t,title:n.title,onPointerdown:o=>e.onDragStart(t,n)},null,8,["type","title","onPointerdown"])))),128))])))),128))]),(0,i.Wm)(l.uT,{name:"fade"},{default:(0,i.w5)((()=>[e.draggedNode?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"baklava-dragged-node",style:(0,a.j5)(e.draggedNodeStyles)},[(0,i.Wm)(u,{type:e.draggedNode.type,title:e.draggedNode.nodeInformation.title},null,8,["type","title"])],4)):(0,i.kq)("",!0)])),_:1})],64)}]]),it="SAVE_SUBGRAPH",at="CREATE_SUBGRAPH",lt=[Kn,Zn],st="DELETE_NODES",rt="SWITCH_TO_MAIN_GRAPH";class ut{constructor(e,n){this.type=e,"addNode"===e?this.nodeId=n:this.nodeState=n}undo(e){"addNode"===this.type?this.removeNode(e):this.addNode(e)}redo(e){"addNode"===this.type&&this.nodeState?this.addNode(e):"removeNode"===this.type&&this.nodeId&&this.removeNode(e)}addNode(e){const n=e.editor.nodeTypes.get(this.nodeState.type);if(!n)return;const t=new n.type;e.addNode(t),t.load(this.nodeState),this.nodeId=t.id}removeNode(e){const n=e.nodes.find((e=>e.id===this.nodeId));n&&(this.nodeState=n.save(),e.removeNode(n))}}class dt{constructor(e,n){if(this.type=e,"addConnection"===e)this.connectionId=n;else{const e=n;this.connectionState={id:e.id,from:e.from.id,to:e.to.id}}}undo(e){"addConnection"===this.type?this.removeConnection(e):this.addConnection(e)}redo(e){"addConnection"===this.type&&this.connectionState?this.addConnection(e):"removeConnection"===this.type&&this.connectionId&&this.removeConnection(e)}addConnection(e){const n=e.findNodeInterface(this.connectionState.from),t=e.findNodeInterface(this.connectionState.to);n&&t&&e.addConnection(n,t)}removeConnection(e){const n=e.connections.find((e=>e.id===this.connectionId));n&&(this.connectionState={id:n.id,from:n.from.id,to:n.to.id},e.removeConnection(n))}}class ct{constructor(e){if(this.type="transaction",0===e.length)throw new Error("Can't create a transaction with no steps");this.steps=e}undo(e){for(let n=this.steps.length-1;n>=0;n--)this.steps[n].undo(e)}redo(e){for(let n=0;n',6)],Gt=b(Bt,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",zt,Rt)}]]),Yt=(0,i.aZ)({props:{command:{type:String,required:!0},title:{type:String,required:!0},icon:{type:Object,required:!1,default:void 0}},setup(){const{viewModel:e}=f();return{viewModel:e}}}),Kt=["disabled","title"],Zt=b(Yt,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("button",{class:"baklava-toolbar-entry baklava-toolbar-button",disabled:!e.viewModel.commandHandler.canExecuteCommand(e.command),title:e.title,onClick:n[0]||(n[0]=n=>e.viewModel.commandHandler.executeCommand(e.command))},[e.icon?((0,i.wg)(),(0,i.j4)((0,i.LL)(e.icon),{key:0})):((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Uk)((0,a.zw)(e.title),1)],64))],8,Kt)}]]),Xt=(0,i.aZ)({components:{ToolbarButton:Zt},setup(){const{viewModel:e}=f();return{isSubgraph:(0,i.Fl)((()=>e.value.displayedGraph!==e.value.editor.graph)),commands:[{command:ht,title:"Copy",icon:Ut},{command:gt,title:"Paste",icon:Tt},{command:pt,title:"Undo",icon:_t},{command:vt,title:"Redo",icon:Nt},{command:at,title:"Create Subgraph",icon:Gt}],subgraphCommands:[{command:it,title:"Save Subgraph",icon:qt},{command:rt,title:"Back to Main Graph",icon:St}]}}}),Qt={class:"baklava-toolbar"},Jt=b(Xt,[["render",function(e,n,t,o,a,l){const s=(0,i.up)("toolbar-button");return(0,i.wg)(),(0,i.iD)("div",Qt,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.commands,(e=>((0,i.wg)(),(0,i.j4)(s,{key:e.command,command:e.command,title:e.title,icon:e.icon},null,8,["command","title","icon"])))),128)),e.isSubgraph?((0,i.wg)(!0),(0,i.iD)(i.HY,{key:0},(0,i.Ko)(e.subgraphCommands,(e=>((0,i.wg)(),(0,i.j4)(s,{key:e.command,command:e.command,title:e.title,icon:e.icon},null,8,["command","title","icon"])))),128)):(0,i.kq)("",!0)])}]]),eo=(0,i.aZ)({components:{Background:x,Node:Me,ConnectionWrapper:Oe,TemporaryConnection:He,Sidebar:Fe,Minimap:Ve,NodePalette:ot,Toolbar:Jt},props:{viewModel:{type:Object,required:!0}},setup(e){const n=Symbol("EditorToken"),t=(0,o.Vh)(e,"viewModel");m=t;const a=(0,o.iH)(null);(0,i.JJ)("editorEl",a);const l=(0,i.Fl)((()=>e.viewModel.displayedGraph.nodes)),s=(0,i.Fl)((()=>e.viewModel.displayedGraph.connections)),r=(0,i.Fl)((()=>e.viewModel.displayedGraph.selectedNodes)),u=function(){const{graph:e}=h();let n=[],t=-1,o={x:0,y:0};const a=g((0,i.Fl)((()=>e.value.panning))),l=(0,i.Fl)((()=>({"transform-origin":"0 0",transform:`scale(${e.value.scaling}) translate(${e.value.panning.x}px, ${e.value.panning.y}px)`}))),s=(n,t,o)=>{const i=[n/e.value.scaling-e.value.panning.x,t/e.value.scaling-e.value.panning.y],a=[n/o-e.value.panning.x,t/o-e.value.panning.y],l=[a[0]-i[0],a[1]-i[1]];e.value.panning.x+=l[0],e.value.panning.y+=l[1],e.value.scaling=o},r=()=>({ax:n[0].clientX,ay:n[0].clientY,bx:n[1].clientX,by:n[1].clientY});return{styles:l,...a,onPointerDown:e=>{if(n.push(e),a.onPointerDown(e),2===n.length){const{ax:e,ay:n,bx:t,by:i}=r();o={x:e+(t-e)/2,y:n+(i-n)/2}}},onPointerMove:i=>{for(let e=0;e0){const n=e.value.scaling*(1+(c-t)/500);s(o.x,o.y,n)}t=c}else a.onPointerMove(i)},onPointerUp:e=>{n=n.filter((n=>n.pointerId!==e.pointerId)),t=-1,a.onPointerUp()},onMouseWheel:n=>{n.preventDefault();let t=n.deltaY;1===n.deltaMode&&(t*=32);const o=e.value.scaling*(1-t/3e3);s(n.offsetX,n.offsetY,o)}}}(),d=function(){const{graph:e}=h(),n=(0,o.iH)(null),t=(0,o.iH)(null);return(0,i.JJ)("hoveredOver",(o=>{if(t.value=o??null,o&&n.value){n.value.to=o;const t=e.value.checkConnection(n.value.from,n.value.to);if(n.value.status=t.connectionAllowed?w.ALLOWED:w.FORBIDDEN,t.connectionAllowed){const n=t.connectionsInDanger.map((e=>e.id));e.value.connections.forEach((e=>{n.includes(e.id)&&(e.isInDanger=!0)}))}}else!o&&n.value&&(n.value.to=void 0,n.value.status=w.NONE,e.value.connections.forEach((e=>{e.isInDanger=!1})))})),{temporaryConnection:n,onMouseMove:t=>{n.value&&(n.value.mx=t.offsetX/e.value.scaling-e.value.panning.x,n.value.my=t.offsetY/e.value.scaling-e.value.panning.y)},onMouseDown:()=>{if(t.value){const o=e.value.connections.find((e=>e.to===t.value));t.value.isInput&&o?(n.value={status:w.NONE,from:o.from},e.value.removeConnection(o)):n.value={status:w.NONE,from:t.value},n.value.mx=void 0,n.value.my=void 0}},onMouseUp:()=>{n.value&&t.value&&e.value.addConnection(n.value.from,n.value.to),n.value=null}}}(),c=(0,i.Fl)((()=>({...u.styles.value}))),p=(0,o.iH)(0);e.viewModel.editor.hooks.load.subscribe(n,(e=>(p.value++,e)));const v=()=>{e.viewModel.displayedGraph.selectedNodes=[]};return{el:a,counter:p,nodes:l,connections:s,selectedNodes:r,nodeContainerStyle:c,onPointerMove:e=>{u.onPointerMove(e),d.onMouseMove(e)},onPointerDown:e=>{0===e.button&&(e.target===a.value&&(v(),u.onPointerDown(e)),d.onMouseDown())},onPointerUp:e=>{u.onPointerUp(e),d.onMouseUp()},keyDown:n=>{"Tab"===n.key&&n.preventDefault(),e.viewModel.commandHandler.handleKeyDown(n)},keyUp:n=>{e.viewModel.commandHandler.handleKeyUp(n)},selectNode:n=>{e.viewModel.commandHandler.pressedKeys.includes("Control")||v(),e.viewModel.displayedGraph.selectedNodes.push(n)},temporaryConnection:d.temporaryConnection,mouseWheel:u.onMouseWheel,dragging:u.dragging}}}),no={class:"connections-container"},to=b(eo,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("background"),d=(0,i.up)("toolbar"),c=(0,i.up)("node-palette"),p=(0,i.up)("connection-wrapper"),v=(0,i.up)("temporary-connection"),m=(0,i.up)("node"),f=(0,i.up)("sidebar"),h=(0,i.up)("minimap");return(0,i.wg)(),(0,i.iD)("div",{ref:"el",tabindex:"-1",class:(0,a.C_)(["baklava-editor",{"baklava-ignore-mouse":!!e.temporaryConnection||e.dragging,"--temporary-connection":!!e.temporaryConnection}]),onPointermove:n[0]||(n[0]=(0,l.iM)(((...n)=>e.onPointerMove&&e.onPointerMove(...n)),["self"])),onPointerdown:n[1]||(n[1]=(...n)=>e.onPointerDown&&e.onPointerDown(...n)),onPointerup:n[2]||(n[2]=(...n)=>e.onPointerUp&&e.onPointerUp(...n)),onWheel:n[3]||(n[3]=(0,l.iM)(((...n)=>e.mouseWheel&&e.mouseWheel(...n)),["self"])),onKeydown:n[4]||(n[4]=(...n)=>e.keyDown&&e.keyDown(...n)),onKeyup:n[5]||(n[5]=(...n)=>e.keyUp&&e.keyUp(...n))},[(0,i.WI)(e.$slots,"background",{},(()=>[(0,i.Wm)(u)])),(0,i.WI)(e.$slots,"toolbar",{},(()=>[(0,i.Wm)(d)])),(0,i.WI)(e.$slots,"palette",{},(()=>[(0,i.Wm)(c)])),((0,i.wg)(),(0,i.iD)("svg",no,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.connections,(n=>((0,i.wg)(),(0,i.iD)("g",{key:n.id+e.counter.toString()},[(0,i.WI)(e.$slots,"connection",{connection:n},(()=>[(0,i.Wm)(p,{connection:n},null,8,["connection"])]))])))),128)),(0,i.WI)(e.$slots,"temporaryConnection",{temporaryConnection:e.temporaryConnection},(()=>[e.temporaryConnection?((0,i.wg)(),(0,i.j4)(v,{key:0,connection:e.temporaryConnection},null,8,["connection"])):(0,i.kq)("",!0)]))])),(0,i._)("div",{class:"node-container",style:(0,a.j5)(e.nodeContainerStyle)},[(0,i.Wm)(l.W3,{name:"fade"},{default:(0,i.w5)((()=>[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.nodes,(n=>(0,i.WI)(e.$slots,"node",{node:n,selected:e.selectedNodes.includes(n),onSelect:t=>e.selectNode(n)},(()=>[((0,i.wg)(),(0,i.j4)(m,{key:n.id+e.counter.toString(),node:n,selected:e.selectedNodes.includes(n),onSelect:t=>e.selectNode(n)},null,8,["node","selected","onSelect"]))])))),256))])),_:3})],4),(0,i.WI)(e.$slots,"sidebar",{},(()=>[(0,i.Wm)(f)])),(0,i.WI)(e.$slots,"minimap",{},(()=>[e.viewModel.settings.enableMinimap?((0,i.wg)(),(0,i.j4)(h,{key:0})):(0,i.kq)("",!0)]))],34)}]]),oo=()=>{const e=(0,o.iH)(new Map),n=(n,t=!1,...o)=>{if(e.value.has(n))return e.value.get(n).execute(...o);if(t)throw new Error(`[CommandHandler] Command ${n} not registered`)},t=function(e){const n=(0,o.iH)([]),t=(0,o.iH)([]);return{pressedKeys:n,handleKeyDown:o=>{n.value.includes(o.key)||n.value.push(o.key),t.value.forEach((t=>{t.keys.every((e=>n.value.includes(e)))&&e(t.commandName)}))},handleKeyUp:e=>{const t=n.value.indexOf(e.key);t>=0&&n.value.splice(t,1)},registerHotkey:(e,n)=>{t.value.push({keys:e,commandName:n})}}}(n);return(0,o.qj)({registerCommand:(n,t)=>{if(e.value.has(n))throw new Error(`Command "${n}" already exists`);e.value.set(n,t)},executeCommand:n,canExecuteCommand:(n,t=!1,...o)=>{if(!e.value.has(n)){if(t)throw new Error(`[CommandHandler] Command ${n} not registered`);return!1}return e.value.get(n).canExecute(o)},...t})},io=e=>!(e instanceof c.k);function ao(e){const n=(0,o.iH)(e??new p.M),t=Symbol("ViewModelToken"),a=(0,o.iH)(null),l=(0,o.YS)(a),{switchGraph:r}=function(e,n){return{switchGraph:t=>{let o;if(io(t))o=new c.k(e.value),t.createGraph(o),o.inputs.forEach((e=>{const n=new Xn;n.inputs.name.value=e.name,n.graphInterfaceId=e.id,o.addNode(n);const t=o.findNodeInterface(e.nodeInterfaceId);t?o.addConnection(n.outputs.placeholder,t):console.warn(`Could not find target interface ${e.nodeInterfaceId} for subgraph input node`)})),o.outputs.forEach((e=>{const n=new Qn;n.inputs.name.value=e.name,n.graphInterfaceId=e.id,o.addNode(n);const t=o.findNodeInterface(e.nodeInterfaceId);t?o.addConnection(t,n.inputs.placeholder):console.warn(`Could not find target interface ${e.nodeInterfaceId} for subgraph input node`)}));else{if(t!==e.value.graph)throw new Error("Can only switch using 'Graph' instance when it is the root graph. Otherwise a 'GraphTemplate' must be used.");o=t}n.value&&n.value!==e.value.graph&&n.value.destroy(),o.panning=o.panning??t.panning??{x:0,y:0},o.scaling=o.scaling??t.scaling??1,o.selectedNodes=o.selectedNodes??[],o.sidebar=o.sidebar??{visible:!1,nodeId:"",optionName:""},n.value=o}}}(n,a),u=(0,i.Fl)((()=>l.value&&l.value!==n.value.graph)),m=(0,o.qj)({useStraightConnections:!1,enableMinimap:!1,background:{gridSize:100,gridDivision:5,subGridVisibleThreshold:.6}}),f=oo(),h=function(e,n){const t=Symbol("HistoryToken"),a=(0,o.iH)(200),l=(0,o.iH)([]),s=(0,o.iH)(!1),r=(0,o.iH)(-1),u=(0,o.iH)(!1),d=(0,o.iH)([]),c=e=>{if(!s.value)if(u.value)d.value.push(e);else for(r.value!==l.value.length-1&&(l.value=l.value.slice(0,r.value+1)),l.value.push(e),r.value++;l.value.length>a.value;)l.value.shift()},p=()=>0!==l.value.length&&-1!==r.value,v=()=>0!==l.value.length&&r.value{n&&(n.events.addNode.unsubscribe(t),n.events.removeNode.unsubscribe(t),n.events.addConnection.unsubscribe(t),n.events.removeConnection.unsubscribe(t)),e&&(e.events.addNode.subscribe(t,(e=>{c(new ut("addNode",e.id))})),e.events.removeNode.subscribe(t,(e=>{c(new ut("removeNode",e.save()))})),e.events.addConnection.subscribe(t,(e=>{c(new dt("addConnection",e.id))})),e.events.removeConnection.subscribe(t,(e=>{c(new dt("removeConnection",e))})))}),{immediate:!0}),n.registerCommand(pt,{canExecute:p,execute:()=>{p()&&(s.value=!0,l.value[r.value--].undo(e.value),s.value=!1)}}),n.registerCommand(vt,{canExecute:v,execute:()=>{v()&&(s.value=!0,l.value[++r.value].redo(e.value),s.value=!1)}}),n.registerCommand(mt,{canExecute:()=>!u.value,execute:()=>{u.value=!0}}),n.registerCommand(ft,{canExecute:()=>u.value,execute:()=>{u.value=!1,d.value.length>0&&(c(new ct(d.value)),d.value=[])}}),n.registerHotkey(["Control","z"],pt),n.registerHotkey(["Control","y"],vt),(0,o.qj)({maxSteps:a})}(l,f),g=function(e,n,t){const a=Symbol("ClipboardToken"),l=(0,o.iH)(""),s=(0,o.iH)(""),r=(0,i.Fl)((()=>!l.value)),u=(e,n,t)=>{for(const o of e){let e;if(t&&"input"!==t||(e=Object.values(o.inputs).find((e=>e.id===n))),e||t&&"output"!==t||(e=Object.values(o.outputs).find((e=>e.id===n))),e)return e}};return t.registerCommand(ht,{canExecute:()=>!0,execute:()=>{const n=e.value.selectedNodes.flatMap((e=>[...Object.values(e.inputs),...Object.values(e.outputs)])),t=e.value.connections.filter((e=>n.includes(e.from)||n.includes(e.to))).map((e=>({from:e.from.id,to:e.to.id})));s.value=JSON.stringify(t),l.value=JSON.stringify(e.value.selectedNodes.map((e=>e.save())))}}),t.registerHotkey(["Control","c"],ht),t.registerCommand(gt,{canExecute:()=>!r.value,execute:()=>{if(r.value)return;const o=new Map,i=JSON.parse(l.value),d=JSON.parse(s.value),c=[],p=[],v=e.value;t.executeCommand(mt);for(const e of i){const t=n.value.nodeTypes.get(e.type);if(!t)return void console.warn(`Node type ${e.type} not registered`);const i=new t.type,l=i.id;c.push(i);const s=e=>{Object.values(e).forEach((e=>{e.hooks.load.subscribe(a,(n=>{const t=Ke();return o.set(n.id,t),e.id=t,e.hooks.load.unsubscribe(a),n}))}))};s(i.inputs),s(i.outputs),i.hooks.beforeLoad.subscribe(a,(e=>{const n=e;return n.position&&(n.position.x+=10,n.position.y+=10),i.hooks.beforeLoad.unsubscribe(a),n})),v.addNode(i),i.load(e),i.id=l,o.set(e.id,l)}for(const e of d){const n=u(c,o.get(e.from),"output"),t=u(c,o.get(e.to),"input");if(!n||!t)continue;const i=v.addConnection(n,t);i&&p.push(i)}return t.executeCommand(ft),{newNodes:c,newConnections:p}}}),t.registerHotkey(["Control","v"],gt),t.registerCommand(yt,{canExecute:()=>!0,execute:()=>{l.value="",s.value=""}}),(0,o.qj)({isEmpty:r})}(l,n,f),y={renderNode:new v.p$(null),renderInterface:new v.p$(null)};return function(e,n,t){!function(e,n){n.registerCommand(st,{canExecute:()=>e.value.selectedNodes.length>0,execute(){e.value.selectedNodes.forEach((n=>e.value.removeNode(n)))}}),n.registerHotkey(["Delete"],st)}(e,n),function(e,n,t){n.registerCommand(at,{canExecute:()=>e.value.selectedNodes.filter((e=>!lt.includes(e.type))).length>0,execute:()=>{const i=e.value,a=e.value.editor;if(0===i.selectedNodes.length)return;const l=i.selectedNodes.filter((e=>!lt.includes(e.type))),r=l.flatMap((e=>Object.values(e.inputs))),u=l.flatMap((e=>Object.values(e.outputs))),c=i.connections.filter((e=>!u.includes(e.from)&&r.includes(e.to))),p=i.connections.filter((e=>u.includes(e.from)&&!r.includes(e.to))),v=i.connections.filter((e=>u.includes(e.from)&&r.includes(e.to))),m=c.map((e=>e.to)),f=p.map((e=>e.from)),h=new Map,g=[];for(const e of m){const n=Ke();h.set(e.id,n),g.push({id:n,nodeInterfaceId:e.id,name:e.name})}const y=[];for(const e of f){const n=Ke();h.set(e.id,n),y.push({id:n,nodeInterfaceId:e.id,name:e.name})}const w=(0,o.qj)(new d.o({connections:v.map((e=>({id:e.id,from:e.from.id,to:e.to.id}))),inputs:g,outputs:y,nodes:l.map((e=>e.save()))},a));a.addGraphTemplate(w);const b=a.nodeTypes.get((0,s.Ds)(w));if(!b)throw new Error("Unable to create subgraph: Could not find corresponding graph node type");const x=(0,o.qj)(new b.type);i.addNode(x);const k=Math.round(l.map((e=>e.position.x)).reduce(((e,n)=>e+n),0)/l.length),_=Math.round(l.map((e=>e.position.y)).reduce(((e,n)=>e+n),0)/l.length);x.position.x=k,x.position.y=_,c.forEach((e=>{i.removeConnection(e),i.addConnection(e.from,x.inputs[h.get(e.to.id)])})),p.forEach((e=>{i.removeConnection(e),i.addConnection(x.outputs[h.get(e.from.id)],e.to)})),l.forEach((e=>i.removeNode(e))),n.canExecuteCommand(it)&&n.executeCommand(it),t(w),e.value.panning={...i.panning},e.value.scaling=i.scaling}})}(e,n,t),function(e,n){n.registerCommand(it,{canExecute:()=>{var n;return e.value!==(null==(n=e.value.editor)?void 0:n.graph)},execute:()=>{const n=e.value;if(!n.template)throw new Error("Graph template property not set");const t=[],o=[],i=n.nodes.filter((e=>e.type===Kn));for(const e of i){const i=n.connections.filter((n=>n.from===e.outputs.placeholder));i.forEach((n=>{o.push({id:e.graphInterfaceId,name:e.inputs.name.value,nodeInterfaceId:n.to.id})})),t.push(...i)}const a=[],l=n.nodes.filter((e=>e.type===Zn));for(const e of l){const o=n.connections.filter((n=>n.to===e.inputs.placeholder));o.forEach((n=>{a.push({id:e.graphInterfaceId,name:e.inputs.name.value,nodeInterfaceId:n.from.id})})),t.push(...o)}const s=n.connections.filter((e=>!t.includes(e))),r=n.nodes.filter((e=>e.type!==Kn&&e.type!==Zn));n.template.update({inputs:o,outputs:a,connections:s.map((e=>({id:e.id,from:e.from.id,to:e.to.id}))),nodes:r.map((e=>e.save()))}),n.template.panning=n.panning,n.template.scaling=n.scaling}})}(e,n),function(e,n,t){n.registerCommand(rt,{canExecute:()=>e.value!==e.value.editor.graph,execute:()=>{n.executeCommand(it),t(e.value.editor.graph)}})}(e,n,t)}(l,f,r),function(e,n){!function(e,n){n.registerCommand(wt,{execute:n=>{e.value.sidebar.nodeId=n,e.value.sidebar.visible=!0},canExecute:()=>!0})}(e,n)}(l,f),(0,i.YP)(n,((e,o)=>{o&&(o.events.registerGraph.unsubscribe(t),o.graphEvents.beforeAddNode.unsubscribe(t),e.nodeHooks.beforeLoad.unsubscribe(t),e.nodeHooks.afterSave.unsubscribe(t),e.graphTemplateHooks.beforeLoad.unsubscribe(t),e.graphTemplateHooks.afterSave.unsubscribe(t)),e&&(e.nodeHooks.beforeLoad.subscribe(t,((e,n)=>(n.position=e.position??{x:0,y:0},n.width=e.width??200,n.twoColumn=e.twoColumn??!1,e))),e.nodeHooks.afterSave.subscribe(t,((e,n)=>(e.position=n.position,e.width=n.width,e.twoColumn=n.twoColumn,e))),e.graphTemplateHooks.beforeLoad.subscribe(t,((e,n)=>(n.panning=e.panning,n.scaling=e.scaling,e))),e.graphTemplateHooks.afterSave.subscribe(t,((e,n)=>(e.panning=n.panning,e.scaling=n.scaling,e))),e.graphEvents.beforeAddNode.subscribe(t,(e=>function(e){e.position=e.position??{x:0,y:0},e.disablePointerEvents=!1,e.twoColumn=e.twoColumn??!1,e.width=e.width??200}(e))),n.value.registerNodeType(Xn,{category:"Subgraphs"}),n.value.registerNodeType(Qn,{category:"Subgraphs"}),r(e.graph))}),{immediate:!0}),(0,o.qj)({editor:n,displayedGraph:l,isSubgraph:u,settings:m,commandHandler:f,history:h,clipboard:g,hooks:y,switchGraph:r})}const lo=Object.freeze(Object.defineProperty({__proto__:null,Connection:Ie,ConnectionWrapper:Oe,TemporaryConnection:He,Node:Me,NodeInterface:he,ContextMenu:re,Minimap:Ve,Sidebar:Fe},Symbol.toStringTag,{value:"Module"}))}}]); +//# sourceMappingURL=114.1887e3ae.js.map \ No newline at end of file diff --git a/_static/kpm/js/114.1887e3ae.js.map b/_static/kpm/js/114.1887e3ae.js.map new file mode 100644 index 00000000..43a3e49d --- /dev/null +++ b/_static/kpm/js/114.1887e3ae.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/114.1887e3ae.js","mappings":"4JAEO,MAAMA,UAAqB,IAC9BC,YAAYC,GACRC,QACAC,KAAKF,OAASA,CAClB,CAKAG,KAAKC,GACDF,KAAKG,UAAUC,SAASC,GAAMA,EAAEH,EAAMF,KAAKF,SAC/C,EAMG,MAAMQ,UAAgC,IACzCT,YAAYC,GACRC,QACAC,KAAKF,OAASA,CAClB,CAMAG,KAAKC,GACD,IAAIK,GAAY,EAChB,MAAMC,EAAU,IAAM,CAAED,GAAY,GACpC,IAAK,MAAMF,KAAKI,MAAMC,KAAKV,KAAKG,UAAUQ,UAEtC,GADAN,EAAEH,EAAMM,EAASR,KAAKF,QAClBS,EACA,MAAO,CAAEA,WAAW,GAG5B,MAAO,CAAEA,WAAW,EACxB,E,4DCrCG,MAAMK,UAA8B,IACvCC,QAAQX,EAAMJ,GACV,IAAIgB,EAAeZ,EACnB,IAAK,MAAMa,KAAYf,KAAKG,UACxBW,EAAeC,EAASD,EAAchB,GAE1C,OAAOgB,CACX,EAGG,MAAME,UAAuBJ,EAChCf,YAAYC,GACRC,QACAC,KAAKF,OAASA,CAClB,CACAe,QAAQX,GACJ,OAAOH,MAAMc,QAAQX,EAAMF,KAAKF,OACpC,EAEG,MAAMmB,UAAqB,IAC9BpB,YAAYC,GACRC,QACAC,KAAKF,OAASA,CAClB,CACAe,QAAQX,GACJ,MAAMgB,EAAU,GAChB,IAAK,MAAMH,KAAYf,KAAKG,UACxBe,EAAQC,KAAKJ,EAASb,EAAMF,KAAKF,SAErC,OAAOoB,CACX,E,kDC/BG,SAASE,IACZ,MAAMC,EAAQC,SACRnB,EAAY,IAAIoB,IAChBC,EAAU,IAAIC,IACdC,EAAW,CAACC,EAAKC,KACfA,aAAwB,KACxBA,EAAaC,cAAcR,GAAO,KAAQ,IAAIS,EAAIC,EAAI,OAA8F,QAAtFA,EAAmC,QAA7BD,EAAK3B,EAAU6B,IAAIL,UAAyB,IAAPG,OAAgB,EAASA,EAAG3B,iBAA8B,IAAP4B,EAAgBA,EAAK,EAAE,GACvL,EAOEE,EAAaC,IACfV,EAAQW,IAAID,GACZ,IAAK,MAAMP,KAAOxB,EAAUiC,OACxBV,EAASC,EAAKO,EAAOP,GACzB,EAEEU,EAAgBH,IAClB,IAAK,MAAMP,KAAOxB,EAAUiC,OACpBF,EAAOP,aAAgB,KACvBO,EAAOP,GAAKW,gBAAgBjB,GAGpCG,EAAQe,OAAOL,EAAO,EAEpBM,EAAU,KACZhB,EAAQpB,SAASqC,GAAMJ,EAAaI,KACpCtC,EAAUuC,OAAO,EAErB,OAAO,IAAIC,MAAM,CAAC,EAAG,CACjBX,IAAG,CAACE,EAAQP,IACI,cAARA,EACOM,EAEM,iBAARN,EACEU,EAEM,YAARV,EACEa,EAEQ,iBAARb,GAAoBA,EAAIiB,WAAW,KAGnCV,EAAOP,IAEbxB,EAAU0C,IAAIlB,IAvCH,CAACA,IACrB,MAAMC,EAAe,IAAI,IACzBzB,EAAU2C,IAAInB,EAAKC,GACnBJ,EAAQpB,SAASqC,GAAMf,EAASC,EAAKc,EAAEd,KAAM,EAqCrCoB,CAAgBpB,GAEbxB,EAAU6B,IAAIL,KAGjC,C,mCCvDO,MAAMqB,EACTnD,cACIG,KAAKiD,YAAc,IAAI1B,IACvBvB,KAAKkD,WAAa,GAClBlD,KAAKmD,SAAW,IAAI5B,IACpBvB,KAAKoD,QAAU,EACnB,CACIjD,gBACA,OAAOH,KAAKkD,WAAWG,OAAOrD,KAAKoD,QAAQE,SAASC,GAAiBA,MACzE,CAMAC,UAAUnC,EAAON,GACTf,KAAKiD,YAAYJ,IAAIxB,KACrBoC,QAAQC,KAAK,6KAGb1D,KAAK2D,YAAYtC,IAErBrB,KAAKiD,YAAYH,IAAIzB,EAAON,GAC5Bf,KAAKkD,WAAW/B,KAAKJ,EACzB,CAMA4C,YAAYtC,GACR,GAAIrB,KAAKiD,YAAYJ,IAAIxB,GAAQ,CAC7B,MAAMN,EAAWf,KAAKiD,YAAYjB,IAAIX,GACtCrB,KAAKiD,YAAYV,OAAOlB,GACxB,MAAMuC,EAAI5D,KAAKkD,WAAWW,QAAQ9C,GAC9B6C,GAAK,GACL5D,KAAKkD,WAAWY,OAAOF,EAAG,EAElC,CACJ,CAEA/B,cAAcR,EAAOkC,GACbvD,KAAKmD,SAASN,IAAIxB,KAClBoC,QAAQC,KAAK,4KAGb1D,KAAKsC,gBAAgBjB,IAEzBrB,KAAKmD,SAASL,IAAIzB,EAAOkC,GACzBvD,KAAKoD,QAAQjC,KAAKoC,EACtB,CAEAjB,gBAAgBjB,GACZ,IAAKrB,KAAKmD,SAASN,IAAIxB,GACnB,OAEJ,MAAMkC,EAAevD,KAAKmD,SAASnB,IAAIX,GACvCrB,KAAKmD,SAASZ,OAAOlB,GACrB,MAAMuC,EAAI5D,KAAKoD,QAAQS,QAAQN,GAC3BK,GAAK,GACL5D,KAAKoD,QAAQU,OAAOF,EAAG,EAE/B,E,8RC3DJ,IAAIG,EAAe,KAInB,SAASC,IACP,IAAKD,EACH,MAAM,IAAIE,MAAM,qDAElB,MAAO,CACLC,UAAWH,EAEf,CACA,SAASI,IACP,MAAM,UAAED,GAAcF,IACtB,MAAO,CACLI,OAAO,QAAMF,EAAUG,MAAO,kBAC9BC,YAAaJ,EAAUG,MAAMC,YAEjC,CACA,SAASC,EAAYC,GACnB,MAAM,MAAEJ,GAAUD,IACZM,GAAqB,QAAI,MACzBC,GAAwB,QAAI,MAwBlC,MAAO,CAAEC,UAvBQ,SAAS,MAAQF,EAAmBJ,QAuBlCO,cAtBIC,IACrBJ,EAAmBJ,MAAQ,CACzBS,EAAGD,EAAGE,MACNC,EAAGH,EAAGI,OAERP,EAAsBL,MAAQ,CAC5BS,EAAGN,EAAYH,MAAMS,EACrBE,EAAGR,EAAYH,MAAMW,EACtB,EAc+BE,cAZXL,IACrB,GAAIJ,EAAmBJ,MAAO,CAC5B,MAAMc,EAAKN,EAAGE,MAAQN,EAAmBJ,MAAMS,EACzCM,EAAKP,EAAGI,MAAQR,EAAmBJ,MAAMW,EAC/CR,EAAYH,MAAMS,EAAIJ,EAAsBL,MAAMS,EAAIK,EAAKf,EAAMC,MAAMgB,QACvEb,EAAYH,MAAMW,EAAIN,EAAsBL,MAAMW,EAAII,EAAKhB,EAAMC,MAAMgB,OACzE,GAM+CC,YAJ7B,KAClBb,EAAmBJ,MAAQ,KAC3BK,EAAsBL,MAAQ,IAAI,EAGtC,CACA,SAASkB,IACP,MAAM,MAAEnB,GAAUD,IAMlB,MAAO,CAAEqB,UALS,CAACV,EAAGE,IAGb,CAFIF,EAAIV,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQX,EAC9CE,EAAIZ,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQT,GAI7D,CA6EA,IAAIU,EAA2C,CAAEC,IAC/CA,EAA0BA,EAAgC,KAAI,GAAK,OACnEA,EAA0BA,EAAmC,QAAI,GAAK,UACtEA,EAA0BA,EAAqC,UAAI,GAAK,YACjEA,GAJsC,CAK5CD,GAA4B,CAAC,GAgEhC,MAoBME,EAAc,CAACC,EAAKC,KACxB,MAAM5D,EAAS2D,EAAIE,WAAaF,EAChC,IAAK,MAAOlE,EAAKqE,KAAQF,EACvB5D,EAAOP,GAAOqE,EAEhB,OAAO9D,CAAM,EAQT+D,EAA6BL,GAjCf,QAAgB,CAClCM,QACE,MAAM,UAAEhC,GAAcF,KAChB,MAAEI,GAAUD,IAclB,MAAO,CAAEgC,QAbM,SAAS,KACtB,MAAMC,EAASlC,EAAUG,MAAMgC,SAASC,WAClCC,EAAenC,EAAMC,MAAMoB,QAAQX,EAAIV,EAAMC,MAAMgB,QACnDmB,EAAcpC,EAAMC,MAAMoB,QAAQT,EAAIZ,EAAMC,MAAMgB,QAClDoB,EAAOrC,EAAMC,MAAMgB,QAAUe,EAAOM,SACpCC,EAAUF,EAAOL,EAAOQ,aAG9B,MAAO,CACLC,mBAAoB,QAAQN,WAAsBC,MAClDM,eAAgB,GAJQL,OAAUA,QAAWA,OAAUA,OAC3BrC,EAAMC,MAAMgB,QAAUe,EAAOW,wBAA0B,KAAKJ,OAAaA,QAAcA,OAAaA,MAAc,KAI/I,IAGL,IAe0D,CAAC,CAAC,SAN9D,SAAuBK,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,CAC5CC,MAAO,aACPC,OAAO,QAAeP,EAAKb,SAC1B,KAAM,EACX,KAEA,IAAIrE,EACJ,MAAM0F,EAA6B,oBAAXC,OAClBC,EAAY1B,GAAuB,iBAARA,EAC3B2B,EAAO,OAEbH,IAAkE,OAApD1F,EAAe,MAAV2F,YAAiB,EAASA,OAAOG,gBAAqB,EAAS9F,EAAG+F,YAAc,iBAAiBC,KAAKL,OAAOG,UAAUC,WAuB1I,IAAIE,EAAcC,OAAOC,eACrBC,EAAeF,OAAOG,iBACtBC,EAAsBJ,OAAOK,0BAC7BC,EAAwBN,OAAOO,sBAC/BC,EAAiBR,OAAOS,UAAUC,eAClCC,EAAiBX,OAAOS,UAAUG,qBAClCC,EAAoB,CAACC,EAAKnH,EAAK0C,IAAU1C,KAAOmH,EAAMf,EAAYe,EAAKnH,EAAK,CAAEoH,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAM5E,UAAWyE,EAAInH,GAAO0C,EAC1J6E,EAAmB,CAACC,EAAGC,KACzB,IAAK,IAAIC,KAAQD,IAAMA,EAAI,CAAC,GACtBZ,EAAec,KAAKF,EAAGC,IACzBR,EAAkBM,EAAGE,EAAMD,EAAEC,IACjC,GAAIf,EACF,IAAK,IAAIe,KAAQf,EAAsBc,GACjCT,EAAeW,KAAKF,EAAGC,IACzBR,EAAkBM,EAAGE,EAAMD,EAAEC,IAEnC,OAAOF,CAAC,EAENI,EAAkB,CAACJ,EAAGC,IAAMlB,EAAaiB,EAAGf,EAAoBgB,IAyBpE,SAASI,EAAaC,GACpB,IAAIC,EACJ,MAAMC,EAlEc,mBADAC,EAmEOH,GAlEMG,KAAM,QAAMA,GAD/C,IAAsBA,EAoEpB,OAAqD,OAA7CF,EAAe,MAATC,OAAgB,EAASA,EAAME,KAAeH,EAAMC,CACpE,CACA,MAAMG,EAAgBtC,EAAWC,YAAS,EAI1C,SAASsC,KAAoBC,GAC3B,IAAI9H,EACA+H,EACA9J,EACA+J,EAOJ,GANIxC,EAASsC,EAAK,KAAOvJ,MAAM0J,QAAQH,EAAK,MACzCC,EAAQ9J,EAAW+J,GAAWF,EAC/B9H,EAAS4H,IAER5H,EAAQ+H,EAAQ9J,EAAW+J,GAAWF,GAEpC9H,EACH,OAAOyF,EACJlH,MAAM0J,QAAQF,KACjBA,EAAS,CAACA,IACPxJ,MAAM0J,QAAQhK,KACjBA,EAAY,CAACA,IACf,MAAMiK,EAAW,GACXC,EAAU,KACdD,EAAShK,SAASkK,GAAOA,MACzBF,EAASG,OAAS,CAAC,EAMfC,GAAY,SAAM,IAAMhB,EAAatH,KAAUuI,IACnDJ,IACKI,GAELL,EAASjJ,QAAQ8I,EAAO3G,SAASoH,GACxBvK,EAAUwK,KAAKC,GATT,EAACH,EAAIC,EAAOE,KAC3BH,EAAGI,iBAAiBH,EAAOE,EAAUV,GAC9B,IAAMO,EAAGK,oBAAoBJ,EAAOE,EAAUV,IAOhBxI,CAAS+I,EAAIC,EAAOE,OACtD,GACF,CAAEG,WAAW,EAAMC,MAAO,SACvBC,EAAO,KACXT,IACAH,GAAS,EA/Fb,IAA2BC,EAkGzB,OAlGyBA,EAiGPW,GAhGd,YACF,QAAeX,GAgGVW,CACT,CACA,SAASC,EAAehJ,EAAQiJ,EAASjB,EAAU,CAAC,GAClD,MAAQzC,OAAQ2D,EAAUtB,EAAa,OAAEuB,EAAS,GAAE,QAAEC,GAAU,EAAI,aAAEC,GAAe,GAAUrB,EAC/F,IAAKkB,EACH,OACF,IACII,EADAC,GAAe,EAEnB,MAAMC,EAAgBhB,GACbW,EAAOM,MAAMC,IAClB,GAAuB,iBAAZA,EACT,OAAOnL,MAAMC,KAAK0K,EAAQS,SAASC,iBAAiBF,IAAUD,MAAMlB,GAAOA,IAAOC,EAAMxI,QAAUwI,EAAMqB,eAAeC,SAASvB,KAC3H,CACL,MAAMA,EAAKjB,EAAaoC,GACxB,OAAOnB,IAAOC,EAAMxI,SAAWuI,GAAMC,EAAMqB,eAAeC,SAASvB,GACrE,KAGEG,EAAYF,IAChBU,EAAQa,aAAaT,GACrB,MAAMf,EAAKjB,EAAatH,GACnBuI,GAAMA,IAAOC,EAAMxI,SAAUwI,EAAMqB,eAAeC,SAASvB,KAE3C,IAAjBC,EAAMwB,SACRT,GAAgBC,EAAahB,IAC1Be,EAILN,EAAQT,GAHNe,GAAe,EAGH,EAEVpB,EAAU,CACdN,EAAiBqB,EAAS,QAASR,EAAU,CAAEuB,SAAS,EAAMb,YAC9DvB,EAAiBqB,EAAS,eAAgBgB,IACxC,MAAM3B,EAAKjB,EAAatH,GACpBuI,IACFgB,GAAgBW,EAAEL,eAAeC,SAASvB,KAAQiB,EAAaU,GAAE,GAClE,CAAED,SAAS,IACdpC,EAAiBqB,EAAS,aAAcgB,IACtC,GAAiB,IAAbA,EAAEC,OAAc,CAClB,MAAMC,EAAOF,EAAEL,eACfK,EAAEL,aAAe,IAAMO,EACvBd,EAAWJ,EAAQmB,YAAW,IAAM3B,EAASwB,IAAI,GACnD,IACC,CAAED,SAAS,IACdZ,GAAgBxB,EAAiBqB,EAAS,QAASV,IACjD,IAAIhB,EACJ,MAAMe,EAAKjB,EAAatH,GACwD,YAAjC,OAAzCwH,EAAM0B,EAAQS,SAASW,oBAAyB,EAAS9C,EAAI+C,WAAiC,MAANhC,OAAa,EAASA,EAAGiC,SAAStB,EAAQS,SAASW,iBAC/IrB,EAAQT,EAAM,KAElBiC,OAAOC,SAET,MADa,IAAMvC,EAAQjK,SAASkK,GAAOA,KAE7C,CAhGA9C,GAAWC,OAAOoE,SAClBrE,GAAWC,OAAOG,UAClBJ,GAAWC,OAAOoF,SA+FlB,MAAMC,EAAgC,oBAAfC,WAA6BA,WAA+B,oBAAXtF,OAAyBA,OAA2B,oBAAXuF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAO,CAAC,EACnLC,EAAY,0BAClBJ,EAAQI,GAAaJ,EAAQI,IAAc,CAAC,EAC5CJ,EAAQI,GACR,IAAIC,EAAcnF,OAAOC,eACrBmF,EAAepF,OAAOG,iBACtBkF,EAAsBrF,OAAOK,0BAC7BiF,EAAwBtF,OAAOO,sBAC/BgF,EAAiBvF,OAAOS,UAAUC,eAClC8E,EAAiBxF,OAAOS,UAAUG,qBAClC6E,EAAoB,CAAC3E,EAAKnH,EAAK0C,IAAU1C,KAAOmH,EAAMqE,EAAYrE,EAAKnH,EAAK,CAAEoH,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAM5E,UAAWyE,EAAInH,GAAO0C,EAa9J,MAAMqJ,EAAe,CACnB5I,EAAG,EACHE,EAAG,EACH2I,UAAW,EACXC,SAAU,EACVC,MAAO,EACPC,MAAO,EACPC,MAAO,EACPC,OAAQ,EACRC,MAAO,EACPC,YAAa,MAET9L,EAAuB4F,OAAO5F,KAAKsL,GAuBzC,IAAIS,EACMC,KAMPD,IAAmBA,EAAiB,CAAC,IALlB,GAAI,KACxBC,EAAuB,MAAI,QAC3BA,EAAsB,KAAI,OAC1BA,EAAsB,KAAI,OAC1BA,EAAsB,KAAI,OAE5B,IAAIC,EAAYrG,OAAOC,eACnBqG,EAAsBtG,OAAOO,sBAC7BgG,GAAevG,OAAOS,UAAUC,eAChC8F,GAAexG,OAAOS,UAAUG,qBAChC6F,GAAkB,CAAC3F,EAAKnH,EAAK0C,IAAU1C,KAAOmH,EAAMuF,EAAUvF,EAAKnH,EAAK,CAAEoH,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAM5E,UAAWyE,EAAInH,GAAO0C,EACrI,EAAC8E,EAAGC,KACvB,IAAK,IAAIC,KAAQD,IAAMA,EAAI,CAAC,GACtBmF,GAAajF,KAAKF,EAAGC,IACvBoF,GAAgBtF,EAAGE,EAAMD,EAAEC,IAC/B,GAAIiF,EACF,IAAK,IAAIjF,KAAQiF,EAAoBlF,GAC/BoF,GAAalF,KAAKF,EAAGC,IACvBoF,GAAgBtF,EAAGE,EAAMD,EAAEC,GAEzB,EA4BVqF,CAAe,CACbC,OAlRF,SAAkBC,GAChB,OAAOA,CACT,GAqP2B,CACzBC,WAAY,CAAC,IAAM,EAAG,IAAM,GAC5BC,YAAa,CAAC,IAAM,EAAG,IAAM,GAC7BC,cAAe,CAAC,IAAM,EAAG,IAAM,GAC/BC,WAAY,CAAC,IAAM,EAAG,GAAK,GAC3BC,YAAa,CAAC,GAAK,EAAG,IAAM,GAC5BC,cAAe,CAAC,IAAM,EAAG,IAAM,GAC/BC,YAAa,CAAC,IAAM,EAAG,IAAM,GAC7BC,aAAc,CAAC,IAAM,EAAG,IAAM,GAC9BC,eAAgB,CAAC,IAAM,EAAG,IAAM,GAChCC,YAAa,CAAC,GAAK,EAAG,IAAM,GAC5BC,aAAc,CAAC,IAAM,EAAG,GAAK,GAC7BC,eAAgB,CAAC,IAAM,EAAG,IAAM,GAChCC,YAAa,CAAC,IAAM,EAAG,IAAM,GAC7BC,aAAc,CAAC,IAAM,EAAG,IAAM,GAC9BC,eAAgB,CAAC,IAAM,EAAG,IAAM,GAChCC,WAAY,CAAC,GAAK,EAAG,IAAM,GAC3BC,YAAa,CAAC,IAAM,EAAG,GAAK,GAC5BC,cAAe,CAAC,IAAM,EAAG,IAAM,GAC/BC,WAAY,CAAC,IAAM,EAAG,EAAG,KACzBC,YAAa,CAAC,EAAG,IAAM,IAAM,GAC7BC,cAAe,CAAC,IAAM,EAAG,IAAM,GAC/BC,WAAY,CAAC,IAAM,EAAG,KAAO,KAC7BC,YAAa,CAAC,IAAM,KAAM,IAAM,GAChCC,cAAe,CAAC,KAAO,GAAK,IAAM,OAKpC,MAAMC,IAAc,QAAgB,CAClCvK,MAAO,CACLwK,WAAY,CACVC,KAAM3D,QACN4D,SAAS,GAEXC,MAAO,CACLF,KAAM9P,MACNiQ,UAAU,GAEZ5L,EAAG,CACDyL,KAAMI,OACNH,QAAS,GAEXxL,EAAG,CACDuL,KAAMI,OACNH,QAAS,GAEXI,SAAU,CACRL,KAAM3D,QACN4D,SAAS,GAEXK,UAAW,CACTN,KAAMvI,OACNwI,QAAS,KAAM,CAAG1L,GAAG,EAAOE,GAAG,KAEjC8L,UAAW,CACTP,KAAM3D,QACN4D,SAAS,IAGbO,MAAO,CAAC,QAAS,qBACjB7K,MAAMJ,GAAO,KAAE7F,IACb,IAAI+Q,EAAyB,KAC7B,MAAMvG,GAAK,QAAI,MACTwG,GAAa,SAAK,GAClBjD,GAAS,QAAI,GACbkD,GAAgB,QAAI,CAAEpM,GAAG,EAAOE,GAAG,IACnCmM,GAAW,SAAS,IAAMrL,EAAMgL,YAAcI,EAAc7M,MAAMS,GAAKgB,EAAM+K,UAAU/L,KACvFsM,GAAW,SAAS,IAAMtL,EAAMgL,YAAcI,EAAc7M,MAAMW,GAAKc,EAAM+K,UAAU7L,KACvFmB,GAAS,SAAS,KACtB,MAAMkL,EAAI,CAAC,EAKX,OAJKvL,EAAM8K,WACTS,EAAEC,KAAOF,EAAS/M,MAAQyB,EAAMd,EAAIgJ,EAAO3J,MAAQyB,EAAMd,GAAK,KAC9DqM,EAAEE,KAAOzL,EAAMhB,EAAI,MAEduM,CAAC,IAEJG,GAAU,SAAS,KAChB,CACL,cAAeL,EAAS9M,MACxB,cAAe+M,EAAS/M,MACxB,WAAYyB,EAAM8K,aAGhBa,GAAyB,SAAS,IAAM3L,EAAM2K,MAAM9F,KAAK/G,IAAM,IAAMA,EAAG8N,OAAO,QA4CrF,OA3CA,QAAM,CAAC,IAAM5L,EAAMd,EAAG,IAAMc,EAAM2K,QAAQ,KACxC,IAAI/G,EAAK3H,EAAI4P,EAAIC,EACjB5D,EAAO3J,MAA6B,GAArByB,EAAM2K,MAAMlG,OAC3B,MAAMsH,GAA+E,OAA/D9P,EAAyB,OAAnB2H,EAAMe,EAAGpG,YAAiB,EAASqF,EAAIoI,oBAAyB,EAAS/P,EAAGgQ,cAAgB,EAClHC,GAA8E,OAA7DJ,EAAwB,OAAlBD,EAAKlH,EAAGpG,YAAiB,EAASsN,EAAGG,oBAAyB,EAASF,EAAGK,eAAiB,EACxHf,EAAc7M,MAAMS,GAAKgB,EAAM8K,UAAY9K,EAAMhB,EAAkB,IAAd+M,EACrDX,EAAc7M,MAAMW,GAAKc,EAAM8K,UAAY9K,EAAMd,EAAIgJ,EAAO3J,MAAQ2N,EAAe,EAAE,IAEvF9G,EAAeT,GAAI,KACb3E,EAAMwK,YACRrQ,EAAK,qBAAqB,EAC5B,IAgCK,CACLwK,KACAwG,aACAE,WACAC,WACAjL,SACAqL,UACAC,yBACAS,QAtCeC,KACVA,EAAKC,SAAWD,EAAK9N,QACxBpE,EAAK,QAASkS,EAAK9N,OACnBpE,EAAK,qBAAqB,GAC5B,EAmCAoS,aAjCoBhO,IACpBpE,EAAK,QAASoE,GACd4M,EAAW5M,OAAS,EACfyB,EAAM8K,UACT3Q,EAAK,qBAAqB,EAC5B,EA6BAiL,iBACAoH,aA5BmB,CAAC5H,EAAO6H,KACvBzM,EAAM2K,MAAM8B,GAAOH,UACrBnB,EAAW5M,MAAQkO,EACY,OAA3BvB,IACF/E,aAAa+E,GACbA,EAAyB,MAE7B,EAsBAwB,aApBmB,CAAC9H,EAAO6H,KACvBzM,EAAM2K,MAAM8B,GAAOH,UACrBpB,EAAyBvJ,OAAO8E,YAAW,KACzC0E,EAAW5M,OAAS,EACpB2M,EAAyB,IAAI,GAC5B,KACL,EAgBJ,IAEIyB,GAAe,CAAC,eAAgB,eAAgB,WAChDC,GAAe,CAAEpL,MAAO,aACxBqL,GAAe,CACnBhR,IAAK,EACL2F,MAAO,iBACPC,MAAO,CAAE,cAAe,QAapBqL,GAAe,EAXgB,OAAmB,MAAO,CAC7D7E,MAAO,KACPC,OAAQ,KACR6E,QAAS,mBACR,EACe,OAAmB,OAAQ,CACzCC,EAAG,0EACHC,OAAQ,OACRC,KAAM,YAEN,IA8CEC,GAA8BrN,EAAYyK,GAAa,CAAC,CAAC,SA1C/D,SAAuBrJ,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM6L,GAA0B,QAAiB,gBAAgB,GACjE,OAAO,WAAa,QAAY,KAAY,CAAEC,KAAM,cAAgB,CAClE3C,SAAS,SAAQ,IAAM,EACrB,SAAe,OAAmB,MAAO,CACvC4C,IAAK,KACL9L,OAAO,QAAe,CAAC,uBAAwBN,EAAKwK,UACpDjK,OAAO,QAAeP,EAAKb,SAC1B,GACA,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWa,EAAKyK,wBAAwB,CAACU,EAAMI,MAC3F,WAAa,QAAmB,KAAU,KAAM,CACrDJ,EAAKkB,YAAa,WAAa,QAAmB,MAAO,CACvD1R,IAAK,KAAK4Q,IACVjL,MAAO,eACF,WAAa,QAAmB,MAAO,CAC5C3F,IAAK,KAAK4Q,IACVjL,OAAO,QAAe,CAAC,OAAQ,CAAE,UAAa6K,EAAKC,QAAS,eAAgBD,EAAKmB,YACjFC,aAAeC,GAAWxM,EAAKsL,aAAakB,EAAQjB,GACpDkB,aAAeD,GAAWxM,EAAKwL,aAAagB,EAAQjB,GACpDL,SAAS,SAAesB,GAAWxM,EAAKkL,QAAQC,IAAO,CAAC,OAAQ,aAC/D,EACD,OAAmB,MAAOO,IAAc,QAAgBP,EAAKuB,OAAQ,GACrEvB,EAAKC,UAAW,WAAa,QAAmB,MAAOO,GAAcC,MAAiB,QAAmB,IAAI,GAC7GT,EAAKC,UAAW,WAAa,QAAYc,EAAyB,CAChEvR,IAAK,EACL0C,MAAO2C,EAAKiK,aAAesB,EAC3B9B,MAAO0B,EAAKC,QACZ,aAAa,EACb,aAAc,CAAEtN,EAAGkC,EAAKmK,SAAUnM,EAAGgC,EAAKoK,UAC1CN,UAAW9J,EAAK8J,UAChBoB,QAASlL,EAAKqL,cACb,KAAM,EAAG,CAAC,QAAS,QAAS,aAAc,YAAa,cAAe,QAAmB,IAAI,IAC/F,GAAII,MACN,OACD,OACH,GAAI,CACL,CAAC,KAAOzL,EAAKsJ,iBAGjBqD,EAAG,GAEP,KAEMC,GAAc,CAAC,EACfC,GAAe,CACnBC,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAsBfe,GAAe,EApBgB,OAAmB,OAAQ,CAC9DhB,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,SAAU,CAChEgB,GAAI,KACJC,GAAI,KACJrK,EAAG,KACF,MAAO,IAC2B,OAAmB,SAAU,CAChEoK,GAAI,KACJC,GAAI,KACJrK,EAAG,KACF,MAAO,IAC2B,OAAmB,SAAU,CAChEoK,GAAI,KACJC,GAAI,IACJrK,EAAG,KACF,MAAO,IAUJsK,GAA+BtO,EAAYgO,GAAa,CAAC,CAAC,SAHhE,SAAuB5M,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAO4M,GAAcE,GAC9D,KAEMI,IAAc,QAAgB,CAClCrO,MAAO,CACLsO,KAAM,CACJ7D,KAAMvI,OACN0I,UAAU,GAEZ2D,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM,UAAE5B,GAAcF,IAChBsQ,GAAc,QAAO,eACrB7J,GAAK,QAAI,MACT8J,GAAc,SAAS,IAAMzO,EAAMuO,KAAKG,gBAAkB,IAC1DhD,GAAU,SAAS,KAAM,CAC7B,UAAW1L,EAAMuO,KAAKI,QACtB,YAAa3O,EAAMuO,KAAKI,QACxB,cAAeF,EAAYlQ,UAEvBqQ,GAAgB,SACpB,IAAM5O,EAAMuO,KAAKM,WAA4C,IAA/B7O,EAAMuO,KAAKG,kBAA0B1O,EAAMuO,KAAKI,UAAY3O,EAAMuO,KAAKO,QAQjGC,EAAW,KACXpK,EAAGpG,OACLH,EAAUG,MAAMyQ,MAAMC,gBAAgBlU,QAAQ,CAAEwT,KAAMvO,EAAMuO,KAAM5J,GAAIA,EAAGpG,OAC3E,EAUF,OAFA,QAAUwQ,IACV,QAAUA,GACH,CAAEpK,KAAI8J,cAAa/C,UAASkD,gBAAeM,WAnB/B,KACjBV,EAAYxO,EAAMuO,KAAK,EAkBqCY,SAhB7C,KACfX,OAAY,EAAO,EAemDY,YARpD,KAClB,MAAMC,EAAUjR,EAAUG,MAAM+Q,eAAeD,QAC/CA,EAAQE,OAASvP,EAAMsO,KAAKkB,GAC5BH,EAAQI,WAAazP,EAAMuO,KAAKlB,KAChCgC,EAAQK,SAAU,CAAI,EAK1B,IAEIC,GAAe,CAAC,MAChBC,GAAe,CACnB/T,IAAK,EACL2F,MAAO,gBAwBHqO,GAAgC/P,EAAYuO,GAAa,CAAC,CAAC,SAtBjE,SAAuBnN,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,CAC5CiO,GAAItO,EAAKqN,KAAKiB,GACdlC,IAAK,KACL9L,OAAO,QAAe,CAAC,yBAA0BN,EAAKwK,WACrD,CACDxK,EAAKqN,KAAKO,OAAQ,WAAa,QAAmB,MAAO,CACvDjT,IAAK,EACL2F,MAAO,SACPsO,cAAe3O,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKgO,YAAchO,EAAKgO,cAAchL,IAC5F6L,aAAc5O,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKiO,UAAYjO,EAAKiO,YAAYjL,KACtF,KAAM,MAAO,QAAmB,IAAI,GACvChD,EAAK0N,gBAAiB,WAAa,SAAY,QAAwB1N,EAAKqN,KAAKM,WAAY,CAC3FhT,IAAK,EACL2O,WAAYtJ,EAAKqN,KAAKhQ,MACtB,sBAAuB4C,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKqN,KAAKhQ,MAAQmP,GAC/EY,KAAMpN,EAAKoN,KACXC,KAAMrN,EAAKqN,KACXyB,cAAe9O,EAAKkO,aACnB,KAAM,GAAI,CAAC,aAAc,OAAQ,OAAQ,qBAAsB,WAAa,QAAmB,OAAQQ,IAAc,QAAgB1O,EAAKqN,KAAKlB,MAAO,KACxJ,GAAIsC,GACT,KAEMM,GAAe,CAAC,KAAM,kBACtBC,GAAe,CAAC,iBAChBC,GAAe,CAAE3O,MAAO,iBACxB4O,GAAe,CAAE5O,MAAO,UACxB6O,GAAe,CAAC,aAChBC,GAAe,CAAE9O,MAAO,aACxB+O,GAAe,CAAE/O,MAAO,aACxBgP,GAAe,CAAEhP,MAAO,YACxBiP,IAA8B,QAAgB,CAClDC,OAAQ,OACR1Q,MAAO,CACLsO,KAAM,KACNqC,SAAU,CAAElG,KAAM3D,QAAS4D,SAAS,IAEtCO,MAAO,CAAC,UACR7K,MAAMwQ,GAAS,KAAEzW,IACf,MAAM6F,EAAQ4Q,GACR,UAAExS,GAAcF,KAChB,MAAEI,EAAK,YAAEE,GAAgBH,IACzBwS,EAAWpS,GAAY,QAAMuB,EAAMsO,KAAM,aACzC3J,GAAK,QAAI,MACTmM,GAAW,SAAI,GACfC,GAAW,QAAI,IACfC,GAAgB,QAAI,MACpBC,GAAkB,SAAI,GACtBC,GAAmB,SAAS,KAChC,MAAMvG,EAAQ,CACZ,CAAEpM,MAAO,SAAUqP,MAAO,UAC1B,CAAErP,MAAO,SAAUqP,MAAO,WAK5B,OAHI5N,EAAMsO,KAAK7D,KAAK3N,WAAW,OAC7B6N,EAAMtP,KAAK,CAAEkD,MAAO,eAAgBqP,MAAO,kBAEtCjD,CAAK,IAERe,GAAU,SAAS,KAAM,CAC7B,aAAc1L,EAAM2Q,SACpB,aAAcE,EAAShS,SAASN,MAChC,iBAAkByB,EAAMsO,KAAK6C,cAEzB9Q,GAAS,SAAS,KACtB,IAAIuD,EAAK3H,EACT,MAAO,CACLuP,IAAK,IAAmC,OAA9B5H,EAAM5D,EAAMsO,KAAK8C,eAAoB,EAASxN,EAAI1E,IAAM,MAClEuM,KAAM,IAAkC,OAA7BxP,EAAK+D,EAAMsO,KAAK8C,eAAoB,EAASnV,EAAG+C,IAAM,MACjEiJ,MAAO,GAAGjI,EAAMsO,KAAKrG,OAAS,QAC/B,IAEGoJ,GAAkB,SAAS,IAAMnP,OAAOrH,OAAOmF,EAAMsO,KAAKgD,QAAQzK,QAAQ0K,IAAQA,EAAGC,WACrFC,GAAmB,SAAS,IAAMvP,OAAOrH,OAAOmF,EAAMsO,KAAKoD,SAAS7K,QAAQ0K,IAAQA,EAAGC,WACvFG,EAAS,KACbxX,EAAK,SAAS,EAEVyX,EAAa7S,IACjB8R,EAAS/R,cAAcC,GACvBgH,SAAShB,iBAAiB,cAAe8L,EAASzR,eAClD2G,SAAShB,iBAAiB,YAAa8M,GACvCF,GAAQ,EAEJE,EAAW,KACfhB,EAASrR,cACTuG,SAASf,oBAAoB,cAAe6L,EAASzR,eACrD2G,SAASf,oBAAoB,YAAa6M,EAAS,EAE/CC,EAAkB,KACtBb,EAAgB1S,OAAQ,CAAI,EAExBwT,EAAqBC,MAAOC,IAChC,IAAIrO,EACJ,OAAQqO,GACN,IAAK,SACH3T,EAAMC,MAAM2T,WAAWlS,EAAMsO,MAC7B,MACF,IAAK,SACHyC,EAASxS,MAAQyB,EAAMsO,KAAK6D,MAC5BrB,EAASvS,OAAQ,QACX,UACyB,OAA9BqF,EAAMoN,EAAczS,QAA0BqF,EAAIwO,QACnD,MACF,IAAK,eACH5T,EAAYwB,EAAMsO,KAAK+D,UAE3B,EAEIC,EAAe,KACnBtS,EAAMsO,KAAK6D,MAAQpB,EAASxS,MAC5BuS,EAASvS,OAAQ,CAAK,EAElBwQ,EAAW,KACXpK,EAAGpG,OACLH,EAAUG,MAAMyQ,MAAMuD,WAAWxX,QAAQ,CAAEuT,KAAMtO,EAAMsO,KAAM3J,GAAIA,EAAGpG,OACtE,EAIF,OAFA,QAAUwQ,IACV,QAAUA,GACH,CAAC7N,EAAMC,MACL,WAAa,QAAmB,MAAO,CAC5CqO,GAAIoB,EAAQtC,KAAKkB,GACjBgD,QAAS,KACTlF,IAAK3I,EACLnD,OAAO,QAAe,CAAC,gBAAgB,QAAMkK,KAC7CjK,OAAO,SAAe,QAAMpB,IAC5B,iBAAkBuQ,EAAQtC,KAAK7D,KAC/BgI,cAAed,GACd,EACD,OAAmB,MAAO,CACxBnQ,MAAO,UACPiR,eAAe,QAAcb,EAAW,CAAC,OAAQ,UAChD,CACAd,EAASvS,OAgBA,UAAgB,WAAa,QAAmB,QAAS,CACjE1C,IAAK,EACL2W,QAAS,gBACTlF,IAAK0D,EACL,sBAAuB7P,EAAO,KAAOA,EAAO,GAAMuM,GAAWqD,EAASxS,MAAQmP,GAC9EjD,KAAM,OACNjJ,MAAO,gBACPkR,YAAa,YACbC,OAAQL,EACRM,WAAW,QAASN,EAAc,CAAC,WAClC,KAAM,GAAIjC,KAAgB,CAC3B,CAAC,KAAYU,EAASxS,WA3BL,WAAa,QAAmB,KAAU,CAAE1C,IAAK,GAAK,EACvE,OAAmB,MAAOsU,IAAc,QAAgBS,EAAQtC,KAAK6D,OAAQ,IAC7E,OAAmB,MAAO/B,GAAc,EACtC,QAAYhC,GAAc,CACxB5M,MAAO,cACP4K,QAAS0F,KAEX,QAAY3E,GAAa,CACvB3C,WAAYyG,EAAgB1S,MAC5B,sBAAuB4C,EAAO,KAAOA,EAAO,GAAMuM,GAAWuD,EAAgB1S,MAAQmP,GACrF1O,EAAG,EACHE,EAAG,EACHyL,OAAO,QAAMuG,GACb9E,QAAS2F,GACR,KAAM,EAAG,CAAC,aAAc,aAE5B,MAaF,GAAI7B,KACP,OAAmB,MAAOI,GAAc,EACtC,OAAmB,MAAOC,GAAc,GACrC,SAAU,IAAO,QAAmB,KAAU,MAAM,SAAW,QAAMkB,IAAoBoB,KACjF,WAAa,QAAYhD,GAAe,CAC7ChU,IAAKgX,EAAOrD,GACZlB,KAAMsC,EAAQtC,KACdC,KAAMsE,GACL,KAAM,EAAG,CAAC,OAAQ,YACnB,SAEN,OAAmB,MAAOrC,GAAc,GACrC,SAAU,IAAO,QAAmB,KAAU,MAAM,SAAW,QAAMa,IAAmByB,KAChF,WAAa,QAAYjD,GAAe,CAC7ChU,IAAKiX,EAAMtD,GACXlB,KAAMsC,EAAQtC,KACdC,KAAMuE,GACL,KAAM,EAAG,CAAC,OAAQ,YACnB,WAGP,GAAI7C,IAEX,IAEI8C,IAAc,QAAgB,CAClC/S,MAAO,CACLgT,GAAI,CACFvI,KAAMI,OACND,UAAU,GAEZqI,GAAI,CACFxI,KAAMI,OACND,UAAU,GAEZsI,GAAI,CACFzI,KAAMI,OACND,UAAU,GAEZuI,GAAI,CACF1I,KAAMI,OACND,UAAU,GAEZwI,MAAO,CACL3I,KAAMI,OACNH,QAAS9K,EAAyByT,MAEpCC,YAAa,CACX7I,KAAM3D,QACN4D,SAAS,IAGbtK,MAAMJ,GACJ,MAAM,UAAE5B,GAAcF,KAChB,MAAEI,GAAUD,IACZqB,EAAY,CAACV,EAAGE,IAGb,EAFKF,EAAIV,EAAMC,MAAMoB,QAAQX,GAAKV,EAAMC,MAAMgB,SACzCL,EAAIZ,EAAMC,MAAMoB,QAAQT,GAAKZ,EAAMC,MAAMgB,SAkBvD,MAAO,CAAEyN,GAfC,SAAS,KACjB,MAAOuG,EAAKC,GAAO9T,EAAUM,EAAMgT,GAAIhT,EAAMiT,KACtCQ,EAAKC,GAAOhU,EAAUM,EAAMkT,GAAIlT,EAAMmT,IAC7C,GAAI/U,EAAUG,MAAMgC,SAASoT,uBAC3B,MAAO,KAAKJ,KAAOC,OAASC,KAAOC,IAC9B,CACL,MAAMrU,EAAK,GAAMuU,KAAKC,IAAIN,EAAME,GAChC,MAAO,KAAKF,KAAOC,OAASD,EAAMlU,KAAMmU,MAAQC,EAAMpU,KAAMqU,MAAQD,KAAOC,GAC7E,KAOUhI,SALI,SAAS,KAAM,CAC7B,cAAe1L,EAAMsT,YACrB,YAAatT,EAAMoT,QAAUxT,EAAyBkU,QACtD,cAAe9T,EAAMoT,QAAUxT,EAAyBmU,cAG5D,IAEIC,GAAe,CAAC,KAOhBC,GAAiCnU,EAAYiT,GAAa,CAAC,CAAC,SANlE,SAAuB7R,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,OAAQ,CAC7CC,OAAO,QAAe,CAAC,qBAAsBN,EAAKwK,UAClDsB,EAAG9L,EAAK8L,GACP,KAAM,GAAIgH,GACf,KAKA,SAASE,GAAe3C,GACtB,MAAM4C,EAAepO,SAASqO,eAAe7C,EAAG/B,IAC1C6E,EAA0B,MAAhBF,OAAuB,EAASA,EAAaG,uBAAuB,UACpF,MAAO,CACLhG,MAAuB,MAAhB6F,OAAuB,EAASA,EAAaI,QAAQ,mBAAqB,KACjFC,UAAWL,EACXrF,KAAMuF,GAAWA,EAAQ5P,OAAS,EAAI4P,EAAQ,GAAK,KAEvD,CA2EA,MAAMI,GAAoC3U,GA1EtB,QAAgB,CAClC4U,WAAY,CACV,kBAAmBT,IAErBjU,MAAO,CACL2U,WAAY,CACVlK,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM,MAAE1B,GAAUD,IAClB,IAAIuW,EACJ,MAAM5H,GAAI,QAAI,CAAEgG,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAGC,GAAI,IACnCC,GAAQ,SACZ,IAAMpT,EAAM2U,WAAWE,WAAajV,EAAyBmU,UAAYnU,EAAyByT,OAE9FyB,GAAmB,SAAS,KAChC,IAAIlR,EACJ,OAAyE,OAAjEA,EAAMtF,EAAMC,MAAMwW,aAAa/U,EAAM2U,WAAW/Z,KAAK2U,cAAmB,EAAS3L,EAAIwN,QAAQ,IAEjG4D,GAAiB,SAAS,KAC9B,IAAIpR,EACJ,OAAuE,OAA/DA,EAAMtF,EAAMC,MAAMwW,aAAa/U,EAAM2U,WAAWM,GAAG1F,cAAmB,EAAS3L,EAAIwN,QAAQ,IAE/F8D,EAAuBC,GACvBA,EAAS7G,MAAQ6G,EAASX,WAAaW,EAASrG,KAC3C,CACLqG,EAAS7G,KAAK8G,WAAaD,EAASX,UAAUY,WAAaD,EAASrG,KAAKsG,WAAaD,EAASrG,KAAKuG,YAAc,EAClHF,EAAS7G,KAAKgH,UAAYH,EAASX,UAAUc,UAAYH,EAASrG,KAAKwG,UAAYH,EAASrG,KAAKyG,aAAe,GAG3G,CAAC,EAAG,GAGTC,EAAe,KACnB,MAAM5a,EAAOsZ,GAAelU,EAAM2U,WAAW/Z,MACvCqa,EAAKf,GAAelU,EAAM2U,WAAWM,IACvCra,EAAK0T,MAAQ2G,EAAG3G,OACbsG,IACHA,EAAiB,IAAIa,gBAAe,KAClCD,GAAc,IAEhBZ,EAAec,QAAQ9a,EAAK0T,MAC5BsG,EAAec,QAAQT,EAAG3G,QAG9B,MAAO0E,EAAIC,GAAMiC,EAAoBta,IAC9BsY,EAAIC,GAAM+B,EAAoBD,GACrCjI,EAAEzO,MAAQ,CAAEyU,KAAIC,KAAIC,KAAIC,KAAI,EAY9B,OAVA,SAAUnB,gBACF,UACNwD,GAAc,KAEhB,SAAgB,KACVZ,GACFA,EAAee,YACjB,KAEF,QAAM,CAACb,EAAkBE,IAAiB,IAAMQ,KAAgB,CAAEI,MAAM,IACjE,CAAE5I,IAAGoG,QACd,IAYiE,CAAC,CAAC,SAVrE,SAAuBlS,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMsU,GAA6B,QAAiB,mBACpD,OAAO,WAAa,QAAYA,EAA4B,CAC1D7C,GAAI9R,EAAK8L,EAAEgG,GACXC,GAAI/R,EAAK8L,EAAEiG,GACXC,GAAIhS,EAAK8L,EAAEkG,GACXC,GAAIjS,EAAK8L,EAAEmG,GACXC,MAAOlS,EAAKkS,OACX,KAAM,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,SACvC,KAEA,SAAS0C,GAAmBX,GAC1B,OAAIA,EAAS7G,MAAQ6G,EAASX,WAAaW,EAASrG,KAC3C,CACLqG,EAAS7G,KAAK8G,WAAaD,EAASX,UAAUY,WAAaD,EAASrG,KAAKsG,WAAaD,EAASrG,KAAKuG,YAAc,EAClHF,EAAS7G,KAAKgH,UAAYH,EAASX,UAAUc,UAAYH,EAASrG,KAAKwG,UAAYH,EAASrG,KAAKyG,aAAe,GAG3G,CAAC,EAAG,EAEf,CAgDA,MAAMQ,GAAsCjW,GA/CxB,QAAgB,CAClC4U,WAAY,CACV,kBAAmBT,IAErBjU,MAAO,CACL2U,WAAY,CACVlK,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAMgW,GAAS,SAAS,IAAMhW,EAAM2U,WAAa3U,EAAM2U,WAAWqB,OAASpW,EAAyByT,OAsBpG,MAAO,CAAErG,GArBC,SAAS,KACjB,IAAKhN,EAAM2U,WACT,MAAO,CACL7B,MAAO,CAAC,EAAG,GACXD,OAAQ,CAAC,EAAG,IAGhB,MAAMoD,EAAQH,GAAmB5B,GAAelU,EAAM2U,WAAW/Z,OAC3Dsb,EAAMlW,EAAM2U,WAAWM,GAAKa,GAAmB5B,GAAelU,EAAM2U,WAAWM,KAAO,CAACjV,EAAM2U,WAAWwB,IAAMF,EAAM,GAAIjW,EAAM2U,WAAWyB,IAAMH,EAAM,IAC3J,OAAIjW,EAAM2U,WAAW/Z,KAAK+T,QACjB,CACLmE,MAAOoD,EACPrD,OAAQoD,GAGH,CACLnD,MAAOmD,EACPpD,OAAQqD,EAEZ,IAEUF,SACd,IAamE,CAAC,CAAC,SAXvE,SAAuB9U,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMsU,GAA6B,QAAiB,mBACpD,OAAO,WAAa,QAAYA,EAA4B,CAC1D7C,GAAI9R,EAAK8L,EAAE8F,MAAM,GACjBG,GAAI/R,EAAK8L,EAAE8F,MAAM,GACjBI,GAAIhS,EAAK8L,EAAE6F,OAAO,GAClBM,GAAIjS,EAAK8L,EAAE6F,OAAO,GAClBO,MAAOlS,EAAK8U,OACZ,eAAgB,IACf,KAAM,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,SACvC,KAEMK,IAAc,QAAgB,CAClCjW,QACE,MAAM,MAAE9B,GAAUD,IACZsG,GAAK,QAAI,MACTsD,GAAQ,QAAI,KACZqG,GAAO,SAAS,KACpB,MAAMkB,EAAKlR,EAAMC,MAAM8Q,QAAQE,OAC/B,OAAOjR,EAAMC,MAAM+X,MAAMC,MAAMvX,GAAMA,EAAEwQ,KAAOA,GAAG,IAE7CnP,GAAS,SAAS,KAAM,CAC5B4H,MAAO,GAAGA,EAAM1J,cAEZiY,GAAsB,SAAS,IAC9BlI,EAAK/P,MAGO,IAAI2D,OAAOrH,OAAOyT,EAAK/P,MAAM+S,WAAYpP,OAAOrH,OAAOyT,EAAK/P,MAAMmT,UACnE7K,QAAQ0H,GAASA,EAAKkI,kBAAoBlI,EAAKM,YAHtD,KAkBL6H,EAAe9R,IACnB,IAAIhB,EAAK3H,EACT,MAAM0a,GAA4E,OAA/D1a,EAAyB,OAAnB2H,EAAMe,EAAGpG,YAAiB,EAASqF,EAAIoI,oBAAyB,EAAS/P,EAAG2a,wBAAwB3O,QAAU,IACvIA,EAAM1J,OAASqG,EAAMiS,UACjB5O,EAAM1J,MAAQ,IAChB0J,EAAM1J,MAAQ,IACL0J,EAAM1J,MAAQ,GAAMoY,IAC7B1O,EAAM1J,MAAQ,GAAMoY,EACtB,EAEF,MAAO,CAAEhS,KAAIrG,QAAOgQ,OAAMjO,SAAQmW,sBAAqBM,YApBnC,KAClBnV,OAAOoD,iBAAiB,YAAa2R,GACrC/U,OAAOoD,iBACL,WACA,KACEpD,OAAOqD,oBAAoB,YAAa0R,EAAY,GAEtD,CAAEK,MAAM,GACT,EAYiEC,MAvBtD,KACZ1Y,EAAMC,MAAM8Q,QAAQK,SAAU,CAAK,EAuBvC,IAEIuH,GAAe,CAAEzV,MAAO,YACxB0V,GAAe,CAAE1V,MAAO,eAoCxB2V,GAA0BrX,EAAYuW,GAAa,CAAC,CAAC,SAnC3D,SAAuBnV,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,CAC5C+L,IAAK,KACL9L,OAAO,QAAe,CAAC,kBAAmB,CAAE,SAAUN,EAAK5C,MAAM+Q,QAAQK,WACzEjO,OAAO,QAAeP,EAAKb,SAC1B,EACD,OAAmB,MAAO,CACxBmB,MAAO,YACP4V,YAAajW,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK4V,aAAe5V,EAAK4V,eAAe5S,KAC3F,KAAM,KACT,OAAmB,MAAO+S,GAAc,EACtC,OAAmB,SAAU,CAC3BI,SAAU,KACV7V,MAAO,UACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK8V,OAAS9V,EAAK8V,SAAS9S,KAC3E,QACH,OAAmB,MAAOgT,GAAc,EACtC,OAAmB,IAAK,MAAM,QAAgBhW,EAAKoN,KAAOpN,EAAKoN,KAAK6D,MAAQ,IAAK,SAGpF,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWjR,EAAKsV,qBAAsBjI,KAClF,WAAa,QAAmB,MAAO,CAC5C1S,IAAK0S,EAAKiB,GACVhO,MAAO,eACN,GACA,WAAa,SAAY,QAAwB+M,EAAKM,WAAY,CACjErE,WAAY+D,EAAKhQ,MACjB,sBAAwBmP,GAAWa,EAAKhQ,MAAQmP,EAChDY,KAAMpN,EAAKoN,KACXC,QACC,KAAM,EAAG,CAAC,aAAc,sBAAuB,OAAQ,eAE1D,OACH,EACL,KAmLM+I,GAA0BxX,GAjLZ,QAAgB,CAClCM,QACE,MAAM,UAAEhC,GAAcF,KAChB,MAAEI,GAAUD,IACZkZ,GAAS,QAAI,MACbC,GAAiB,SAAI,GAC3B,IAAIC,EACA5Y,GAAW,EACX6Y,EAAS,CAAE1E,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAGC,GAAI,GACxC,MAkFMwE,EAAuB,CAACC,EAAOC,IAC5B,EACJD,EAAQF,EAAO1E,KAAO0E,EAAOxE,GAAKwE,EAAO1E,IAAMyE,EAAIF,OAAOlC,aAC1DwC,EAAQH,EAAOzE,KAAOyE,EAAOvE,GAAKuE,EAAOzE,IAAMwE,EAAIF,OAAOhC,cASzDuC,EAAgBC,IACpB,GAAIA,EAAY,CACd,MAAMC,EAAUD,EAAWE,cAAc,cACzC,GAAID,EAAS,CACX,MAAME,EAAeC,EAAiBH,GACtC,GAAIE,EACF,OAAOA,CAEX,CACA,MAAME,EAAYD,EAAiBJ,GACnC,GAAIK,EACF,OAAOA,CAEX,CACA,MAAO,MAAM,EAETD,EAAoBJ,IACxB,MAAMM,EAAIC,iBAAiBP,GAAYQ,gBACvC,GAAIF,GAAW,qBAANA,EACP,OAAOA,CACT,EAEIG,EAAgB,KACpB,MAAMzM,EAAcwL,EAAOhZ,MAAMyN,cAAcC,YACzCC,EAAeqL,EAAOhZ,MAAMyN,cAAcG,aAC1C+G,EAAKnH,EAAczN,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQX,EAC7DmU,EAAKjH,EAAe5N,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQT,EACpE,MAAO,CAAE8T,IAAK1U,EAAMC,MAAMoB,QAAQX,EAAGiU,IAAK3U,EAAMC,MAAMoB,QAAQT,EAAGgU,KAAIC,KAAI,EAQrEsF,EAAa1Z,IACjB,GAAIF,EAAU,CACZ,MAAOqP,EAAIC,IA3CWuK,EA2CY3Z,EAAG4Z,QA3CRC,EA2CiB7Z,EAAG8Z,QA1C5C,CACLH,GAAShB,EAAOxE,GAAKwE,EAAO1E,IAAMyE,EAAIF,OAAOlC,YAAcqC,EAAO1E,GAClE4F,GAASlB,EAAOvE,GAAKuE,EAAOzE,IAAMwE,EAAIF,OAAOhC,aAAemC,EAAOzE,KAyC7D6F,EAAaN,IACbnZ,GAAMyZ,EAAW9F,GAAK8F,EAAW5F,IAAM,EACvC5T,GAAMwZ,EAAW7F,GAAK6F,EAAW3F,IAAM,EAC7C7U,EAAMC,MAAMoB,QAAQX,IAAMkP,EAAK7O,GAC/Bf,EAAMC,MAAMoB,QAAQT,IAAMiP,EAAK7O,EACjC,CAjDuB,IAACoZ,EAAOE,CAiD/B,EAEIG,EAAU,KACdla,GAAW,CAAK,EAclB,OALA,SAAU,KACR4Y,EAAMF,EAAOhZ,MAAMya,WAAW,MAC9BvB,EAAIwB,sBAAwB,OAvJT,MACnB,IAAIrV,EAAK3H,EACT,IAAKwb,EACH,OAEF,MAAMyB,EAA6B,IAAIzd,IACjC0d,EAAkC,IAAI1d,IAC5C,IAAK,MAAM2d,KAAK9a,EAAMC,MAAM+X,MAAO,CACjC,MAAMyB,GArPezJ,EAqPkB8K,EApPtCrT,SAASqO,eAAe9F,EAAKkB,KAqPxBvH,GAAuB,MAAd8P,OAAqB,EAASA,EAAW1C,cAAgB,EAClEnN,GAAwB,MAAd6P,OAAqB,EAASA,EAAWxC,eAAiB,EACpE8D,GAA8B,OAArBzV,EAAMwV,EAAEhI,eAAoB,EAASxN,EAAI5E,IAAM,EACxDsa,GAA6B,OAApBrd,EAAKmd,EAAEhI,eAAoB,EAASnV,EAAGiD,IAAM,EAC5Dga,EAAWlc,IAAIoc,EAAG,CAChBpG,GAAIqG,EACJpG,GAAIqG,EACJpG,GAAImG,EAAOpR,EACXkL,GAAImG,EAAOpR,IAEbiR,EAAgBnc,IAAIoc,EAAGrB,EACzB,CAjQN,IAA6BzJ,EAkQvB,MAAMiL,EAAY,CAChBvG,GAAInI,OAAO2O,iBACXvG,GAAIpI,OAAO2O,iBACXtG,GAAIrI,OAAO4O,iBACXtG,GAAItI,OAAO4O,kBAEb,IAAK,MAAMC,KAAMR,EAAWre,SACtB6e,EAAG1G,GAAKuG,EAAUvG,KACpBuG,EAAUvG,GAAK0G,EAAG1G,IAEhB0G,EAAGzG,GAAKsG,EAAUtG,KACpBsG,EAAUtG,GAAKyG,EAAGzG,IAEhByG,EAAGxG,GAAKqG,EAAUrG,KACpBqG,EAAUrG,GAAKwG,EAAGxG,IAEhBwG,EAAGvG,GAAKoG,EAAUpG,KACpBoG,EAAUpG,GAAKuG,EAAGvG,IAItBoG,EAAUvG,IADM,GAEhBuG,EAAUtG,IAFM,GAGhBsG,EAAUrG,IAHM,GAIhBqG,EAAUpG,IAJM,GAKhBuE,EAAS6B,EACT9B,EAAIkC,UAAU,EAAG,EAAGlC,EAAIF,OAAOtP,MAAOwP,EAAIF,OAAOrP,QACjDuP,EAAImC,YAAc,QAClB,IAAK,MAAMvB,KAAK/Z,EAAMC,MAAMsb,YAAa,CACvC,MAAOC,EAAQC,GAAUjE,GAAmB5B,GAAemE,EAAEzd,QACtDof,EAAQC,GAAUnE,GAAmB5B,GAAemE,EAAEpD,MACtDjC,EAAIC,GAAM0E,EAAqBmC,EAAQC,IACvC7G,EAAIC,GAAMwE,EAAqBqC,EAAQC,GAG9C,GAFAxC,EAAIyC,YACJzC,EAAI0C,OAAOnH,EAAIC,GACX7U,EAAUG,MAAMgC,SAASoT,uBAC3B8D,EAAI2C,OAAOlH,EAAIC,OACV,CACL,MAAM9T,EAAK,GAAMuU,KAAKC,IAAIb,EAAKE,GAC/BuE,EAAI4C,cAAcrH,EAAK3T,EAAI4T,EAAIC,EAAK7T,EAAI8T,EAAID,EAAIC,EAClD,CACAsE,EAAIxK,QACN,CACAwK,EAAImC,YAAc,YAClB,IAAK,MAAOR,EAAGM,KAAOR,EAAWoB,UAAW,CAC1C,MAAOtH,EAAIC,GAAM0E,EAAqB+B,EAAG1G,GAAI0G,EAAGzG,KACzCC,EAAIC,GAAMwE,EAAqB+B,EAAGxG,GAAIwG,EAAGvG,IAChDsE,EAAI8C,UAAYzC,EAAaqB,EAAgBjd,IAAIkd,IACjD3B,EAAIyC,YACJzC,EAAI+C,KAAKxH,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,GAC/BwE,EAAIvK,OACJuK,EAAIxK,QACN,CACA,GAAIuK,EAAejZ,MAAO,CACxB,MAAMua,EAAaN,KACZxF,EAAIC,GAAM0E,EAAqBmB,EAAW9F,GAAI8F,EAAW7F,KACzDC,EAAIC,GAAMwE,EAAqBmB,EAAW5F,GAAI4F,EAAW3F,IAChEsE,EAAI8C,UAAY,2BAChB9C,EAAIgD,SAASzH,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,EACrC,GAwEAyH,EAAc,IAET,CAAEnD,SAAQC,iBAAgBmD,UA/Bd5b,IACC,IAAdA,EAAGwH,SACL1H,GAAW,EACX4Z,EAAU1Z,GACZ,EA2B0C0Z,YAAWM,UAAS6B,WAZ7C,KACjBpD,EAAejZ,OAAQ,CAAI,EAW+Csc,WATzD,KACjBrD,EAAejZ,OAAQ,EACvBwa,GAAS,EAQb,IAauD,CAAC,CAAC,SAX3D,SAAuB7X,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,SAAU,CAC/C+L,IAAK,SACL9L,MAAO,kBACPiM,aAActM,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK0Z,YAAc1Z,EAAK0Z,cAAc1W,IAC3FyJ,aAAcxM,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK2Z,YAAc3Z,EAAK2Z,cAAc3W,IAC3FkT,YAAajW,EAAO,KAAOA,EAAO,IAAK,SAAc,IAAI+C,IAAShD,EAAKyZ,WAAazZ,EAAKyZ,aAAazW,IAAO,CAAC,UAC9G4W,YAAa3Z,EAAO,KAAOA,EAAO,IAAK,SAAc,IAAI+C,IAAShD,EAAKuX,WAAavX,EAAKuX,aAAavU,IAAO,CAAC,UAC9G6W,UAAW5Z,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK6X,SAAW7X,EAAK6X,WAAW7U,KACjF,KAAM,IACX,KAEM8W,IAAc,QAAgB,CAClCtG,WAAY,CAAEvH,eAAaiB,iBAC3BpO,MAAO,CACLyK,KAAM,CACJA,KAAMwQ,OACNrQ,UAAU,GAEZuH,MAAO,CACL1H,KAAMwQ,OACNrQ,UAAU,IAGdxK,MAAMJ,GACJ,MAAM,UAAE5B,GAAcF,KAChB,YAAEM,GAAgBH,IAClB4S,GAAkB,SAAI,GACtBiK,GAAiB,SAAS,IAAMlb,EAAMyK,KAAK3N,WAAW,QAuB5D,MAAO,CAAEmU,kBAAiBiK,iBAAgBhK,iBAtBjB,CACvB,CAAEtD,MAAO,gBAAiBrP,MAAO,gBACjC,CAAEqP,MAAO,kBAAmBrP,MAAO,mBAoBuBuT,gBAlBpC,KACtBb,EAAgB1S,OAAQ,CAAI,EAiB+CwT,mBAfjDE,IAC1B,MAAMkJ,EAAkBnb,EAAMyK,KAAK2Q,UAAU,aACvCC,EAAgBjd,EAAUG,MAAM+c,OAAOC,eAAehF,MAAMiF,GAAOA,EAAGhM,KAAO2L,IACnF,GAAKE,EAGL,OAAQpJ,GACN,IAAK,eACHzT,EAAY6c,GACZ,MACF,IAAK,iBACHjd,EAAUG,MAAM+c,OAAOG,oBAAoBJ,GAE/C,EAGJ,IAEIK,GAAe,CAAC,kBAChBC,GAAe,CAAEna,MAAO,WACxBoa,GAAe,CAAEpa,MAAO,iBACxBqa,GAAe,CACnBhgB,IAAK,EACL2F,MAAO,UAgCHsa,GAA+Bhc,EAAYkb,GAAa,CAAC,CAAC,SA9BhE,SAAuB9Z,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwa,GAA2B,QAAiB,iBAC5C3O,GAA0B,QAAiB,gBACjD,OAAO,WAAa,QAAmB,MAAO,CAC5C5L,MAAO,yBACP,iBAAkBN,EAAKuJ,MACtB,EACD,OAAmB,MAAOkR,GAAc,EACtC,OAAmB,MAAOC,IAAc,QAAgB1a,EAAKiR,OAAQ,GACrEjR,EAAKga,iBAAkB,WAAa,QAAmB,MAAOW,GAAc,EAC1E,QAAYE,EAA0B,CACpCva,MAAO,cACPiR,cAAetR,EAAO,KAAOA,EAAO,IAAK,SAAc,QACpD,CAAC,OAAQ,aACZiL,SAAS,QAAclL,EAAK4Q,gBAAiB,CAAC,OAAQ,aACrD,KAAM,EAAG,CAAC,aACb,QAAY1E,EAAyB,CACnC5C,WAAYtJ,EAAK+P,gBACjB,sBAAuB9P,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAK+P,gBAAkBvD,GACpF1O,GAAI,IACJE,EAAG,EACHyL,MAAOzJ,EAAKgQ,iBACZ9E,QAASlL,EAAK6Q,mBACdU,cAAetR,EAAO,KAAOA,EAAO,IAAK,SAAc,QACpD,CAAC,OAAQ,cACX,KAAM,EAAG,CAAC,aAAc,QAAS,gBAChC,QAAmB,IAAI,MAE9B,EAAGua,GACR,KAEA,IAAIM,GACJ,MAAMC,GAAQ,IAAIC,WAAW,IAC7B,SAASC,KACP,IAAKH,KACHA,GAAoC,oBAAXI,QAA0BA,OAAOJ,iBAAmBI,OAAOJ,gBAAgBK,KAAKD,SACpGJ,IACH,MAAM,IAAI7d,MAAM,4GAGpB,OAAO6d,GAAgBC,GACzB,CACA,MAAMK,GAAY,GAClB,IAAK,IAAIxe,EAAI,EAAGA,EAAI,MAAOA,EACzBwe,GAAUjhB,MAAMyC,EAAI,KAAKye,SAAS,IAAIC,MAAM,IAK9C,MACMC,GAAS,CACbC,WAFmC,oBAAXN,QAA0BA,OAAOM,YAAcN,OAAOM,WAAWL,KAAKD,SAIhG,SAASO,GAAGvY,EAASwY,EAAKC,GACxB,GAAIJ,GAAOC,aAAeE,IAAQxY,EAChC,OAAOqY,GAAOC,aAGhB,MAAMI,GADN1Y,EAAUA,GAAW,CAAC,GACD2Y,SAAW3Y,EAAQ+X,KAAOA,MAG/C,GAFAW,EAAK,GAAe,GAAVA,EAAK,GAAU,GACzBA,EAAK,GAAe,GAAVA,EAAK,GAAU,IACrBF,EAAK,CACPC,EAASA,GAAU,EACnB,IAAK,IAAI/e,EAAI,EAAGA,EAAI,KAAMA,EACxB8e,EAAIC,EAAS/e,GAAKgf,EAAKhf,GAEzB,OAAO8e,CACT,CACA,OAtBF,SAAyBI,EAAKH,EAAS,GACrC,OAAQP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAM,IAAMP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAM,IAAMP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAM,IAAMP,GAAUU,EAAIH,EAAS,IAAMP,GAAUU,EAAIH,EAAS,IAAM,IAAMP,GAAUU,EAAIH,EAAS,KAAOP,GAAUU,EAAIH,EAAS,KAAOP,GAAUU,EAAIH,EAAS,KAAOP,GAAUU,EAAIH,EAAS,KAAOP,GAAUU,EAAIH,EAAS,KAAOP,GAAUU,EAAIH,EAAS,MAAMI,aACvf,CAoBSC,CAAgBJ,EACzB,CACA,MAAMK,IAAc,QAAgB,CAClCnd,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,IAMG,CAAEoM,QALO,KACVpM,EAAMuO,KAAKtT,UACb+E,EAAMuO,KAAKtT,UACb,MAKAmiB,GAAe,CAAC,SAQhBC,GAA2Cvd,EAAYqd,GAAa,CAAC,CAAC,SAP5E,SAAuBjc,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,SAAU,CAC/CC,MAAO,yBACP2Q,MAAOjR,EAAKqN,KAAKlB,KACjBjB,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKkL,SAAWlL,EAAKkL,WAAWlI,MAC/E,QAAgBhD,EAAKqN,KAAKlB,MAAO,EAAG+P,GACzC,KAEA,MAAME,WAAwB,IAC5BvjB,YAAYsT,EAAMpS,GAChBhB,MAAMoT,OAAM,GACZnT,KAAK2U,WAAY,QAAQwO,IACzBnjB,KAAKe,SAAWA,EAChBf,KAAKqjB,SAAQ,EACf,EAEF,MAAMC,IAAc,QAAgB,CAClCxd,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,MAIV6S,GAAe,CAAC,SAChBC,IAA+B,OAAmB,MAAO,CAAElc,MAAO,yBAA2B,EACjF,OAAmB,MAAO,CACxCwM,MAAO,6BACP/F,MAAO,KACPC,OAAQ,KACR6E,QAAS,aACR,EACe,OAAmB,OAAQ,CACzCvL,MAAO,cACPwL,EAAG,uBACHtN,UAAW,0BAGb,GACEie,GAAe,CAAEnc,MAAO,WAWxBoc,GAA6C9d,EAAY0d,GAAa,CAAC,CAAC,SAV9E,SAAuBtc,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,CAC5CC,OAAO,QAAe,CAAC,mBAAoB,CAAE,YAAaN,EAAKqN,KAAKhQ,SACpE4T,MAAOjR,EAAKqN,KAAKlB,KACjBjB,QAASjL,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKqN,KAAKhQ,OAAS2C,EAAKqN,KAAKhQ,QAC3E,CACDmf,IACA,OAAmB,MAAOC,IAAc,QAAgBzc,EAAKqN,KAAKlB,MAAO,IACxE,GAAIoQ,GACT,KAEA,MAAMI,WAA0B,IAC9B9jB,cACEE,SAAS6jB,WACT5jB,KAAK2U,WAAY,QAAQ+O,GAC3B,EAMF,MAAMG,WAA6B,IACjChkB,YAAYsT,EAAM9O,EAAOyf,EAAKC,GAC5BhkB,MAAMoT,EAAM9O,GACZrE,KAAK8jB,IAAMA,EACX9jB,KAAK+jB,IAAMA,CACb,CACAC,SAASC,GACP,QAASjkB,KAAK8jB,KAAOG,GAAKjkB,KAAK8jB,QAAU9jB,KAAK+jB,KAAOE,GAAKjkB,KAAK+jB,IACjE,EAEF,MAAMG,GAA0B,CAAC7P,EAAM8P,EAAY,KACjD,MAAMC,GAAU,QAAI,MACdC,GAAW,SAAI,GACfC,GAAU,SAAI,GACdC,GAAY,QAAI,KAChBC,GAAuB,SAAS,KACpC,MAAMnT,EAAIgD,EAAKhQ,MAAMA,MAAMogB,QAAQN,GACnC,OAAO9S,EAAE9G,OArBa,EAqBgB8J,EAAKhQ,MAAMA,MAAMqgB,cAAcC,GAAyBtT,CAAC,IAE3F2S,EAAYC,IACZtT,OAAOiU,MAAMX,MAvBrB,SAAqB5P,GACnB,MAAO,aAAcA,CACvB,CAuBewQ,CAAYxQ,EAAKhQ,QACnBgQ,EAAKhQ,MAAM2f,SAASC,IAKzBa,EAAYC,IACZf,EAASe,KACX1Q,EAAKhQ,MAAMA,MAAQ0gB,EACrB,EAsBF,OApBA,QAAMR,GAAW,KACfD,EAAQjgB,OAAQ,CAAK,IAmBhB,CACLggB,WACAC,UACAC,YACAH,UACAI,uBACAR,WACAc,WACAE,cAzBoBlN,UACpByM,EAAUlgB,MAAQgQ,EAAKhQ,MAAMA,MAAMogB,QAAQN,GAC3CE,EAAShgB,OAAQ,QACX,UACF+f,EAAQ/f,OACV+f,EAAQ/f,MAAM6T,OAChB,EAoBA+M,cAlBoB,KACpB,MAAMhB,EAAIiB,WAAWX,EAAUlgB,OAC1B2f,EAASC,IAGZa,EAASb,GACTI,EAAShgB,OAAQ,GAHjBigB,EAAQjgB,OAAQ,CAIlB,EAYD,EAEG8gB,GAAc,CAAC,EACfC,GAAe,CACnBtR,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAGfqS,GAAe,EADgB,OAAmB,WAAY,CAAEC,OAAQ,kBAAoB,MAAO,IAOnGC,GAAwB3f,EAAYuf,GAAa,CAAC,CAAC,SAHzD,SAAuBne,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOme,GAAcC,GAC9D,KAEMG,IAAc,QAAgB,CAClChL,WAAY,CACV,UAAW+K,IAEbzf,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM2f,EAAuBvB,IAAwB,QAAMpe,EAAO,QAAS,GAO3E,MAAO,IAAK2f,EAAsBC,UANhB,KAChBD,EAAqBX,SAAShf,EAAMuO,KAAKhQ,MAAQ,EAAE,EAKRshB,UAH3B,KAChBF,EAAqBX,SAAShf,EAAMuO,KAAKhQ,MAAQ,EAAE,EAGvD,IAEIuhB,GAAe,CAAEte,MAAO,qBACxBue,GAAe,CAAC,SAChBC,GAAe,CAAExe,MAAO,WACxBye,GAAe,CACnBpkB,IAAK,EACL2F,MAAO,aA0CH0e,GAA4CpgB,EAAY4f,GAAa,CAAC,CAAC,SAxC7E,SAAuBxe,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM4e,GAAqB,QAAiB,WAC5C,OAAO,WAAa,QAAmB,MAAOL,GAAc,EAC1D,OAAmB,MAAO,CACxBte,MAAO,iBACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK2e,WAAa3e,EAAK2e,aAAa3b,KACnF,EACD,QAAYic,KAEbjf,EAAKqd,WAUC,WAAa,QAAmB,MAAO0B,GAAc,EAC1D,SAAe,OAAmB,QAAS,CACzC3S,IAAK,UACL,sBAAuBnM,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKud,UAAY/Q,GAC9EjD,KAAM,SACNjJ,OAAO,QAAe,CAAC,gBAAiB,CAAE,YAAaN,EAAKsd,WAC5D/c,MAAO,CAAE,aAAc,SACvBkR,OAAQxR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAC3F0O,UAAWzR,EAAO,KAAOA,EAAO,IAAK,SAAS,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAAO,CAAC,YAC9G,KAAM,IAAK,CACZ,CAAC,KAAYhD,EAAKud,kBApBJ,WAAa,QAAmB,MAAO,CACvD5iB,IAAK,EACL2F,MAAO,YACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKge,eAAiBhe,EAAKge,iBAAiBhb,KAC3F,EACD,OAAmB,MAAO,CACxB1C,MAAO,UACP2Q,MAAOjR,EAAKqN,KAAKlB,OAChB,QAAgBnM,EAAKqN,KAAKlB,MAAO,EAAG0S,KACvC,OAAmB,MAAOC,IAAc,QAAgB9e,EAAKwd,sBAAuB,OActF,OAAmB,MAAO,CACxBld,MAAO,iBACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK0e,WAAa1e,EAAK0e,aAAa1b,KACnF,EACD,QAAYic,MAGlB,KAEA,MAAMC,WAAyBrC,GAC7BhkB,cACEE,SAAS6jB,WACT5jB,KAAK2U,WAAY,QAAQqR,GAC3B,CACAhC,SAASC,GACP,OAAOtT,OAAOwV,UAAUlC,IAAMlkB,MAAMikB,SAASC,EAC/C,EAEF,MAAMmC,IAAc,QAAgB,CAClC5L,WAAY,CACV,UAAW+K,IAEbzf,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM2f,EAAuBvB,IAAwB,QAAMpe,EAAO,SAOlE,MAAO,IAAK2f,EAAsBC,UANhB,KAChBD,EAAqBX,SAAShf,EAAMuO,KAAKhQ,MAAQ,GAAI,EAKVshB,UAH3B,KAChBF,EAAqBX,SAAShf,EAAMuO,KAAKhQ,MAAQ,GAAI,EAGzD,IAEIgiB,GAAe,CAAE/e,MAAO,qBACxBgf,GAAe,CAAC,SAChBC,GAAe,CAAEjf,MAAO,WACxBkf,GAAe,CACnB7kB,IAAK,EACL2F,MAAO,aA0CHmf,GAA2C7gB,EAAYwgB,GAAa,CAAC,CAAC,SAxC5E,SAAuBpf,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM4e,GAAqB,QAAiB,WAC5C,OAAO,WAAa,QAAmB,MAAOI,GAAc,EAC1D,OAAmB,MAAO,CACxB/e,MAAO,iBACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK2e,WAAa3e,EAAK2e,aAAa3b,KACnF,EACD,QAAYic,KAEbjf,EAAKqd,WAUC,WAAa,QAAmB,MAAOmC,GAAc,EAC1D,SAAe,OAAmB,QAAS,CACzCpT,IAAK,UACL,sBAAuBnM,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKud,UAAY/Q,GAC9EjD,KAAM,SACNjJ,OAAO,QAAe,CAAC,gBAAiB,CAAE,YAAaN,EAAKsd,WAC5D/c,MAAO,CAAE,aAAc,SACvBkR,OAAQxR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAC3F0O,UAAWzR,EAAO,KAAOA,EAAO,IAAK,SAAS,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAAO,CAAC,YAC9G,KAAM,IAAK,CACZ,CAAC,KAAYhD,EAAKud,kBApBJ,WAAa,QAAmB,MAAO,CACvD5iB,IAAK,EACL2F,MAAO,YACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKge,eAAiBhe,EAAKge,iBAAiBhb,KAC3F,EACD,OAAmB,MAAO,CACxB1C,MAAO,UACP2Q,MAAOjR,EAAKqN,KAAKlB,OAChB,QAAgBnM,EAAKqN,KAAKlB,MAAO,EAAGmT,KACvC,OAAmB,MAAOC,IAAc,QAAgBvf,EAAKwd,sBAAuB,OActF,OAAmB,MAAO,CACxBld,MAAO,iBACP4K,QAASjL,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK0e,WAAa1e,EAAK0e,aAAa1b,KACnF,EACD,QAAYic,MAGlB,KAEA,MAAMS,WAAwB7C,GAC5BhkB,cACEE,SAAS6jB,WACT5jB,KAAK2U,WAAY,QAAQ8R,GAC3B,EAEF,MAAME,IAAc,QAAgB,CAClCnM,WAAY,CACV,UAAW+K,IAEbzf,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM2E,GAAK,QAAI,MACTmc,GAAO,SAAI,GACXC,GAAe,SACnB,IAAM/gB,EAAMuO,KAAK5D,MAAM4L,MACpB4H,GAAmB,iBAANA,EAAiBA,IAAMne,EAAMuO,KAAKhQ,MAAQ4f,EAAE5f,QAAUyB,EAAMuO,KAAKhQ,UAG7EyiB,GAAe,SAAS,IACxBD,EAAaxiB,MACsB,iBAAvBwiB,EAAaxiB,MAAqBwiB,EAAaxiB,MAAQwiB,EAAaxiB,MAAM0iB,KAEjF,KASX,OAHA7b,EAAeT,GAAI,KACjBmc,EAAKviB,OAAQ,CAAK,IAEb,CAAEoG,KAAImc,OAAMC,eAAcC,eAAcE,YAN1B7U,IACnBrM,EAAMuO,KAAKhQ,MAAwB,iBAAT8N,EAAoBA,EAAOA,EAAK9N,KAAK,EAMnE,IAEI4iB,GAAe,CAAC,SAChBC,GAAe,CAAE5f,MAAO,cACxB6f,GAAe,CAAE7f,MAAO,UACxB8f,GAAe,CAAE9f,MAAO,UACxB+f,GAAe,CAAE/f,MAAO,cACxBggB,GAAe,CAAEhgB,MAAO,iBACxBigB,GAAa,CAAC,WAkCdC,GAA2C5hB,EAAY+gB,GAAa,CAAC,CAAC,SAjC5E,SAAuB3f,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM4e,GAAqB,QAAiB,WAC5C,OAAO,WAAa,QAAmB,MAAO,CAC5C7S,IAAK,KACL9L,OAAO,QAAe,CAAC,iBAAkB,CAAE,SAAUN,EAAK4f,QAC1D3O,MAAOjR,EAAKqN,KAAKlB,KACjBjB,QAASjL,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAK4f,MAAQ5f,EAAK4f,OAChE,EACD,OAAmB,MAAOM,GAAc,EACtC,OAAmB,MAAOC,IAAc,QAAgBngB,EAAK8f,cAAe,IAC5E,OAAmB,MAAOM,GAAc,EACtC,QAAYnB,QAGhB,QAAY,KAAY,CAAE9S,KAAM,cAAgB,CAC9C3C,SAAS,SAAQ,IAAM,EACrB,SAAe,OAAmB,MAAO6W,GAAc,EACrD,OAAmB,MAAOC,IAAc,QAAgBtgB,EAAKqN,KAAKlB,MAAO,KACxE,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWnM,EAAKqN,KAAK5D,OAAO,CAAC0B,EAAMvO,MAC/E,WAAa,QAAmB,MAAO,CAC5CjC,IAAKiC,EACL0D,OAAO,QAAe,CAAC,OAAQ,CAAE,WAAY6K,IAASnL,EAAK6f,gBAC3D3U,QAAUsB,GAAWxM,EAAKggB,YAAY7U,KACrC,QAAgC,iBAATA,EAAoBA,EAAOA,EAAK4U,MAAO,GAAIQ,OACnE,OACH,KAAM,CACP,CAAC,KAAOvgB,EAAK4f,WAGjBjT,EAAG,KAEJ,GAAIsT,GACT,KAEA,MAAMQ,WAAwB,IAC5B5nB,YAAYsT,EAAM9O,EAAOoM,GACvB1Q,MAAMoT,EAAM9O,GACZrE,KAAK2U,WAAY,QAAQ6S,IACzBxnB,KAAKyQ,MAAQA,CACf,EAEF,MAAMiX,IAAc,QAAgB,CAClC5hB,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAM2E,GAAK,QAAI,MACTgb,EAAuBvB,IAAwB,QAAMpe,EAAO,SAC5D6hB,GAAW,SAAI,GACfC,GAAc,SAAI,GAClBC,GAAa,SACjB,IAAMnO,KAAKoK,IAAI,IAAKpK,KAAKqK,IAAI,EAAsB,IAAnBje,EAAMuO,KAAKhQ,OAAeyB,EAAMuO,KAAK0P,IAAMje,EAAMuO,KAAKyP,SAgDxF,MAAO,IAAK2B,EAAsBhb,KAAIod,aAAYpH,UA9ChC,KACZgF,EAAqBpB,SAAShgB,QAGlCujB,EAAYvjB,OAAQ,EAAI,EA0CmCwa,QAxC7C,KACV4G,EAAqBpB,SAAShgB,QAG7BsjB,EAAStjB,OACPohB,EAAqBT,gBAE5B4C,EAAYvjB,OAAQ,EACpBsjB,EAAStjB,OAAQ,EAAK,EAgC8Cka,UAhBnD1Z,IACjB,GAAI4gB,EAAqBpB,SAAShgB,MAChC,OAEF,MAAM4f,EAAIvK,KAAKqK,IACbje,EAAMuO,KAAKyP,IACXpK,KAAKoK,IACHhe,EAAMuO,KAAK0P,KACVje,EAAMuO,KAAK0P,IAAMje,EAAMuO,KAAKyP,MAAQjf,EAAG4Z,QAAUhU,EAAGpG,MAAM8W,aAAerV,EAAMuO,KAAKyP,MAGrF8D,EAAYvjB,QACdohB,EAAqBX,SAASb,GAC9B0D,EAAStjB,OAAQ,EACnB,EAE+Esc,WA9B7D9b,IACd4gB,EAAqBpB,SAAShgB,QAG9BujB,EAAYvjB,QACVQ,EAAG4Z,SAAWhU,EAAGpG,MAAM8W,YACzBsK,EAAqBX,SAAShf,EAAMuO,KAAK0P,KAChClf,EAAG4Z,SAAW,GACvBgH,EAAqBX,SAAShf,EAAMuO,KAAKyP,MAG7C8D,EAAYvjB,OAAQ,EACpBsjB,EAAStjB,OAAQ,EAAK,EAmB1B,IAEIyjB,GAAe,CACnBnmB,IAAK,EACL2F,MAAO,aAEHygB,GAAe,CAAEzgB,MAAO,WACxB0gB,GAAe,CAAE1gB,MAAO,WACxB2gB,GAAe,CACnBtmB,IAAK,EACL2F,MAAO,aAiCH4gB,GAA2CtiB,EAAY8hB,GAAa,CAAC,CAAC,SA/B5E,SAAuB1gB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,CAC5C+L,IAAK,KACL9L,OAAO,QAAe,CAAC,iBAAkB,CAAE,wBAAyBN,EAAKqd,YACzE9L,cAAetR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKyZ,WAAazZ,EAAKyZ,aAAazW,IAC1Fme,YAAalhB,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK6X,SAAW7X,EAAK6X,WAAW7U,IACpFoe,cAAenhB,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKuX,WAAavX,EAAKuX,aAAavU,IAC1Fqe,eAAgBphB,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK2Z,YAAc3Z,EAAK2Z,cAAc3W,KAC5F,EACD,OAAmB,MAAO,CACxB1C,MAAO,WACPC,OAAO,QAAe,CAAEwG,MAAO/G,EAAK6gB,WAAa,OAChD,KAAM,GACR7gB,EAAKqd,WAGC,WAAa,QAAmB,MAAO4D,GAAc,EAC1D,SAAe,OAAmB,QAAS,CACzC7U,IAAK,UACL,sBAAuBnM,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKud,UAAY/Q,GAC9EjD,KAAM,SACNjJ,OAAO,QAAe,CAAC,gBAAiB,CAAE,YAAaN,EAAKsd,WAC5D/c,MAAO,CAAE,aAAc,SACvBkR,OAAQxR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAC3F0O,UAAWzR,EAAO,KAAOA,EAAO,IAAK,SAAS,IAAI+C,IAAShD,EAAKie,eAAiBje,EAAKie,iBAAiBjb,IAAO,CAAC,YAC9G,KAAM,IAAK,CACZ,CAAC,KAAYhD,EAAKud,kBAbJ,WAAa,QAAmB,MAAOuD,GAAc,EACrE,OAAmB,MAAOC,IAAc,QAAgB/gB,EAAKqN,KAAKlB,MAAO,IACzE,OAAmB,MAAO6U,IAAc,QAAgBhhB,EAAKwd,sBAAuB,OAcrF,GACL,KAqBM8D,GAAyC1iB,GAX3B,QAAgB,CAClCE,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,MAOwD,CAAC,CAAC,SAH1E,SAAuB1J,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,MAAM,QAAgBL,EAAKqN,KAAKhQ,OAAQ,EACxF,KAEA,MAAMkkB,WAAsB,IAC1B1oB,YAAYsT,EAAM9O,GAChBtE,MAAMoT,EAAM9O,GACZrE,KAAK2U,WAAY,QAAQ2T,IACzBtoB,KAAKqjB,SAAQ,EACf,EAEF,MAAMmF,IAAc,QAAgB,CAClC1iB,MAAO,CACLuO,KAAM,CACJ9D,KAAMvI,OACN0I,UAAU,GAEZJ,WAAY,CACVC,KAAMwQ,OACNrQ,UAAU,IAGdK,MAAO,CAAC,qBACR7K,MAAK,CAACJ,GAAO,KAAE7F,MAON,CAAEgkB,GANC,QAAS,CACjBjiB,IAAK,IAAM8D,EAAMwK,WACjBxN,IAAM2lB,IACJxoB,EAAK,oBAAqBwoB,EAAG,QAM/BC,GAAe,CAAC,cAAe,SAc/BC,GAA8C/iB,EAAY4iB,GAAa,CAAC,CAAC,SAb/E,SAAuBxhB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,MAAO,KAAM,EAClD,SAAe,OAAmB,QAAS,CACzC,sBAAuBJ,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAKid,EAAIzQ,GACtEjD,KAAM,OACNjJ,MAAO,gBACPkR,YAAaxR,EAAKqN,KAAKlB,KACvB8E,MAAOjR,EAAKqN,KAAKlB,MAChB,KAAM,EAAGuV,IAAe,CACzB,CAAC,KAAY1hB,EAAKid,MAGxB,KAEA,MAAM2E,WAA2B,IAC/B/oB,cACEE,SAAS6jB,WACT5jB,KAAK2U,WAAY,QAAQgU,GAC3B,EAEF,MAAME,GAA2B,8BAC3BC,GAA4B,+BAC5BC,IAAoB,OAAW,CACnCxY,KAAMsY,GACN5Q,MAAO,iBACPb,OAAQ,CACNjE,KAAM,IAAM,IAAIyV,GAAmB,OAAQ,SAASvF,SAAQ,IAE9D7L,QAAS,CACPgB,YAAa,IAAM,IAAI,IAAgB,kBAAc,IAEvDwQ,WACEhpB,KAAKipB,iBAAmBxG,IAC1B,IAEIyG,IAAqB,OAAW,CACpC3Y,KAAMuY,GACN7Q,MAAO,kBACPb,OAAQ,CACNjE,KAAM,IAAM,IAAIyV,GAAmB,OAAQ,UAAUvF,SAAQ,GAC7D7K,YAAa,IAAM,IAAI,IAAgB,kBAAc,IAEvDwQ,WACEhpB,KAAKipB,iBAAmBxG,IAC1B,IAEF,SAAS0G,GAAe/H,EAAQgI,EAAcC,GAC5C,IAAKD,EAAajR,SAChB,OAAO,EAET,IAAI,QAAuBiR,EAAajR,YAAckR,EACpD,OAAO,EAET,MAAMlR,EAAWiJ,EAAOC,eAAehF,MAAM5Z,IAAM,QAAuBA,KAAO4mB,IACjF,QAAKlR,GAGuBA,EAASiE,MAAMzP,QAAQuS,GAAMA,EAAE3O,KAAK3N,WAAW,QAChD+I,MAAMuT,GAAMiK,GAAe/H,EAAQgI,EAAclK,EAAE3O,OAChF,CACA,MAAM+Y,IAAc,QAAgB,CAClC9O,WAAY,CAAEoH,iBACd1b,QACE,MAAM,UAAEhC,GAAcF,KACdc,EAAGykB,EAAQvkB,EAAGwkB,GA3sD1B,SAAoBtf,EAAU,CAAC,GAC7B,MAAM,OACJhI,EAAS4H,GACPI,EACEuf,GAAW,SAAI,GACfvQ,GAAQ,QAAIhP,EAAQwf,cAAgB,CAAC,GAC3C1hB,OAAO2hB,OAAOzQ,EAAM7U,MAAOqJ,EAAcwL,EAAM7U,OAC/C,MAAM8G,EAAWT,IACf+e,EAASplB,OAAQ,EACb6F,EAAQ0f,eAAiB1f,EAAQ0f,aAAa5d,SAAStB,EAAMwD,eAEjEgL,EAAM7U,MAjNV,SAAoByE,EAAK+gB,EAAOC,GAAgB,GAC9C,OAAOD,EAAME,QAAO,CAAC7K,EAAG8K,KAClBA,KAAKlhB,IACFghB,QAA4B,IAAXhhB,EAAIkhB,KACxB9K,EAAE8K,GAAKlhB,EAAIkhB,KAER9K,IACN,CAAC,EACN,CAyMkB+K,CAAWvf,EAAOtI,GAAM,GAAM,EAO9C,OALIF,IACF6H,EAAiB7H,EAAQ,cAAeiJ,EAAS,CAAEgB,SAAS,IAC5DpC,EAAiB7H,EAAQ,cAAeiJ,EAAS,CAAEgB,SAAS,IAC5DpC,EAAiB7H,EAAQ,gBAAgB,IAAMunB,EAASplB,OAAQ,GAAO,CAAE8H,SAAS,KA9B/DhD,EAXA,EAACA,EAAGC,KACzB,IAAK,IAAIC,KAAQD,IAAMA,EAAI,CAAC,GACtBmE,EAAejE,KAAKF,EAAGC,IACzBoE,EAAkBtE,EAAGE,EAAMD,EAAEC,IACjC,GAAIiE,EACF,IAAK,IAAIjE,KAAQiE,EAAsBlE,GACjCoE,EAAelE,KAAKF,EAAGC,IACzBoE,EAAkBtE,EAAGE,EAAMD,EAAEC,IAEnC,OAAOF,CAAC,EAkCe+gB,CAAiB,CAAC,EArL3C,SAAgBC,GACd,KAAK,QAAMA,GACT,OAAO,QAASA,GAClB,MAAMC,EAAS3pB,MAAM0J,QAAQggB,EAAU9lB,OAAS,IAAI5D,MAAM0pB,EAAU9lB,MAAMkG,QAAU,CAAC,EACrF,IAAK,MAAM5I,KAAOwoB,EAAU9lB,MAC1B+lB,EAAOzoB,IAAO,SAAU,KAAM,CAC5BK,IAAG,IACMmoB,EAAU9lB,MAAM1C,GAEzBmB,IAAImhB,GACF,GAAIxjB,MAAM0J,QAAQggB,EAAU9lB,OAAQ,CAClC,MAAMgmB,EAAO,IAAIF,EAAU9lB,OAC3BgmB,EAAK1oB,GAAOsiB,EACZkG,EAAU9lB,MAAQgmB,CACpB,KAAO,CACL,MAAMC,EAAY/gB,EAAgBL,EAAiB,CAAC,EAAGihB,EAAU9lB,OAAQ,CAAE,CAAC1C,GAAMsiB,IAClFjc,OAAOuiB,eAAeD,EAAWH,EAAU9lB,OAC3C8lB,EAAU9lB,MAAQimB,CACpB,CACF,MAGJ,OAAOF,CACT,CA8J8CI,CAAOtR,IAhCrB9L,EAAajE,EAAGkE,EAgCc,CAC1Doc,cAjCkB,IAACtgB,CAmCvB,CAsrDqCshB,IAC3B,UAAEjlB,GAAcD,IAChBmlB,GAAW,QAAO,YAClBC,GAAc,QAAI,MAClBC,GAAa,SAAS,KAC1B,MAAMC,EAAkBpqB,MAAMC,KAAKwD,EAAUG,MAAM+c,OAAO0J,UAAU1K,WAC9D2K,EAAgB,IAAItpB,IAAIopB,EAAgBlgB,KAAI,EAAE,CAAE0M,KAAQA,EAAG2T,YAC3DC,EAAc,GACpB,IAAK,MAAM9M,KAAK4M,EAAcpqB,SAAU,CACtC,IAAIuqB,EAAsBL,EAAgBle,QAAO,EAAE,CAAE0K,KAAQA,EAAG2T,WAAa7M,IAE3E+M,EADEhnB,EAAUG,MAAM+Q,eAAe+C,SACX+S,EAAoBve,QACxC,EAAEwe,MAAShC,GAAejlB,EAAUG,MAAM+c,OAAQld,EAAUG,MAAM+Q,eAAgB+V,KAG9DD,EAAoBve,QACxC,EAAEwe,MAAS,CAACtC,GAA0BC,IAA2B9c,SAASmf,KAG1ED,EAAoB3gB,OAAS,GAC/B0gB,EAAY9pB,KAAK,CACfgS,KAAMgL,EACN2M,UAAW9iB,OAAOojB,YAAYF,IAGpC,CAUA,OATAD,EAAYI,MAAK,CAACliB,EAAGC,IACJ,YAAXD,EAAEgK,MACI,EACY,YAAX/J,EAAE+J,MAGJhK,EAAEgK,KAAO/J,EAAE+J,KAFX,GAEuB,IAG3B8X,CAAW,IAEdK,GAAoB,SAAS,KACjC,IAAKX,EAAYtmB,SAAuB,MAAZqmB,OAAmB,EAASA,EAASrmB,OAC/D,MAAO,CAAC,EAEV,MAAM,KAAEkN,EAAI,IAAED,GAAQoZ,EAASrmB,MAAMqY,wBACrC,MAAO,CACLpL,IAAQkY,EAAOnlB,MAAQiN,EAAlB,KACLC,KAASgY,EAAOllB,MAAQkN,EAAlB,KACP,IAmBH,MAAO,CAAEoZ,cAAaC,aAAYU,oBAAmBC,YAjBjC,CAAChb,EAAMib,KACzBb,EAAYtmB,MAAQ,CAClBkM,OACAib,mBAEF,MAAMC,EAAY,KAChB,MAAMC,GAAW,QAAS,IAAIF,EAAgBjb,MAC9CrM,EAAUG,MAAM+Q,eAAeuW,QAAQD,GACvC,MAAMpL,EAAOoK,EAASrmB,MAAMqY,yBACrB5X,EAAGE,GAAKQ,EAAU+jB,EAAOllB,MAAQic,EAAK/O,KAAMiY,EAAOnlB,MAAQic,EAAKhP,KACvEoa,EAASxU,SAASpS,EAAIA,EACtB4mB,EAASxU,SAASlS,EAAIA,EACtB2lB,EAAYtmB,MAAQ,KACpBwH,SAASf,oBAAoB,YAAa2gB,EAAU,EAEtD5f,SAAShB,iBAAiB,YAAa4gB,EAAU,EAEelC,SAAQC,SAC5E,IAEIoC,GAAe,CAAEtkB,MAAO,wBACxBukB,GAAe,CAAElqB,IAAK,GAsCtBmqB,GAA8BlmB,EAAY0jB,GAAa,CAAC,CAAC,SArC/D,SAAuBtiB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM0kB,GAA0B,QAAiB,gBACjD,OAAO,WAAa,QAAmB,KAAU,KAAM,EACrD,OAAmB,MAAOH,GAAc,GACrC,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAW5kB,EAAK4jB,YAAazM,KACzE,WAAa,QAAmB,UAAW,CAChDxc,IAAKwc,EAAEhL,MACN,CACU,YAAXgL,EAAEhL,OAAsB,WAAa,QAAmB,KAAM0Y,IAAc,QAAgB1N,EAAEhL,MAAO,KAAM,QAAmB,IAAI,KACjI,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWgL,EAAE2M,WAAW,CAACzT,EAAI8T,MACzE,WAAa,QAAYY,EAAyB,CACvDpqB,IAAKwpB,EACL5a,KAAM4a,EACNlT,MAAOZ,EAAGY,MACVM,cAAgB/E,GAAWxM,EAAKukB,YAAYJ,EAAI9T,IAC/C,KAAM,EAAG,CAAC,OAAQ,QAAS,qBAC5B,WAEJ,SAEN,QAAY,KAAY,CAAElE,KAAM,QAAU,CACxC3C,SAAS,SAAQ,IAAM,CACrBxJ,EAAK2jB,cAAe,WAAa,QAAmB,MAAO,CACzDhpB,IAAK,EACL2F,MAAO,uBACPC,OAAO,QAAeP,EAAKskB,oBAC1B,EACD,QAAYS,EAAyB,CACnCxb,KAAMvJ,EAAK2jB,YAAYpa,KACvB0H,MAAOjR,EAAK2jB,YAAYa,gBAAgBvT,OACvC,KAAM,EAAG,CAAC,OAAQ,WACpB,KAAM,QAAmB,IAAI,MAElCtE,EAAG,KAEJ,GACL,KAEMqY,GAAwB,gBAuDxBC,GAA0B,kBAC1BC,GAAoB,CAACrD,GAA0BC,IAqF/CqD,GAAuB,eAUvBC,GAA+B,uBAgBrC,MAAMC,GACJxsB,YAAY0Q,EAAMrQ,GAChBF,KAAKuQ,KAAOA,EACC,YAATA,EACFvQ,KAAKqV,OAASnV,EAEdF,KAAKssB,UAAYpsB,CAErB,CACAqsB,KAAKnoB,GACe,YAAdpE,KAAKuQ,KACPvQ,KAAKgY,WAAW5T,GAEhBpE,KAAK2rB,QAAQvnB,EAEjB,CACAooB,KAAKpoB,GACe,YAAdpE,KAAKuQ,MAAsBvQ,KAAKssB,UAClCtsB,KAAK2rB,QAAQvnB,GACU,eAAdpE,KAAKuQ,MAAyBvQ,KAAKqV,QAC5CrV,KAAKgY,WAAW5T,EAEpB,CACAunB,QAAQvnB,GACN,MAAMqoB,EAAWroB,EAAMgd,OAAO0J,UAAU9oB,IAAIhC,KAAKssB,UAAU/b,MAC3D,IAAKkc,EACH,OAEF,MAAMvN,EAAI,IAAIuN,EAASlc,KACvBnM,EAAMunB,QAAQzM,GACdA,EAAEwN,KAAK1sB,KAAKssB,WACZtsB,KAAKqV,OAAS6J,EAAE5J,EAClB,CACA0C,WAAW5T,GACT,MAAMgQ,EAAOhQ,EAAMgY,MAAMC,MAAM6C,GAAMA,EAAE5J,KAAOtV,KAAKqV,SAC9CjB,IAGLpU,KAAKssB,UAAYlY,EAAKuY,OACtBvoB,EAAM4T,WAAW5D,GACnB,EAEF,MAAMwY,GACJ/sB,YAAY0Q,EAAMrQ,GAEhB,GADAF,KAAKuQ,KAAOA,EACC,kBAATA,EACFvQ,KAAK6sB,aAAe3sB,MACf,CACL,MAAM4S,EAAI5S,EACVF,KAAK8sB,gBAAkB,CACrBxX,GAAIxC,EAAEwC,GACN5U,KAAMoS,EAAEpS,KAAK4U,GACbyF,GAAIjI,EAAEiI,GAAGzF,GAEb,CACF,CACAiX,KAAKnoB,GACe,kBAAdpE,KAAKuQ,KACPvQ,KAAK+sB,iBAAiB3oB,GAEtBpE,KAAKgtB,cAAc5oB,EAEvB,CACAooB,KAAKpoB,GACe,kBAAdpE,KAAKuQ,MAA4BvQ,KAAK8sB,gBACxC9sB,KAAKgtB,cAAc5oB,GACI,qBAAdpE,KAAKuQ,MAA+BvQ,KAAK6sB,cAClD7sB,KAAK+sB,iBAAiB3oB,EAE1B,CACA4oB,cAAc5oB,GACZ,MAAM6oB,EAAW7oB,EAAM8oB,kBAAkBltB,KAAK8sB,gBAAgBpsB,MACxDysB,EAAS/oB,EAAM8oB,kBAAkBltB,KAAK8sB,gBAAgB/R,IACvDkS,GAAaE,GAGlB/oB,EAAM4oB,cAAcC,EAAUE,EAChC,CACAJ,iBAAiB3oB,GACf,MAAMqW,EAAarW,EAAMub,YAAYtD,MAAM8B,GAAMA,EAAE7I,KAAOtV,KAAK6sB,eAC1DpS,IAGLza,KAAK8sB,gBAAkB,CACrBxX,GAAImF,EAAWnF,GACf5U,KAAM+Z,EAAW/Z,KAAK4U,GACtByF,GAAIN,EAAWM,GAAGzF,IAEpBlR,EAAM2oB,iBAAiBtS,GACzB,EAEF,MAAM2S,GACJvtB,YAAYwtB,GAEV,GADArtB,KAAKuQ,KAAO,cACS,IAAjB8c,EAAM9iB,OACR,MAAM,IAAItG,MAAM,4CAElBjE,KAAKqtB,MAAQA,CACf,CACAd,KAAKnoB,GACH,IAAK,IAAIR,EAAI5D,KAAKqtB,MAAM9iB,OAAS,EAAG3G,GAAK,EAAGA,IAC1C5D,KAAKqtB,MAAMzpB,GAAG2oB,KAAKnoB,EAEvB,CACAooB,KAAKpoB,GACH,IAAK,IAAIR,EAAI,EAAGA,EAAI5D,KAAKqtB,MAAM9iB,OAAQ3G,IACrC5D,KAAKqtB,MAAMzpB,GAAG4oB,KAAKpoB,EAEvB,EAEF,MAAMkpB,GAAe,OACfC,GAAe,OACfC,GAA4B,oBAC5BC,GAA6B,qBAsG7BC,GAAe,OACfC,GAAgB,QAChBC,GAA0B,kBAoH1BC,GAAuB,eA2B1BvsB,OAAOwsB,YAdV,MAeMC,GAAc,CAAC,EACfC,GAAe,CACnBla,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAQfib,GAAe,EANgB,OAAmB,OAAQ,CAC9Dlb,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,OAAQ,CAAEF,EAAG,6CAA+C,MAAO,IAQrHob,GAA8BtoB,EAAYmoB,GAAa,CAAC,CAAC,SAH/D,SAAuB/mB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAO+mB,GAAcC,GAC9D,KAEME,GAAc,CAAC,EACfC,GAAe,CACnBta,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAQfqb,GAAe,EANgB,OAAmB,OAAQ,CAC9Dtb,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,OAAQ,CAAEF,EAAG,6CAA+C,MAAO,IAQrHwb,GAAiC1oB,EAAYuoB,GAAa,CAAC,CAAC,SAHlE,SAAuBnnB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOmnB,GAAcC,GAC9D,KAEME,GAAc,CAAC,EACfC,GAAe,CACnB1a,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAyBfyb,GAAe,EAvBgB,OAAmB,OAAQ,CAC9D1b,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,OAAQ,CAC9D8F,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACH,MAAO,IAC2B,OAAmB,OAAQ,CAC9DH,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACH,MAAO,IAC2B,OAAmB,OAAQ,CAC9DH,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACH,MAAO,IAUJyV,GAA4B9oB,EAAY2oB,GAAa,CAAC,CAAC,SAH7D,SAAuBvnB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOunB,GAAcC,GAC9D,KAEME,GAAc,CAAC,EACfC,GAAe,CACnB9a,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAef6b,GAAe,EAbgB,OAAmB,OAAQ,CAC9D9b,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,OAAQ,CAAEF,EAAG,oFAAsF,MAAO,IAC7H,OAAmB,OAAQ,CAC9DhO,EAAG,IACHE,EAAG,IACH+I,MAAO,IACPC,OAAQ,IACR8gB,GAAI,KACH,MAAO,IASJC,GAA4BnpB,EAAY+oB,GAAa,CAAC,CAAC,SAH7D,SAAuB3nB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAO2nB,GAAcC,GAC9D,KAEMG,GAAc,CAAC,EACfC,GAAe,CACnBnb,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAefkc,GAAe,EAbgB,OAAmB,OAAQ,CAC9Dnc,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IAC2B,OAAmB,OAAQ,CAC9DlO,EAAG,IACHE,EAAG,IACH+I,MAAO,KACPC,OAAQ,KACR8gB,GAAI,KACH,MAAO,IAC2B,OAAmB,OAAQ,CAAEhc,EAAG,gEAAkE,MAAO,IASxIqc,GAAuBvpB,EAAYopB,GAAa,CAAC,CAAC,SAHxD,SAAuBhoB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOgoB,GAAcC,GAC9D,KAEME,GAAc,CAAC,EACfC,GAAe,CACnBvb,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAcfsc,GAAa,EAZkB,OAAmB,OAAQ,CAC9Dvc,OAAQ,OACRD,EAAG,gBACHE,KAAM,QACL,MAAO,IACyB,OAAmB,OAAQ,CAAEF,EAAG,wEAA0E,MAAO,IACjH,OAAmB,SAAU,CAC9DkB,GAAI,KACJC,GAAI,KACJrK,EAAG,KACF,MAAO,IACyB,OAAmB,WAAY,CAAE0b,OAAQ,qBAAuB,MAAO,IAUpGiK,GAA+B3pB,EAAYwpB,GAAa,CAAC,CAAC,SAHhE,SAAuBpoB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOooB,GAAcC,GAC9D,KAEME,GAAc,CAAC,EACfC,GAAe,CACnB3b,MAAO,6BACPxM,MAAO,eACPyG,MAAO,KACPC,OAAQ,KACR6E,QAAS,YACT,eAAgB,IAChBE,OAAQ,eACRC,KAAM,OACN,iBAAkB,QAClB,kBAAmB,SAGf0c,GAAa,EADgB,QAAkB,sOAAuO,IAOtRC,GAA6B/pB,EAAY4pB,GAAa,CAAC,CAAC,SAH9D,SAAuBxoB,EAAMC,GAC3B,OAAO,WAAa,QAAmB,MAAOwoB,GAAcC,GAC9D,KAEME,IAAc,QAAgB,CAClC9pB,MAAO,CACL+pB,QAAS,CACPtf,KAAMwQ,OACNrQ,UAAU,GAEZuH,MAAO,CACL1H,KAAMwQ,OACNrQ,UAAU,GAEZof,KAAM,CACJvf,KAAMvI,OACN0I,UAAU,EACVF,aAAS,IAGbtK,QACE,MAAM,UAAEhC,GAAcF,IACtB,MAAO,CAAEE,YACX,IAEI6rB,GAAe,CAAC,WAAY,SAa5BC,GAAgCpqB,EAAYgqB,GAAa,CAAC,CAAC,SAZjE,SAAuB5oB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAa,QAAmB,SAAU,CAC/CC,MAAO,+CACPgM,UAAWtM,EAAK9C,UAAU+rB,eAAeC,kBAAkBlpB,EAAK6oB,SAChE5X,MAAOjR,EAAKiR,MACZ/F,QAASjL,EAAO,KAAOA,EAAO,GAAMuM,GAAWxM,EAAK9C,UAAU+rB,eAAeE,eAAenpB,EAAK6oB,WAChG,CACD7oB,EAAK8oB,OAAQ,WAAa,SAAY,QAAwB9oB,EAAK8oB,MAAO,CAAEnuB,IAAK,OAAS,WAAa,QAAmB,KAAU,CAAEA,IAAK,GAAK,EAC9I,SAAgB,QAAgBqF,EAAKiR,OAAQ,IAC5C,MACF,EAAG8X,GACR,KAEMK,IAAc,QAAgB,CAClC5V,WAAY,CAAEwV,kBACd9pB,QACE,MAAM,UAAEhC,GAAcF,IAatB,MAAO,CAAEqsB,YAZU,SAAS,IAAMnsB,EAAUG,MAAM+Q,iBAAmBlR,EAAUG,MAAM+c,OAAOhd,QAYvEksB,SAXJ,CACf,CAAET,QAASnC,GAAczV,MAAO,OAAQ6X,KAAMX,IAC9C,CAAEU,QAASlC,GAAe1V,MAAO,QAAS6X,KAAMf,IAChD,CAAEc,QAASvC,GAAcrV,MAAO,OAAQ6X,KAAM5B,IAC9C,CAAE2B,QAAStC,GAActV,MAAO,OAAQ6X,KAAMxB,IAC9C,CAAEuB,QAAS5D,GAAyBhU,MAAO,kBAAmB6X,KAAMH,KAMvCY,iBAJN,CACvB,CAAEV,QAAS7D,GAAuB/T,MAAO,gBAAiB6X,KAAMP,IAChE,CAAEM,QAASzD,GAA8BnU,MAAO,qBAAsB6X,KAAMpB,KAGhF,IAEI8B,GAAe,CAAElpB,MAAO,mBAsBxBmpB,GAA0B7qB,EAAYwqB,GAAa,CAAC,CAAC,SArB3D,SAAuBppB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMqpB,GAA4B,QAAiB,kBACnD,OAAO,WAAa,QAAmB,MAAOF,GAAc,GACzD,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWxpB,EAAKspB,UAAWnS,KACvE,WAAa,QAAYuS,EAA2B,CACzD/uB,IAAKwc,EAAE0R,QACPA,QAAS1R,EAAE0R,QACX5X,MAAOkG,EAAElG,MACT6X,KAAM3R,EAAE2R,MACP,KAAM,EAAG,CAAC,UAAW,QAAS,YAC/B,MACJ9oB,EAAKqpB,aAAc,SAAU,IAAO,QAAmB,KAAU,CAAE1uB,IAAK,IAAK,QAAWqF,EAAKupB,kBAAmBpS,KACvG,WAAa,QAAYuS,EAA2B,CACzD/uB,IAAKwc,EAAE0R,QACPA,QAAS1R,EAAE0R,QACX5X,MAAOkG,EAAElG,MACT6X,KAAM3R,EAAE2R,MACP,KAAM,EAAG,CAAC,UAAW,QAAS,YAC/B,OAAQ,QAAmB,IAAI,IAEvC,KAEMa,IAAY,QAAgB,CAChCnW,WAAY,CAAEvU,aAAY2qB,KAAMra,GAAagE,qBAAmBsB,uBAAqBoB,WAASG,WAAS0O,eAAa2E,YACpH3qB,MAAO,CACL5B,UAAW,CACTqM,KAAMvI,OACN0I,UAAU,IAGdxK,MAAMJ,GACJ,MAAMzE,EAAQC,OAAO,eACfuvB,GAAgB,QAAM/qB,EAAO,aA3jGrC/B,EA4jGgB8sB,EACd,MAAMpmB,GAAK,QAAI,OACf,QAAQ,WAAYA,GACpB,MAAM2R,GAAQ,SAAS,IAAMtW,EAAM5B,UAAUkR,eAAegH,QACtDuD,GAAc,SAAS,IAAM7Z,EAAM5B,UAAUkR,eAAeuK,cAC5DmR,GAAgB,SAAS,IAAMhrB,EAAM5B,UAAUkR,eAAe0b,gBAC9DC,EA3gGV,WACE,MAAM,MAAE3sB,GAAUD,IAClB,IAAI6sB,EAAe,GACfC,GAAY,EACZC,EAAW,CAAEpsB,EAAG,EAAGE,EAAG,GAC1B,MACM2R,EAAWpS,GADE,SAAS,IAAMH,EAAMC,MAAMoB,WAExCU,GAAS,SAAS,KAAM,CAC5B,mBAAoB,MACpB,UAAa,SAAS/B,EAAMC,MAAMgB,sBAAsBjB,EAAMC,MAAMoB,QAAQX,QAAQV,EAAMC,MAAMoB,QAAQT,WAEpGmsB,EAAY,CAACC,EAASC,EAASC,KACnC,MAAMC,EAAe,CACnBH,EAAUhtB,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQX,EACpDusB,EAAUjtB,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQT,GAEhDwsB,EAAW,CAACJ,EAAUE,EAAWltB,EAAMC,MAAMoB,QAAQX,EAAGusB,EAAUC,EAAWltB,EAAMC,MAAMoB,QAAQT,GACjGysB,EAAO,CAACD,EAAS,GAAKD,EAAa,GAAIC,EAAS,GAAKD,EAAa,IACxEntB,EAAMC,MAAMoB,QAAQX,GAAK2sB,EAAK,GAC9BrtB,EAAMC,MAAMoB,QAAQT,GAAKysB,EAAK,GAC9BrtB,EAAMC,MAAMgB,QAAUisB,CAAQ,EAW1BI,EAAqB,KAAM,CAC/BC,GAAIX,EAAa,GAAGY,QACpBC,GAAIb,EAAa,GAAGc,QACpBC,GAAIf,EAAa,GAAGY,QACpBI,GAAIhB,EAAa,GAAGc,UAuCtB,MAAO,CAAE3rB,YAAWwQ,EAAU/R,cArCPC,IAGrB,GAFAmsB,EAAa7vB,KAAK0D,GAClB8R,EAAS/R,cAAcC,GACK,IAAxBmsB,EAAazmB,OAAc,CAC7B,MAAM,GAAEonB,EAAE,GAAEE,EAAE,GAAEE,EAAE,GAAEC,GAAON,IAC3BR,EAAW,CACTpsB,EAAG6sB,GAAMI,EAAKJ,GAAM,EACpB3sB,EAAG6sB,GAAMG,EAAKH,GAAM,EAExB,GA4B2C3sB,cA1BtBL,IACrB,IAAK,IAAIjB,EAAI,EAAGA,EAAIotB,EAAazmB,OAAQ3G,IACvC,GAAIiB,EAAG8I,WAAaqjB,EAAaptB,GAAG+J,UAAW,CAC7CqjB,EAAaptB,GAAKiB,EAClB,KACF,CAEF,GAA2B,GAAvBmsB,EAAazmB,OAAa,CAC5B,MAAM,GAAEonB,EAAE,GAAEE,EAAE,GAAEE,EAAE,GAAEC,GAAON,IACrBvsB,EAAKwsB,EAAKI,EACV3sB,EAAKysB,EAAKG,EACVC,EAAUvY,KAAKwY,KAAK/sB,EAAKA,EAAKC,EAAKA,GACzC,GAAI6rB,EAAW,EAAG,CAChB,MAAMK,EAAWltB,EAAMC,MAAMgB,SAAW,GAAK4sB,EAAUhB,GAAY,KACnEE,EAAUD,EAASpsB,EAAGosB,EAASlsB,EAAGssB,EACpC,CACAL,EAAWgB,CACb,MACEtb,EAASzR,cAAcL,EACzB,EAO0DS,YALvCT,IACnBmsB,EAAeA,EAAarkB,QAAQwlB,GAAMA,EAAExkB,YAAc9I,EAAG8I,YAC7DsjB,GAAY,EACZta,EAASrR,aAAa,EAEiD8sB,aApDnDvtB,IACpBA,EAAGwtB,iBACH,IAAIC,EAAeztB,EAAG0tB,OACD,IAAjB1tB,EAAG2tB,YACLF,GAAgB,IAElB,MAAMhB,EAAWltB,EAAMC,MAAMgB,SAAW,EAAIitB,EAAe,KAC3DnB,EAAUtsB,EAAG4Z,QAAS5Z,EAAG8Z,QAAS2S,EAAS,EA8C/C,CAg8FoBmB,GACVC,EA17FV,WACE,MAAM,MAAEtuB,GAAUD,IACZuuB,GAAsB,QAAI,MAC1BC,GAAe,QAAI,MA0DzB,OADA,QAAQ,eAzBatb,IAEnB,GADAsb,EAAatuB,MAAQgT,GAAM,KACvBA,GAAMqb,EAAoBruB,MAAO,CACnCquB,EAAoBruB,MAAM0W,GAAK1D,EAC/B,MAAMub,EAAwBxuB,EAAMC,MAAMwuB,gBACxCH,EAAoBruB,MAAM3D,KAC1BgyB,EAAoBruB,MAAM0W,IAG5B,GADA2X,EAAoBruB,MAAMyX,OAAS8W,EAAsBE,kBAAoBptB,EAAyBkU,QAAUlU,EAAyBmU,UACrI+Y,EAAsBE,kBAAmB,CAC3C,MAAMC,EAAMH,EAAsBI,oBAAoBroB,KAAKwT,GAAMA,EAAE7I,KACnElR,EAAMC,MAAMsb,YAAYvf,SAAS+d,IAC3B4U,EAAI/mB,SAASmS,EAAE7I,MACjB6I,EAAExD,YAAa,EACjB,GAEJ,CACF,MAAYtD,GAAMqb,EAAoBruB,QACpCquB,EAAoBruB,MAAM0W,QAAK,EAC/B2X,EAAoBruB,MAAMyX,OAASpW,EAAyByT,KAC5D/U,EAAMC,MAAMsb,YAAYvf,SAAS+d,IAC/BA,EAAExD,YAAa,CAAK,IAExB,IAGK,CAAE+X,sBAAqBlW,YAzDT3X,IACf6tB,EAAoBruB,QACtBquB,EAAoBruB,MAAM4X,GAAKpX,EAAG4Z,QAAUra,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQX,EACtF4tB,EAAoBruB,MAAM6X,GAAKrX,EAAG8Z,QAAUva,EAAMC,MAAMgB,QAAUjB,EAAMC,MAAMoB,QAAQT,EACxF,EAqDyCiuB,YAnDvB,KAClB,GAAIN,EAAatuB,MAAO,CACtB,MAAMoW,EAAarW,EAAMC,MAAMsb,YAAYtD,MAAM8B,GAAMA,EAAEpD,KAAO4X,EAAatuB,QACzEsuB,EAAatuB,MAAMoQ,SAAWgG,GAChCiY,EAAoBruB,MAAQ,CAC1ByX,OAAQpW,EAAyByT,KACjCzY,KAAM+Z,EAAW/Z,MAEnB0D,EAAMC,MAAM0oB,iBAAiBtS,IAE7BiY,EAAoBruB,MAAQ,CAC1ByX,OAAQpW,EAAyByT,KACjCzY,KAAMiyB,EAAatuB,OAGvBquB,EAAoBruB,MAAM4X,QAAK,EAC/ByW,EAAoBruB,MAAM6X,QAAK,CACjC,GAkCsDgX,UAhCtC,KACZR,EAAoBruB,OAASsuB,EAAatuB,OAC5CD,EAAMC,MAAM2oB,cAAc0F,EAAoBruB,MAAM3D,KAAMgyB,EAAoBruB,MAAM0W,IAEtF2X,EAAoBruB,MAAQ,IAAI,EA6BpC,CA43FgC8uB,GACtBC,GAAqB,SAAS,KAAM,IACrCrC,EAAQ5qB,OAAO9B,UAEdgvB,GAAU,QAAI,GACpBvtB,EAAM5B,UAAUkd,OAAOtM,MAAM4X,KAAKlpB,UAAUnC,GAAQgQ,IAClDgiB,EAAQhvB,QACDgN,KAET,MAgCMiiB,EAAmB,KACvBxtB,EAAM5B,UAAUkR,eAAe0b,cAAgB,EAAE,EAEnD,MAAO,CACLrmB,KACA4oB,UACAjX,QACAuD,cACAmR,gBACAsC,qBACAluB,cA1CqBL,IACrBksB,EAAQ7rB,cAAcL,GACtB6tB,EAAoBlW,YAAY3X,EAAG,EAyCnCD,cAvCqBC,IACH,IAAdA,EAAGwH,SACDxH,EAAG3C,SAAWuI,EAAGpG,QACnBivB,IACAvC,EAAQnsB,cAAcC,IAExB6tB,EAAoBO,cACtB,EAiCA3tB,YA/BmBT,IACnBksB,EAAQzrB,YAAYT,GACpB6tB,EAAoBQ,WAAW,EA8B/BK,QA5Be1uB,IACA,QAAXA,EAAGlD,KACLkD,EAAGwtB,iBAELvsB,EAAM5B,UAAU+rB,eAAeuD,cAAc3uB,EAAG,EAyBhD4uB,MAvBa5uB,IACbiB,EAAM5B,UAAU+rB,eAAeyD,YAAY7uB,EAAG,EAuB9C8uB,WArBkBvf,IACbtO,EAAM5B,UAAU+rB,eAAe2D,YAAY5nB,SAAS,YACvDsnB,IAEFxtB,EAAM5B,UAAUkR,eAAe0b,cAAc3vB,KAAKiT,EAAK,EAkBvDse,oBAAqBA,EAAoBA,oBACzCmB,WAAY9C,EAAQqB,aACpBztB,SAAUosB,EAAQpsB,SAEtB,IAEImvB,GAAa,CAAExsB,MAAO,yBAkFtBysB,GAAyBnuB,EAAY+qB,GAAW,CAAC,CAAC,SAjFxD,SAAqB3pB,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,MAAM2sB,GAAwB,QAAiB,cACzCC,GAAqB,QAAiB,WACtCC,GAA0B,QAAiB,gBAC3CC,GAAgC,QAAiB,sBACjDC,GAAkC,QAAiB,wBACnDC,GAAkB,QAAiB,QACnCC,GAAqB,QAAiB,WACtCC,GAAqB,QAAiB,WAC5C,OAAO,WAAa,QAAmB,MAAO,CAC5CnhB,IAAK,KACL+J,SAAU,KACV7V,OAAO,QAAe,CAAC,iBAAkB,CACvC,yBAA0BN,EAAK0rB,qBAAuB1rB,EAAKrC,SAC3D,2BAA4BqC,EAAK0rB,uBAEnCtK,cAAenhB,EAAO,KAAOA,EAAO,IAAK,SAAc,IAAI+C,IAAShD,EAAK9B,eAAiB8B,EAAK9B,iBAAiB8E,IAAO,CAAC,UACxHuO,cAAetR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKpC,eAAiBoC,EAAKpC,iBAAiBoF,IAClGme,YAAalhB,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAK1B,aAAe0B,EAAK1B,eAAe0E,IAC5FwqB,QAASvtB,EAAO,KAAOA,EAAO,IAAK,SAAc,IAAI+C,IAAShD,EAAK6sB,YAAc7sB,EAAK6sB,cAAc7pB,IAAO,CAAC,UAC5G0O,UAAWzR,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKusB,SAAWvsB,EAAKusB,WAAWvpB,IAClFyqB,QAASxtB,EAAO,KAAOA,EAAO,GAAK,IAAI+C,IAAShD,EAAKysB,OAASzsB,EAAKysB,SAASzpB,KAC3E,EACD,QAAWhD,EAAK0tB,OAAQ,aAAc,CAAC,GAAG,IAAM,EAC9C,QAAYV,OAEd,QAAWhtB,EAAK0tB,OAAQ,UAAW,CAAC,GAAG,IAAM,EAC3C,QAAYT,OAEd,QAAWjtB,EAAK0tB,OAAQ,UAAW,CAAC,GAAG,IAAM,EAC3C,QAAYR,QAEb,WAAa,QAAmB,MAAOJ,GAAY,GACjD,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAW9sB,EAAK2Y,aAAclF,KAC1E,WAAa,QAAmB,IAAK,CAC1C9Y,IAAK8Y,EAAWnF,GAAKtO,EAAKqsB,QAAQhR,YACjC,EACD,QAAWrb,EAAK0tB,OAAQ,aAAc,CAAEja,eAAc,IAAM,EAC1D,QAAY0Z,EAA+B,CAAE1Z,cAAc,KAAM,EAAG,CAAC,uBAGvE,OACJ,QAAWzT,EAAK0tB,OAAQ,sBAAuB,CAAEhC,oBAAqB1rB,EAAK0rB,sBAAuB,IAAM,CACtG1rB,EAAK0rB,sBAAuB,WAAa,QAAY0B,EAAiC,CACpFzyB,IAAK,EACL8Y,WAAYzT,EAAK0rB,qBAChB,KAAM,EAAG,CAAC,iBAAkB,QAAmB,IAAI,UAG1D,OAAmB,MAAO,CACxBprB,MAAO,iBACPC,OAAO,QAAeP,EAAKosB,qBAC1B,EACD,QAAY,KAAiB,CAAEjgB,KAAM,QAAU,CAC7C3C,SAAS,SAAQ,IAAM,GACpB,SAAU,IAAO,QAAmB,KAAU,MAAM,QAAWxJ,EAAKoV,OAAQhI,IACpE,QAAWpN,EAAK0tB,OAAQ,OAAQ,CACrCtgB,OACAqC,SAAUzP,EAAK8pB,cAAc9kB,SAASoI,GACtCugB,SAAWnhB,GAAWxM,EAAK2sB,WAAWvf,KACrC,IAAM,GACN,WAAa,QAAYigB,EAAiB,CACzC1yB,IAAKyS,EAAKkB,GAAKtO,EAAKqsB,QAAQhR,WAC5BjO,OACAqC,SAAUzP,EAAK8pB,cAAc9kB,SAASoI,GACtCugB,SAAWnhB,GAAWxM,EAAK2sB,WAAWvf,IACrC,KAAM,EAAG,CAAC,OAAQ,WAAY,mBAEjC,SAENT,EAAG,KAEJ,IACH,QAAW3M,EAAK0tB,OAAQ,UAAW,CAAC,GAAG,IAAM,EAC3C,QAAYJ,OAEd,QAAWttB,EAAK0tB,OAAQ,UAAW,CAAC,GAAG,IAAM,CAC3C1tB,EAAK9C,UAAUmC,SAASuuB,gBAAiB,WAAa,QAAYL,EAAoB,CAAE5yB,IAAK,MAAQ,QAAmB,IAAI,OAE7H,GACL,KA0BMkzB,GAAoB,KACxB,MAAMvE,GAAW,QAAoB,IAAI/uB,KAOnC4uB,EAAiB,CAAChd,EAAM2hB,GAAqB,KAAU9qB,KAC3D,GAAKsmB,EAASjsB,MAAMxB,IAAIsQ,GAOxB,OAAOmd,EAASjsB,MAAMrC,IAAImR,GAAMtS,WAAWmJ,GANzC,GAAI8qB,EACF,MAAM,IAAI7wB,MAAM,4BAA4BkP,mBAKA,EAY5C4hB,EApDR,SAA0B5E,GACxB,MAAMyD,GAAc,QAAI,IAClBoB,GAAW,QAAI,IAoBrB,MAAO,CAAEpB,cAAaJ,cAnBC3uB,IAChB+uB,EAAYvvB,MAAM2H,SAASnH,EAAGlD,MACjCiyB,EAAYvvB,MAAMlD,KAAK0D,EAAGlD,KAE5BqzB,EAAS3wB,MAAMjE,SAAS60B,IAClBA,EAAE7yB,KAAK8yB,OAAOlL,GAAM4J,EAAYvvB,MAAM2H,SAASge,MACjDmG,EAAe8E,EAAEE,YACnB,GACA,EAWiCzB,YAThB7uB,IACnB,MAAM0N,EAAQqhB,EAAYvvB,MAAMR,QAAQgB,EAAGlD,KACvC4Q,GAAS,GACXqhB,EAAYvvB,MAAMP,OAAOyO,EAAO,EAClC,EAKgD6iB,eAH3B,CAACvL,EAAOsL,KAC7BH,EAAS3wB,MAAMlD,KAAK,CAAEiB,KAAMynB,EAAOsL,eAAc,EAGrD,CA6BwBE,CAAiBlF,GACvC,OAAO,QAAS,CAAEmF,gBA3BM,CAACniB,EAAM0c,KAC7B,GAAIS,EAASjsB,MAAMxB,IAAIsQ,GACrB,MAAM,IAAIlP,MAAM,YAAYkP,qBAE9Bmd,EAASjsB,MAAMvB,IAAIqQ,EAAM0c,EAAQ,EAuBAM,iBAAgBD,kBAXzB,CAAC/c,EAAM2hB,GAAqB,KAAU9qB,KAC9D,IAAKsmB,EAASjsB,MAAMxB,IAAIsQ,GAAO,CAC7B,GAAI2hB,EACF,MAAM,IAAI7wB,MAAM,4BAA4BkP,oBAE5C,OAAO,CAEX,CACA,OAAOmd,EAASjsB,MAAMrC,IAAImR,GAAMoiB,WAAWvrB,EAAK,KAGuB+qB,GAAgB,EAErFS,GAAcC,KAAQA,aAAa,KAwDzC,SAASC,GAAWC,GAClB,MAAMvU,GAAS,QAAIuU,GAAkB,IAAI,KACnCt0B,EAAQC,OAAO,kBACfs0B,GAAkB,QAAI,MACtBxgB,GAAiB,QAAgBwgB,IACjC,YAAEtxB,GA5DV,SAAwB8c,EAAQhM,GA+C9B,MAAO,CAAE9Q,YA9CYuxB,IACnB,IAAIC,EACJ,GAAKN,GAAWK,GAQdC,EAAmB,IAAI,IAAM1U,EAAO/c,OACpCwxB,EAASE,YAAYD,GACrBA,EAAiB1e,OAAOhX,SAASwY,IAC/B,MAAMxE,EAAO,IAAI2U,GACjB3U,EAAKgD,OAAOjE,KAAK9O,MAAQuU,EAAMzF,KAC/BiB,EAAK6U,iBAAmBrQ,EAAMtD,GAC9BwgB,EAAiBnK,QAAQvX,GACzB,MAAM4hB,EAAkBF,EAAiB5I,kBAAkBtU,EAAMqd,iBAC5DD,EAILF,EAAiB9I,cAAc5Y,EAAKoD,QAAQgB,YAAawd,GAHvDvyB,QAAQC,KAAK,mCAAmCkV,EAAMqd,0CAGiB,IAE3EH,EAAiBte,QAAQpX,SAASuY,IAChC,MAAMvE,EAAO,IAAI8U,GACjB9U,EAAKgD,OAAOjE,KAAK9O,MAAQsU,EAAOxF,KAChCiB,EAAK6U,iBAAmBtQ,EAAOrD,GAC/BwgB,EAAiBnK,QAAQvX,GACzB,MAAM4hB,EAAkBF,EAAiB5I,kBAAkBvU,EAAOsd,iBAC7DD,EAILF,EAAiB9I,cAAcgJ,EAAiB5hB,EAAKgD,OAAOoB,aAH1D/U,QAAQC,KAAK,mCAAmCiV,EAAOsd,0CAGe,QAhCjD,CACzB,GAAIJ,IAAazU,EAAO/c,MAAMD,MAC5B,MAAM,IAAIH,MACR,+GAGJ6xB,EAAmBD,CACrB,CA4BIzgB,EAAe/Q,OAAS+Q,EAAe/Q,QAAU+c,EAAO/c,MAAMD,OAChEgR,EAAe/Q,MAAM7B,UAEvBszB,EAAiBrwB,QAAUqwB,EAAiBrwB,SAAWowB,EAASpwB,SAAW,CAAEX,EAAG,EAAGE,EAAG,GACtF8wB,EAAiBzwB,QAAUywB,EAAiBzwB,SAAWwwB,EAASxwB,SAAW,EAC3EywB,EAAiBhF,cAAgBgF,EAAiBhF,eAAiB,GACnEgF,EAAiB3gB,QAAU2gB,EAAiB3gB,SAAW,CAAEK,SAAS,EAAOH,OAAQ,GAAIE,WAAY,IACjGH,EAAe/Q,MAAQyxB,CAAgB,EAG3C,CAY0BI,CAAe9U,EAAQwU,GACzCvF,GAAa,SAAS,IAAMjb,EAAe/Q,OAAS+Q,EAAe/Q,QAAU+c,EAAO/c,MAAMD,QAC1FiC,GAAW,QAAS,CACxBoT,wBAAwB,EACxBmb,eAAe,EACftuB,WAAY,CACVI,SAAU,IACVE,aAAc,EACdG,wBAAyB,MAGvBkpB,EAAiB4E,KACjBsB,EA10BR,SAAoB/xB,EAAO6rB,GACzB,MAAM5uB,EAAQC,OAAO,gBACf80B,GAAW,QAAI,KACf/I,GAAQ,QAAI,IACZgJ,GAAe,SAAI,GACnBC,GAAe,SAAK,GACpBC,GAAoB,SAAI,GACxBC,GAAmB,QAAI,IACvBC,EAAWC,IACf,IAAIL,EAAahyB,MAGjB,GAAIkyB,EAAkBlyB,MACpBmyB,EAAiBnyB,MAAMlD,KAAKu1B,QAO5B,IALIJ,EAAajyB,QAAUgpB,EAAMhpB,MAAMkG,OAAS,IAC9C8iB,EAAMhpB,MAAQgpB,EAAMhpB,MAAMie,MAAM,EAAGgU,EAAajyB,MAAQ,IAE1DgpB,EAAMhpB,MAAMlD,KAAKu1B,GACjBJ,EAAajyB,QACNgpB,EAAMhpB,MAAMkG,OAAS6rB,EAAS/xB,OACnCgpB,EAAMhpB,MAAMsyB,OAEhB,EAYIC,EAAU,IAA6B,IAAvBvJ,EAAMhpB,MAAMkG,SAAwC,IAAxB+rB,EAAajyB,MASzDwyB,EAAU,IAA6B,IAAvBxJ,EAAMhpB,MAAMkG,QAAgB+rB,EAAajyB,MAAQgpB,EAAMhpB,MAAMkG,OAAS,EAqD5F,OA5CA,QACEnG,GACA,CAACyxB,EAAUiB,KACLA,IACFA,EAAS7sB,OAAO0hB,QAAQhoB,YAAYtC,GACpCy1B,EAAS7sB,OAAO+N,WAAWrU,YAAYtC,GACvCy1B,EAAS7sB,OAAO+iB,cAAcrpB,YAAYtC,GAC1Cy1B,EAAS7sB,OAAO8iB,iBAAiBppB,YAAYtC,IAE3Cw0B,IACFA,EAAS5rB,OAAO0hB,QAAQnoB,UAAUnC,GAAQ+S,IACxCqiB,EAAQ,IAAIpK,GAAS,UAAWjY,EAAKkB,IAAI,IAE3CugB,EAAS5rB,OAAO+N,WAAWxU,UAAUnC,GAAQ+S,IAC3CqiB,EAAQ,IAAIpK,GAAS,aAAcjY,EAAKuY,QAAQ,IAElDkJ,EAAS5rB,OAAO+iB,cAAcxpB,UAAUnC,GAAQ01B,IAC9CN,EAAQ,IAAI7J,GAAe,gBAAiBmK,EAAKzhB,IAAI,IAEvDugB,EAAS5rB,OAAO8iB,iBAAiBvpB,UAAUnC,GAAQ01B,IACjDN,EAAQ,IAAI7J,GAAe,mBAAoBmK,GAAM,IAEzD,GAEF,CAAEhsB,WAAW,IAEfklB,EAAeqF,gBAAgBhI,GAAc,CAC3CiI,WAAYqB,EACZ/1B,QA7CW,KACN+1B,MAGLP,EAAahyB,OAAQ,EACrBgpB,EAAMhpB,MAAMiyB,EAAajyB,SAASkoB,KAAKnoB,EAAMC,OAC7CgyB,EAAahyB,OAAQ,EAAK,IAyC5B4rB,EAAeqF,gBAAgB/H,GAAc,CAC3CgI,WAAYsB,EACZh2B,QAxCW,KACNg2B,MAGLR,EAAahyB,OAAQ,EACrBgpB,EAAMhpB,QAAQiyB,EAAajyB,OAAOmoB,KAAKpoB,EAAMC,OAC7CgyB,EAAahyB,OAAQ,EAAK,IAoC5B4rB,EAAeqF,gBAAgB9H,GAA2B,CACxD+H,WAAY,KAAOgB,EAAkBlyB,MACrCxD,QAhEuB,KACvB01B,EAAkBlyB,OAAQ,CAAI,IAiEhC4rB,EAAeqF,gBAAgB7H,GAA4B,CACzD8H,WAAY,IAAMgB,EAAkBlyB,MACpCxD,QAjEwB,KACxB01B,EAAkBlyB,OAAQ,EACtBmyB,EAAiBnyB,MAAMkG,OAAS,IAClCksB,EAAQ,IAAIrJ,GAAgBoJ,EAAiBnyB,QAC7CmyB,EAAiBnyB,MAAQ,GAC3B,IA8DF4rB,EAAemF,eAAe,CAAC,UAAW,KAAM9H,IAChD2C,EAAemF,eAAe,CAAC,UAAW,KAAM7H,KACzC,QAAS,CACd6I,YAEJ,CAsuBkBY,CAAW5hB,EAAgB6a,GACrCgH,EAnuBR,SAAsB7hB,EAAgBgM,EAAQ6O,GAC5C,MAAM5uB,EAAQC,OAAO,kBACf41B,GAAa,QAAI,IACjBC,GAAmB,QAAI,IACvBC,GAAU,SAAS,KAAOF,EAAW7yB,QAgBrCgzB,EAAgB,CAACjb,EAAO9G,EAAIgiB,KAChC,IAAK,MAAMpY,KAAK9C,EAAO,CACrB,IAAI/H,EAOJ,GANKijB,GAAa,UAAPA,IACTjjB,EAAOrM,OAAOrH,OAAOue,EAAE9H,QAAQiF,MAAMkb,GAAUA,EAAMjiB,KAAOA,KAEzDjB,GAAUijB,GAAa,WAAPA,IACnBjjB,EAAOrM,OAAOrH,OAAOue,EAAE1H,SAAS6E,MAAMkb,GAAUA,EAAMjiB,KAAOA,KAE3DjB,EACF,OAAOA,CAEX,CACa,EAgFf,OAdA4b,EAAeqF,gBAAgB5H,GAAc,CAC3C6H,WAAY,KAAM,EAClB10B,QA5FW,KACX,MAAM22B,EAA4BpiB,EAAe/Q,MAAMysB,cAAcxtB,SAAS4b,GAAM,IAC/ElX,OAAOrH,OAAOue,EAAE9H,WAChBpP,OAAOrH,OAAOue,EAAE1H,YAEfmI,EAAcvK,EAAe/Q,MAAMsb,YAAYhT,QAClDoqB,GAASS,EAA0BxrB,SAAS+qB,EAAKr2B,OAAS82B,EAA0BxrB,SAAS+qB,EAAKhc,MACnGpQ,KAAKosB,IAAS,CAAGr2B,KAAMq2B,EAAKr2B,KAAK4U,GAAIyF,GAAIgc,EAAKhc,GAAGzF,OACnD6hB,EAAiB9yB,MAAQozB,KAAKC,UAAU/X,GACxCuX,EAAW7yB,MAAQozB,KAAKC,UAAUtiB,EAAe/Q,MAAMysB,cAAcnmB,KAAKuU,GAAMA,EAAEyN,SAAQ,IAqF5FsD,EAAemF,eAAe,CAAC,UAAW,KAAM1H,IAChDuC,EAAeqF,gBAAgB3H,GAAe,CAC5C4H,WAAY,KAAO6B,EAAQ/yB,MAC3BxD,QAvEY,KACZ,GAAIu2B,EAAQ/yB,MACV,OAEF,MAAMszB,EAAwB,IAAIp2B,IAC5Bq2B,EAAmBH,KAAKI,MAAMX,EAAW7yB,OACzCyzB,EAAyBL,KAAKI,MAAMV,EAAiB9yB,OACrD0zB,EAAW,GACXC,EAAiB,GACjB5zB,EAAQgR,EAAe/Q,MAC7B4rB,EAAeE,eAAe3C,IAC9B,IAAK,MAAMtO,KAAK0Y,EAAkB,CAChC,MAAMnL,EAAWrL,EAAO/c,MAAMymB,UAAU9oB,IAAIkd,EAAE3O,MAC9C,IAAKkc,EAEH,YADAhpB,QAAQC,KAAK,aAAawb,EAAE3O,uBAG9B,MAAM0nB,EAAa,IAAIxL,EAASlc,KAC1B2nB,EAAcD,EAAW3iB,GAC/ByiB,EAAS52B,KAAK82B,GACd,MAAME,EAAiBC,IACrBpwB,OAAOrH,OAAOy3B,GAAOh4B,SAASiU,IAC5BA,EAAKS,MAAM4X,KAAKlpB,UAAUnC,GAAQg3B,IAChC,MAAMC,EAAY7V,KAIlB,OAHAkV,EAAM70B,IAAIu1B,EAAU/iB,GAAIgjB,GACxBjkB,EAAKiB,GAAKgjB,EACVjkB,EAAKS,MAAM4X,KAAK/oB,YAAYtC,GACrBg3B,CAAS,GAChB,GACF,EAEJF,EAAcF,EAAW7gB,QACzB+gB,EAAcF,EAAWzgB,SACzBygB,EAAWnjB,MAAMyjB,WAAW/0B,UAAUnC,GAAQirB,IAC5C,MAAMkM,EAAKlM,EAMX,OALIkM,EAAGthB,WACLshB,EAAGthB,SAASpS,GAAK,GACjB0zB,EAAGthB,SAASlS,GAAK,IAEnBizB,EAAWnjB,MAAMyjB,WAAW50B,YAAYtC,GACjCm3B,CAAE,IAEXp0B,EAAMunB,QAAQsM,GACdA,EAAWvL,KAAKxN,GAChB+Y,EAAW3iB,GAAK4iB,EAChBP,EAAM70B,IAAIoc,EAAE5J,GAAI4iB,EAClB,CACA,IAAK,MAAM/Z,KAAK2Z,EAAwB,CACtC,MAAM7K,EAAWoK,EAAcU,EAAUJ,EAAM31B,IAAImc,EAAEzd,MAAO,UACtDysB,EAASkK,EAAcU,EAAUJ,EAAM31B,IAAImc,EAAEpD,IAAK,SACxD,IAAKkS,IAAaE,EAChB,SAEF,MAAMsL,EAAgBr0B,EAAM4oB,cAAcC,EAAUE,GAChDsL,GACFT,EAAe72B,KAAKs3B,EAExB,CAEA,OADAxI,EAAeE,eAAe1C,IACvB,CACLsK,WACAC,iBACD,IAWH/H,EAAemF,eAAe,CAAC,UAAW,KAAMzH,IAChDsC,EAAeqF,gBAAgB1H,GAAyB,CACtD2H,WAAY,KAAM,EAClB10B,QA1GY,KACZq2B,EAAW7yB,MAAQ,GACnB8yB,EAAiB9yB,MAAQ,EAAE,KA0GtB,QAAS,CAAE+yB,WACpB,CAinBoBsB,CAAatjB,EAAgBgM,EAAQ6O,GACjDnb,EAAQ,CACZuD,WAAY,IAAI,KAAe,MAC/BtD,gBAAiB,IAAI,KAAe,OA8CtC,OAp/BF,SAA+BK,EAAgBjK,EAAS7G,IAnBxD,SAAoC8Q,EAAgBjK,GAClDA,EAAQmqB,gBAAgBnJ,GAAsB,CAC5CoJ,WAAY,IAAMngB,EAAe/Q,MAAMysB,cAAcvmB,OAAS,EAC9D1J,UACEuU,EAAe/Q,MAAMysB,cAAc1wB,SAAS8e,GAAM9J,EAAe/Q,MAAM2T,WAAWkH,IACpF,IAEF/T,EAAQiqB,eAAe,CAAC,UAAWjJ,GACrC,CAYEwM,CAA2BvjB,EAAgBjK,GAzG7C,SAAuCiK,EAAgBjK,EAAS7G,GA+E9D6G,EAAQmqB,gBAAgBrJ,GAAyB,CAC/CsJ,WA/EwB,IACjBngB,EAAe/Q,MAAMysB,cAAcnkB,QAAQuS,IAAOgN,GAAkBlgB,SAASkT,EAAE3O,QAAOhG,OAAS,EA+EtG1J,QA7EqB,KACrB,MAAMuD,EAAQgR,EAAe/Q,MACvB+c,EAAShM,EAAe/Q,MAAM+c,OACpC,GAAmC,IAA/Bhd,EAAM0sB,cAAcvmB,OACtB,OAEF,MAAMumB,EAAgB1sB,EAAM0sB,cAAcnkB,QAAQuS,IAAOgN,GAAkBlgB,SAASkT,EAAE3O,QAChFqoB,EAAsB9H,EAAcxtB,SAAS4b,GAAMlX,OAAOrH,OAAOue,EAAE9H,UACnEyhB,EAAuB/H,EAAcxtB,SAAS4b,GAAMlX,OAAOrH,OAAOue,EAAE1H,WACpEshB,EAAmB10B,EAAMub,YAAYhT,QACxCwR,IAAO0a,EAAqB7sB,SAASmS,EAAEzd,OAASk4B,EAAoB5sB,SAASmS,EAAEpD,MAE5Ege,EAAoB30B,EAAMub,YAAYhT,QACzCwR,GAAM0a,EAAqB7sB,SAASmS,EAAEzd,QAAUk4B,EAAoB5sB,SAASmS,EAAEpD,MAE5Eie,EAAmB50B,EAAMub,YAAYhT,QACxCwR,GAAM0a,EAAqB7sB,SAASmS,EAAEzd,OAASk4B,EAAoB5sB,SAASmS,EAAEpD,MAE3Eke,EAAkBH,EAAiBnuB,KAAKwT,GAAMA,EAAEpD,KAChDme,EAAmBH,EAAkBpuB,KAAKwT,GAAMA,EAAEzd,OAClDy4B,EAAiC,IAAI53B,IACrC63B,EAAc,GACpB,IAAK,MAAMx1B,KAAKq1B,EAAiB,CAC/B,MAAMI,EAAQ5W,KACd0W,EAAer2B,IAAIc,EAAE0R,GAAI+jB,GACzBD,EAAYj4B,KAAK,CAAEmU,GAAI+jB,EAAOpD,gBAAiBryB,EAAE0R,GAAInC,KAAMvP,EAAEuP,MAC/D,CACA,MAAMmmB,EAAe,GACrB,IAAK,MAAM11B,KAAKs1B,EAAkB,CAChC,MAAMG,EAAQ5W,KACd0W,EAAer2B,IAAIc,EAAE0R,GAAI+jB,GACzBC,EAAan4B,KAAK,CAAEmU,GAAI+jB,EAAOpD,gBAAiBryB,EAAE0R,GAAInC,KAAMvP,EAAEuP,MAChE,CACA,MAAMomB,GAAmB,QACvB,IAAI,IACF,CACE5Z,YAAaqZ,EAAiBruB,KAAKwT,IAAM,CAAG7I,GAAI6I,EAAE7I,GAAI5U,KAAMyd,EAAEzd,KAAK4U,GAAIyF,GAAIoD,EAAEpD,GAAGzF,OAChF8B,OAAQgiB,EACR5hB,QAAS8hB,EACTld,MAAO0U,EAAcnmB,KAAKuU,GAAMA,EAAEyN,UAEpCvL,IAGJA,EAAOoY,iBAAiBD,GACxB,MAAMpO,EAAK/J,EAAO0J,UAAU9oB,KAAI,QAAuBu3B,IACvD,IAAKpO,EACH,MAAM,IAAIlnB,MAAM,2EAElB,MAAMmQ,GAAO,QAAS,IAAI+W,EAAG5a,MAC7BnM,EAAMunB,QAAQvX,GACd,MAAMqlB,EAAW/f,KAAKggB,MACpB5I,EAAcnmB,KAAKuU,GAAMA,EAAEhI,SAASpS,IAAGilB,QAAO,CAACoI,EAAGhU,IAAMgU,EAAIhU,GAAG,GAAK2S,EAAcvmB,QAE9EovB,EAAWjgB,KAAKggB,MACpB5I,EAAcnmB,KAAKuU,GAAMA,EAAEhI,SAASlS,IAAG+kB,QAAO,CAACoI,EAAGhU,IAAMgU,EAAIhU,GAAG,GAAK2S,EAAcvmB,QAEpF6J,EAAK8C,SAASpS,EAAI20B,EAClBrlB,EAAK8C,SAASlS,EAAI20B,EAClBb,EAAiB14B,SAAS+d,IACxB/Z,EAAM2oB,iBAAiB5O,GACvB/Z,EAAM4oB,cAAc7O,EAAEzd,KAAM0T,EAAKgD,OAAO+hB,EAAen3B,IAAImc,EAAEpD,GAAGzF,KAAK,IAEvEyjB,EAAkB34B,SAAS+d,IACzB/Z,EAAM2oB,iBAAiB5O,GACvB/Z,EAAM4oB,cAAc5Y,EAAKoD,QAAQ2hB,EAAen3B,IAAImc,EAAEzd,KAAK4U,KAAM6I,EAAEpD,GAAG,IAExE+V,EAAc1wB,SAAS8e,GAAM9a,EAAM4T,WAAWkH,KAC1C/T,EAAQ+kB,kBAAkBlE,KAC5B7gB,EAAQglB,eAAenE,IAEzB1nB,EAAYi1B,GACZnkB,EAAe/Q,MAAMoB,QAAU,IAAKrB,EAAMqB,SAC1C2P,EAAe/Q,MAAMgB,QAAUjB,EAAMiB,OAAO,GAMhD,CAuBEu0B,CAA8BxkB,EAAgBjK,EAAS7G,GAlKzD,SAAqC8Q,EAAgBjK,GA8CnDA,EAAQmqB,gBAAgBtJ,GAAuB,CAC7CuJ,WAAY,KACV,IAAI7rB,EACJ,OAAO0L,EAAe/Q,SAAkD,OAAtCqF,EAAM0L,EAAe/Q,MAAM+c,aAAkB,EAAS1X,EAAItF,MAAM,EAEpGvD,QAlDmB,KACnB,MAAMuD,EAAQgR,EAAe/Q,MAC7B,IAAKD,EAAM+T,SACT,MAAM,IAAIlU,MAAM,mCAElB,MAAM41B,EAAuB,GACvBziB,EAAS,GACT0iB,EAAa11B,EAAMgY,MAAMzP,QAAQuS,GAAMA,EAAE3O,OAASsY,KACxD,IAAK,MAAM3J,KAAK4a,EAAY,CAC1B,MAAMna,EAAcvb,EAAMub,YAAYhT,QAAQwR,GAAMA,EAAEzd,OAASwe,EAAE1H,QAAQgB,cACzEmH,EAAYvf,SAAS+d,IACnB/G,EAAOjW,KAAK,CACVmU,GAAI4J,EAAE+J,iBACN9V,KAAM+L,EAAE9H,OAAOjE,KAAK9O,MACpB4xB,gBAAiB9X,EAAEpD,GAAGzF,IACtB,IAEJukB,EAAqB14B,QAAQwe,EAC/B,CACA,MAAMnI,EAAU,GACVuiB,EAAc31B,EAAMgY,MAAMzP,QAAQuS,GAAMA,EAAE3O,OAASuY,KACzD,IAAK,MAAM5J,KAAK6a,EAAa,CAC3B,MAAMpa,EAAcvb,EAAMub,YAAYhT,QAAQwR,GAAMA,EAAEpD,KAAOmE,EAAE9H,OAAOoB,cACtEmH,EAAYvf,SAAS+d,IACnB3G,EAAQrW,KAAK,CACXmU,GAAI4J,EAAE+J,iBACN9V,KAAM+L,EAAE9H,OAAOjE,KAAK9O,MACpB4xB,gBAAiB9X,EAAEzd,KAAK4U,IACxB,IAEJukB,EAAqB14B,QAAQwe,EAC/B,CACA,MAAMqZ,EAAmB50B,EAAMub,YAAYhT,QAAQwR,IAAO0b,EAAqB7tB,SAASmS,KAClF/B,EAAQhY,EAAMgY,MAAMzP,QACvBuS,GAAMA,EAAE3O,OAASsY,IAA4B3J,EAAE3O,OAASuY,KAE3D1kB,EAAM+T,SAAS6hB,OAAO,CACpB5iB,SACAI,UACAmI,YAAaqZ,EAAiBruB,KAAKwT,IAAM,CAAG7I,GAAI6I,EAAE7I,GAAI5U,KAAMyd,EAAEzd,KAAK4U,GAAIyF,GAAIoD,EAAEpD,GAAGzF,OAChF8G,MAAOA,EAAMzR,KAAKuU,GAAMA,EAAEyN,WAE5BvoB,EAAM+T,SAAS1S,QAAUrB,EAAMqB,QAC/BrB,EAAM+T,SAAS9S,QAAUjB,EAAMiB,OAAO,GAS1C,CA8GE40B,CAA4B7kB,EAAgBjK,GAZ9C,SAA0CiK,EAAgBjK,EAAS7G,GACjE6G,EAAQmqB,gBAAgBlJ,GAA8B,CACpDmJ,WAAY,IAAMngB,EAAe/Q,QAAU+Q,EAAe/Q,MAAM+c,OAAOhd,MACvEvD,QAAS,KACPsK,EAAQglB,eAAenE,IACvB1nB,EAAY8Q,EAAe/Q,MAAM+c,OAAOhd,MAAM,GAGpD,CAKE81B,CAAiC9kB,EAAgBjK,EAAS7G,EAC5D,CAm8BE61B,CAAsB/kB,EAAgB6a,EAAgB3rB,GA3mBxD,SAAiC8Q,EAAgBjK,IATjD,SAAoCiK,EAAgBjK,GAClDA,EAAQmqB,gBAAgBzH,GAAsB,CAC5ChtB,QAAUwU,IACRD,EAAe/Q,MAAM8Q,QAAQE,OAASA,EACtCD,EAAe/Q,MAAM8Q,QAAQK,SAAU,CAAI,EAE7C+f,WAAY,KAAM,GAEtB,CAEE6E,CAA2BhlB,EAAgBjK,EAC7C,CA0mBEkvB,CAAwBjlB,EAAgB6a,IACxC,QACE7O,GACA,CAAC2D,EAAUuV,KACLA,IACFA,EAASrwB,OAAOswB,cAAc52B,YAAYtC,GAC1Ci5B,EAASE,YAAYC,cAAc92B,YAAYtC,GAC/C0jB,EAAS2V,UAAUnC,WAAW50B,YAAYtC,GAC1C0jB,EAAS2V,UAAUC,UAAUh3B,YAAYtC,GACzC0jB,EAAS6V,mBAAmBrC,WAAW50B,YAAYtC,GACnD0jB,EAAS6V,mBAAmBD,UAAUh3B,YAAYtC,IAEhD0jB,IACFA,EAAS2V,UAAUnC,WAAW/0B,UAAUnC,GAAO,CAAC6X,EAAO9E,KACrDA,EAAK8C,SAAWgC,EAAMhC,UAAY,CAAEpS,EAAG,EAAGE,EAAG,GAC7CoP,EAAKrG,MAAQmL,EAAMnL,OAAS,IAC5BqG,EAAK6C,UAAYiC,EAAMjC,YAAa,EAC7BiC,KAET6L,EAAS2V,UAAUC,UAAUn3B,UAAUnC,GAAO,CAAC6X,EAAO9E,KACpD8E,EAAMhC,SAAW9C,EAAK8C,SACtBgC,EAAMnL,MAAQqG,EAAKrG,MACnBmL,EAAMjC,UAAY7C,EAAK6C,UAChBiC,KAET6L,EAAS6V,mBAAmBrC,WAAW/0B,UAAUnC,GAAO,CAAC6X,EAAOf,KAC9DA,EAAS1S,QAAUyT,EAAMzT,QACzB0S,EAAS9S,QAAU6T,EAAM7T,QAClB6T,KAET6L,EAAS6V,mBAAmBD,UAAUn3B,UAAUnC,GAAO,CAAC6X,EAAOf,KAC7De,EAAMzT,QAAU0S,EAAS1S,QACzByT,EAAM7T,QAAU8S,EAAS9S,QAClB6T,KAET6L,EAASyV,YAAYC,cAAcj3B,UAAUnC,GAAQ+S,GAjE7D,SAA+BA,GAC7BA,EAAK8C,SAAW9C,EAAK8C,UAAY,CAAEpS,EAAG,EAAGE,EAAG,GAC5CoP,EAAKymB,sBAAuB,EAC5BzmB,EAAK6C,UAAY7C,EAAK6C,YAAa,EACnC7C,EAAKrG,MAAQqG,EAAKrG,OAAS,GAC7B,CA4DsE+sB,CAAsB1mB,KACpFgN,EAAO/c,MAAM02B,iBAAiBhS,GAAmB,CAAEiC,SAAU,cAC7D5J,EAAO/c,MAAM02B,iBAAiB7R,GAAoB,CAAE8B,SAAU,cAC9D1mB,EAAYygB,EAAS3gB,OACvB,GAEF,CAAE2G,WAAW,KAER,QAAS,CACdqW,SACAhM,iBACAib,aACAhqB,WACA4pB,iBACAkG,UACAc,YACAniB,QACAxQ,eAEJ,CACA,MAAMkW,GAA6BxS,OAAOgzB,OAAuBhzB,OAAOC,eAAe,CACrFgzB,UAAW,KACXC,WAAYnhB,GACZQ,qBACAsB,uBACA+U,KAAMra,GACNZ,iBACA1C,eACAmK,WACAH,YACC3b,OAAOwsB,YAAa,CAAEzpB,MAAO,W","sources":["webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/event.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/hook.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/proxy.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/subscribable.js","webpack://pipeline-manager/./node_modules/@baklavajs/renderer-vue/dist/renderer-vue.es.js"],"sourcesContent":["import { Subscribable } from \"./subscribable\";\n/** Main event class for Baklava */\nexport class BaklavaEvent extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n /**\n * Invoke all listeners\n * @param data The data to invoke the listeners with.\n */\n emit(data) {\n this.listeners.forEach((l) => l(data, this.entity));\n }\n}\n/**\n * Extension for the {@link BaklavaEvent} class. A listener can return `false` to prevent\n * this event from happening.\n */\nexport class PreventableBaklavaEvent extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n /**\n * Invoke all listeners.\n * @param data The data to invoke all listeners with\n * @returns An object, where the `prevented` field is `true` when one of the listeners requested to prevent the event, otherwise `false`\n */\n emit(data) {\n let prevented = false;\n const prevent = () => [(prevented = true)];\n for (const l of Array.from(this.listeners.values())) {\n l(data, prevent, this.entity);\n if (prevented) {\n return { prevented: true };\n }\n }\n return { prevented: false };\n }\n}\n","import { Subscribable } from \"./subscribable\";\n/** Similar to the SequentialHook, but allows to pass a different entity for each execute call */\nexport class DynamicSequentialHook extends Subscribable {\n execute(data, entity) {\n let currentValue = data;\n for (const callback of this.listeners) {\n currentValue = callback(currentValue, entity);\n }\n return currentValue;\n }\n}\n/** This class will run the taps one after each other and pass the data from every subscriber to another. */\nexport class SequentialHook extends DynamicSequentialHook {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n execute(data) {\n return super.execute(data, this.entity);\n }\n}\nexport class ParallelHook extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n execute(data) {\n const results = [];\n for (const callback of this.listeners) {\n results.push(callback(data, this.entity));\n }\n return results;\n }\n}\n","import { Subscribable } from \"./subscribable\";\nexport function createProxy() {\n const token = Symbol();\n const listeners = new Map();\n const targets = new Set();\n const register = (key, subscribable) => {\n if (subscribable instanceof Subscribable) {\n subscribable.registerProxy(token, () => { var _a, _b; return (_b = (_a = listeners.get(key)) === null || _a === void 0 ? void 0 : _a.listeners) !== null && _b !== void 0 ? _b : []; });\n }\n };\n const addSubscribable = (key) => {\n const subscribable = new Subscribable();\n listeners.set(key, subscribable);\n targets.forEach((t) => register(key, t[key]));\n };\n const addTarget = (target) => {\n targets.add(target);\n for (const key of listeners.keys()) {\n register(key, target[key]);\n }\n };\n const removeTarget = (target) => {\n for (const key of listeners.keys()) {\n if (target[key] instanceof Subscribable) {\n target[key].unregisterProxy(token);\n }\n }\n targets.delete(target);\n };\n const destroy = () => {\n targets.forEach((t) => removeTarget(t));\n listeners.clear();\n };\n return new Proxy({}, {\n get(target, key) {\n if (key === \"addTarget\") {\n return addTarget;\n }\n else if (key === \"removeTarget\") {\n return removeTarget;\n }\n else if (key === \"destroy\") {\n return destroy;\n }\n if (typeof key !== \"string\" || key.startsWith(\"_\")) {\n // vue internally uses properties starting with _ -> we just ignore them\n // also ignore all other properties that arent valid indexes for the events/hooks objects\n return target[key];\n }\n if (!listeners.has(key)) {\n addSubscribable(key);\n }\n return listeners.get(key);\n },\n });\n}\n","export class Subscribable {\n constructor() {\n this.listenerMap = new Map();\n this._listeners = [];\n this.proxyMap = new Map();\n this.proxies = [];\n }\n get listeners() {\n return this._listeners.concat(this.proxies.flatMap((getListeners) => getListeners()));\n }\n /**\n * Subscribe to the event / hook\n * @param token A token that can be used to unsubscribe from the event / hook later on\n * @param callback A callback that will be invoked when the event / hook occurs\n */\n subscribe(token, callback) {\n if (this.listenerMap.has(token)) {\n console.warn(\"Already subscribed. Unsubscribing for you.\\n\" +\n \"Please check that you don't accidentally use the same token twice \" +\n \"to register two different handlers for the same event/hook.\");\n this.unsubscribe(token);\n }\n this.listenerMap.set(token, callback);\n this._listeners.push(callback);\n }\n /**\n * Remove a listener\n * @param token The token that was specified when subscribing to the listener.\n * An invalid token does not result in an error.\n */\n unsubscribe(token) {\n if (this.listenerMap.has(token)) {\n const callback = this.listenerMap.get(token);\n this.listenerMap.delete(token);\n const i = this._listeners.indexOf(callback);\n if (i >= 0) {\n this._listeners.splice(i, 1);\n }\n }\n }\n /** This function is only used internally for proxies */\n registerProxy(token, getListeners) {\n if (this.proxyMap.has(token)) {\n console.warn(\"Already subscribed. Unsubscribing for you.\\n\" +\n \"Please check that you don't accidentally use the same token twice \" +\n \"to register two different proxies for the same event/hook.\");\n this.unregisterProxy(token);\n }\n this.proxyMap.set(token, getListeners);\n this.proxies.push(getListeners);\n }\n /** This function is only used internally for proxies */\n unregisterProxy(token) {\n if (!this.proxyMap.has(token)) {\n return;\n }\n const getListeners = this.proxyMap.get(token);\n this.proxyMap.delete(token);\n const i = this.proxies.indexOf(getListeners);\n if (i >= 0) {\n this.proxies.splice(i, 1);\n }\n }\n}\n","import { toRef, ref, computed, provide, defineComponent, openBlock, createElementBlock, normalizeStyle, isRef, toRefs as toRefs$1, customRef, getCurrentScope, onScopeDispose, unref, watch, resolveComponent, createBlock, Transition, withCtx, withDirectives, createElementVNode, normalizeClass, Fragment, renderList, withModifiers, toDisplayString, createCommentVNode, vShow, inject, onMounted, onUpdated, resolveDynamicComponent, createVNode, withKeys, vModelText, nextTick, onBeforeUnmount, markRaw, reactive, createStaticVNode, createTextVNode, renderSlot, TransitionGroup, shallowReadonly } from \"vue\";\nimport { GRAPH_NODE_TYPE_PREFIX, NodeInterface as NodeInterface$1, defineNode, getGraphNodeTypeString, GraphTemplate, Graph, Editor as Editor$1 } from \"@baklavajs/core\";\nimport { SequentialHook } from \"@baklavajs/events\";\nlet viewModelRef = null;\nfunction providePlugin(viewModel) {\n viewModelRef = viewModel;\n}\nfunction useViewModel() {\n if (!viewModelRef) {\n throw new Error(\"providePlugin() must be called before usePlugin()\");\n }\n return {\n viewModel: viewModelRef\n };\n}\nfunction useGraph() {\n const { viewModel } = useViewModel();\n return {\n graph: toRef(viewModel.value, \"displayedGraph\"),\n switchGraph: viewModel.value.switchGraph\n };\n}\nfunction useDragMove(positionRef) {\n const { graph } = useGraph();\n const draggingStartPoint = ref(null);\n const draggingStartPosition = ref(null);\n const dragging = computed(() => !!draggingStartPoint.value);\n const onPointerDown = (ev) => {\n draggingStartPoint.value = {\n x: ev.pageX,\n y: ev.pageY\n };\n draggingStartPosition.value = {\n x: positionRef.value.x,\n y: positionRef.value.y\n };\n };\n const onPointerMove = (ev) => {\n if (draggingStartPoint.value) {\n const dx = ev.pageX - draggingStartPoint.value.x;\n const dy = ev.pageY - draggingStartPoint.value.y;\n positionRef.value.x = draggingStartPosition.value.x + dx / graph.value.scaling;\n positionRef.value.y = draggingStartPosition.value.y + dy / graph.value.scaling;\n }\n };\n const onPointerUp = () => {\n draggingStartPoint.value = null;\n draggingStartPosition.value = null;\n };\n return { dragging, onPointerDown, onPointerMove, onPointerUp };\n}\nfunction useTransform() {\n const { graph } = useGraph();\n const transform = (x, y) => {\n const tx = x / graph.value.scaling - graph.value.panning.x;\n const ty = y / graph.value.scaling - graph.value.panning.y;\n return [tx, ty];\n };\n return { transform };\n}\nfunction usePanZoom() {\n const { graph } = useGraph();\n let pointerCache = [];\n let prevDiff = -1;\n let midpoint = { x: 0, y: 0 };\n const panningRef = computed(() => graph.value.panning);\n const dragMove = useDragMove(panningRef);\n const styles = computed(() => ({\n \"transform-origin\": \"0 0\",\n \"transform\": `scale(${graph.value.scaling}) translate(${graph.value.panning.x}px, ${graph.value.panning.y}px)`\n }));\n const applyZoom = (centerX, centerY, newScale) => {\n const currentPoint = [\n centerX / graph.value.scaling - graph.value.panning.x,\n centerY / graph.value.scaling - graph.value.panning.y\n ];\n const newPoint = [centerX / newScale - graph.value.panning.x, centerY / newScale - graph.value.panning.y];\n const diff = [newPoint[0] - currentPoint[0], newPoint[1] - currentPoint[1]];\n graph.value.panning.x += diff[0];\n graph.value.panning.y += diff[1];\n graph.value.scaling = newScale;\n };\n const onMouseWheel = (ev) => {\n ev.preventDefault();\n let scrollAmount = ev.deltaY;\n if (ev.deltaMode === 1) {\n scrollAmount *= 32;\n }\n const newScale = graph.value.scaling * (1 - scrollAmount / 3e3);\n applyZoom(ev.offsetX, ev.offsetY, newScale);\n };\n const getCoordsFromCache = () => ({\n ax: pointerCache[0].clientX,\n ay: pointerCache[0].clientY,\n bx: pointerCache[1].clientX,\n by: pointerCache[1].clientY\n });\n const onPointerDown = (ev) => {\n pointerCache.push(ev);\n dragMove.onPointerDown(ev);\n if (pointerCache.length === 2) {\n const { ax, ay, bx, by } = getCoordsFromCache();\n midpoint = {\n x: ax + (bx - ax) / 2,\n y: ay + (by - ay) / 2\n };\n }\n };\n const onPointerMove = (ev) => {\n for (let i = 0; i < pointerCache.length; i++) {\n if (ev.pointerId == pointerCache[i].pointerId) {\n pointerCache[i] = ev;\n break;\n }\n }\n if (pointerCache.length == 2) {\n const { ax, ay, bx, by } = getCoordsFromCache();\n const dx = ax - bx;\n const dy = ay - by;\n const curDiff = Math.sqrt(dx * dx + dy * dy);\n if (prevDiff > 0) {\n const newScale = graph.value.scaling * (1 + (curDiff - prevDiff) / 500);\n applyZoom(midpoint.x, midpoint.y, newScale);\n }\n prevDiff = curDiff;\n } else {\n dragMove.onPointerMove(ev);\n }\n };\n const onPointerUp = (ev) => {\n pointerCache = pointerCache.filter((p) => p.pointerId !== ev.pointerId);\n prevDiff = -1;\n dragMove.onPointerUp();\n };\n return { styles, ...dragMove, onPointerDown, onPointerMove, onPointerUp, onMouseWheel };\n}\nvar TemporaryConnectionState = /* @__PURE__ */ ((TemporaryConnectionState2) => {\n TemporaryConnectionState2[TemporaryConnectionState2[\"NONE\"] = 0] = \"NONE\";\n TemporaryConnectionState2[TemporaryConnectionState2[\"ALLOWED\"] = 1] = \"ALLOWED\";\n TemporaryConnectionState2[TemporaryConnectionState2[\"FORBIDDEN\"] = 2] = \"FORBIDDEN\";\n return TemporaryConnectionState2;\n})(TemporaryConnectionState || {});\nfunction useTemporaryConnection() {\n const { graph } = useGraph();\n const temporaryConnection = ref(null);\n const hoveringOver = ref(null);\n const onMouseMove = (ev) => {\n if (temporaryConnection.value) {\n temporaryConnection.value.mx = ev.offsetX / graph.value.scaling - graph.value.panning.x;\n temporaryConnection.value.my = ev.offsetY / graph.value.scaling - graph.value.panning.y;\n }\n };\n const onMouseDown = () => {\n if (hoveringOver.value) {\n const connection = graph.value.connections.find((c) => c.to === hoveringOver.value);\n if (hoveringOver.value.isInput && connection) {\n temporaryConnection.value = {\n status: TemporaryConnectionState.NONE,\n from: connection.from\n };\n graph.value.removeConnection(connection);\n } else {\n temporaryConnection.value = {\n status: TemporaryConnectionState.NONE,\n from: hoveringOver.value\n };\n }\n temporaryConnection.value.mx = void 0;\n temporaryConnection.value.my = void 0;\n }\n };\n const onMouseUp = () => {\n if (temporaryConnection.value && hoveringOver.value) {\n graph.value.addConnection(temporaryConnection.value.from, temporaryConnection.value.to);\n }\n temporaryConnection.value = null;\n };\n const hoveredOver = (ni) => {\n hoveringOver.value = ni ?? null;\n if (ni && temporaryConnection.value) {\n temporaryConnection.value.to = ni;\n const checkConnectionResult = graph.value.checkConnection(\n temporaryConnection.value.from,\n temporaryConnection.value.to\n );\n temporaryConnection.value.status = checkConnectionResult.connectionAllowed ? TemporaryConnectionState.ALLOWED : TemporaryConnectionState.FORBIDDEN;\n if (checkConnectionResult.connectionAllowed) {\n const ids = checkConnectionResult.connectionsInDanger.map((c) => c.id);\n graph.value.connections.forEach((c) => {\n if (ids.includes(c.id)) {\n c.isInDanger = true;\n }\n });\n }\n } else if (!ni && temporaryConnection.value) {\n temporaryConnection.value.to = void 0;\n temporaryConnection.value.status = TemporaryConnectionState.NONE;\n graph.value.connections.forEach((c) => {\n c.isInDanger = false;\n });\n }\n };\n provide(\"hoveredOver\", hoveredOver);\n return { temporaryConnection, onMouseMove, onMouseDown, onMouseUp };\n}\nconst _sfc_main$u = defineComponent({\n setup() {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const styles = computed(() => {\n const config = viewModel.value.settings.background;\n const positionLeft = graph.value.panning.x * graph.value.scaling;\n const positionTop = graph.value.panning.y * graph.value.scaling;\n const size = graph.value.scaling * config.gridSize;\n const subSize = size / config.gridDivision;\n const backgroundSize = `${size}px ${size}px, ${size}px ${size}px`;\n const subGridBackgroundSize = graph.value.scaling > config.subGridVisibleThreshold ? `, ${subSize}px ${subSize}px, ${subSize}px ${subSize}px` : \"\";\n return {\n backgroundPosition: `left ${positionLeft}px top ${positionTop}px`,\n backgroundSize: `${backgroundSize} ${subGridBackgroundSize}`\n };\n });\n return { styles };\n }\n});\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nfunction _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: \"background\",\n style: normalizeStyle(_ctx.styles)\n }, null, 4);\n}\nconst Background = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"render\", _sfc_render$t]]);\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isString = (val) => typeof val === \"string\";\nconst noop = () => {\n};\nisClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction identity(arg) {\n return arg;\n}\nfunction objectPick(obj, keys2, omitUndefined = false) {\n return keys2.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\nfunction unrefElement(elRef) {\n var _a2;\n const plain = resolveUnref(elRef);\n return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nisClient ? window.document : void 0;\nisClient ? window.navigator : void 0;\nisClient ? window.location : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener));\n }));\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction onClickOutside(target, handler, options = {}) {\n const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window2)\n return;\n let shouldListen = true;\n let fallback;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n window2.clearTimeout(fallback);\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window2, \"click\", listener, { passive: true, capture }),\n useEventListener(window2, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n useEventListener(window2, \"pointerup\", (e) => {\n if (e.button === 0) {\n const path = e.composedPath();\n e.composedPath = () => path;\n fallback = window2.setTimeout(() => listener(e), 50);\n }\n }, { passive: true }),\n detectIframe && useEventListener(window2, \"blur\", (event) => {\n var _a2;\n const el = unrefElement(target);\n if (((_a2 = window2.document.activeElement) == null ? void 0 : _a2.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window2.document.activeElement)))\n handler(event);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\n_global[globalKey] = _global[globalKey] || {};\n_global[globalKey];\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$1(__spreadValues$5({}, toRefs(state)), {\n isInside\n });\n}\nvar SwipeDirection;\n(function(SwipeDirection2) {\n SwipeDirection2[\"UP\"] = \"UP\";\n SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n SwipeDirection2[\"DOWN\"] = \"DOWN\";\n SwipeDirection2[\"LEFT\"] = \"LEFT\";\n SwipeDirection2[\"NONE\"] = \"NONE\";\n})(SwipeDirection || (SwipeDirection = {}));\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\n__spreadValues({\n linear: identity\n}, _TransitionPresets);\nconst _sfc_main$t = defineComponent({\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n items: {\n type: Array,\n required: true\n },\n x: {\n type: Number,\n default: 0\n },\n y: {\n type: Number,\n default: 0\n },\n isNested: {\n type: Boolean,\n default: false\n },\n isFlipped: {\n type: Object,\n default: () => ({ x: false, y: false })\n },\n flippable: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"click\", \"update:modelValue\"],\n setup(props, { emit }) {\n let activeMenuResetTimeout = null;\n const el = ref(null);\n const activeMenu = ref(-1);\n const height = ref(0);\n const rootIsFlipped = ref({ x: false, y: false });\n const flippedX = computed(() => props.flippable && (rootIsFlipped.value.x || props.isFlipped.x));\n const flippedY = computed(() => props.flippable && (rootIsFlipped.value.y || props.isFlipped.y));\n const styles = computed(() => {\n const s = {};\n if (!props.isNested) {\n s.top = (flippedY.value ? props.y - height.value : props.y) + \"px\";\n s.left = props.x + \"px\";\n }\n return s;\n });\n const classes = computed(() => {\n return {\n \"--flipped-x\": flippedX.value,\n \"--flipped-y\": flippedY.value,\n \"--nested\": props.isNested\n };\n });\n const itemsWithHoverProperty = computed(() => props.items.map((i) => ({ ...i, hover: false })));\n watch([() => props.y, () => props.items], () => {\n var _a2, _b, _c, _d;\n height.value = props.items.length * 30;\n const parentWidth = ((_b = (_a2 = el.value) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.offsetWidth) ?? 0;\n const parentHeight = ((_d = (_c = el.value) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.offsetHeight) ?? 0;\n rootIsFlipped.value.x = !props.isNested && props.x > parentWidth * 0.75;\n rootIsFlipped.value.y = !props.isNested && props.y + height.value > parentHeight - 20;\n });\n onClickOutside(el, () => {\n if (props.modelValue) {\n emit(\"update:modelValue\", false);\n }\n });\n const onClick = (item) => {\n if (!item.submenu && item.value) {\n emit(\"click\", item.value);\n emit(\"update:modelValue\", false);\n }\n };\n const onChildClick = (value) => {\n emit(\"click\", value);\n activeMenu.value = -1;\n if (!props.isNested) {\n emit(\"update:modelValue\", false);\n }\n };\n const onMouseEnter = (event, index) => {\n if (props.items[index].submenu) {\n activeMenu.value = index;\n if (activeMenuResetTimeout !== null) {\n clearTimeout(activeMenuResetTimeout);\n activeMenuResetTimeout = null;\n }\n }\n };\n const onMouseLeave = (event, index) => {\n if (props.items[index].submenu) {\n activeMenuResetTimeout = window.setTimeout(() => {\n activeMenu.value = -1;\n activeMenuResetTimeout = null;\n }, 200);\n }\n };\n return {\n el,\n activeMenu,\n flippedX,\n flippedY,\n styles,\n classes,\n itemsWithHoverProperty,\n onClick,\n onChildClick,\n onClickOutside,\n onMouseEnter,\n onMouseLeave\n };\n }\n});\nconst _hoisted_1$p = [\"onMouseenter\", \"onMouseleave\", \"onClick\"];\nconst _hoisted_2$j = { class: \"flex-fill\" };\nconst _hoisted_3$f = {\n key: 0,\n class: \"__submenu-icon\",\n style: { \"line-height\": \"1em\" }\n};\nconst _hoisted_4$d = /* @__PURE__ */ createElementVNode(\"svg\", {\n width: \"13\",\n height: \"13\",\n viewBox: \"-60 120 250 250\"\n}, [\n /* @__PURE__ */ createElementVNode(\"path\", {\n d: \"M160.875 279.5625 L70.875 369.5625 L70.875 189.5625 L160.875 279.5625 Z\",\n stroke: \"none\",\n fill: \"white\"\n })\n], -1);\nconst _hoisted_5$7 = [\n _hoisted_4$d\n];\nfunction _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_context_menu = resolveComponent(\"context-menu\", true);\n return openBlock(), createBlock(Transition, { name: \"slide-fade\" }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-context-menu\", _ctx.classes]),\n style: normalizeStyle(_ctx.styles)\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.itemsWithHoverProperty, (item, index) => {\n return openBlock(), createElementBlock(Fragment, null, [\n item.isDivider ? (openBlock(), createElementBlock(\"div\", {\n key: `d-${index}`,\n class: \"divider\"\n })) : (openBlock(), createElementBlock(\"div\", {\n key: `i-${index}`,\n class: normalizeClass([\"item\", { \"submenu\": !!item.submenu, \"--disabled\": !!item.disabled }]),\n onMouseenter: ($event) => _ctx.onMouseEnter($event, index),\n onMouseleave: ($event) => _ctx.onMouseLeave($event, index),\n onClick: withModifiers(($event) => _ctx.onClick(item), [\"stop\", \"prevent\"])\n }, [\n createElementVNode(\"div\", _hoisted_2$j, toDisplayString(item.label), 1),\n item.submenu ? (openBlock(), createElementBlock(\"div\", _hoisted_3$f, _hoisted_5$7)) : createCommentVNode(\"\", true),\n item.submenu ? (openBlock(), createBlock(_component_context_menu, {\n key: 1,\n value: _ctx.activeMenu === index,\n items: item.submenu,\n \"is-nested\": true,\n \"is-flipped\": { x: _ctx.flippedX, y: _ctx.flippedY },\n flippable: _ctx.flippable,\n onClick: _ctx.onChildClick\n }, null, 8, [\"value\", \"items\", \"is-flipped\", \"flippable\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], 42, _hoisted_1$p))\n ], 64);\n }), 256))\n ], 6), [\n [vShow, _ctx.modelValue]\n ])\n ]),\n _: 1\n });\n}\nconst ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$t, [[\"render\", _sfc_render$s]]);\nconst _sfc_main$s = {};\nconst _hoisted_1$o = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$i = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$e = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_4$c = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"19\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_5$6 = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"5\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_6$4 = [\n _hoisted_2$i,\n _hoisted_3$e,\n _hoisted_4$c,\n _hoisted_5$6\n];\nfunction _sfc_render$r(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$o, _hoisted_6$4);\n}\nconst VerticalDots = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"render\", _sfc_render$r]]);\nconst _sfc_main$r = defineComponent({\n props: {\n node: {\n type: Object,\n required: true\n },\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const hoveredOver = inject(\"hoveredOver\");\n const el = ref(null);\n const isConnected = computed(() => props.intf.connectionCount > 0);\n const classes = computed(() => ({\n \"--input\": props.intf.isInput,\n \"--output\": !props.intf.isInput,\n \"--connected\": isConnected.value\n }));\n const showComponent = computed(\n () => props.intf.component && props.intf.connectionCount === 0 && (props.intf.isInput || !props.intf.port)\n );\n const startHover = () => {\n hoveredOver(props.intf);\n };\n const endHover = () => {\n hoveredOver(void 0);\n };\n const onRender = () => {\n if (el.value) {\n viewModel.value.hooks.renderInterface.execute({ intf: props.intf, el: el.value });\n }\n };\n const openSidebar = () => {\n const sidebar = viewModel.value.displayedGraph.sidebar;\n sidebar.nodeId = props.node.id;\n sidebar.optionName = props.intf.name;\n sidebar.visible = true;\n };\n onMounted(onRender);\n onUpdated(onRender);\n return { el, isConnected, classes, showComponent, startHover, endHover, openSidebar };\n }\n});\nconst _hoisted_1$n = [\"id\"];\nconst _hoisted_2$h = {\n key: 2,\n class: \"align-middle\"\n};\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n id: _ctx.intf.id,\n ref: \"el\",\n class: normalizeClass([\"baklava-node-interface\", _ctx.classes])\n }, [\n _ctx.intf.port ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__port\",\n onPointerover: _cache[0] || (_cache[0] = (...args) => _ctx.startHover && _ctx.startHover(...args)),\n onPointerout: _cache[1] || (_cache[1] = (...args) => _ctx.endHover && _ctx.endHover(...args))\n }, null, 32)) : createCommentVNode(\"\", true),\n _ctx.showComponent ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.intf.component), {\n key: 1,\n modelValue: _ctx.intf.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.intf.value = $event),\n node: _ctx.node,\n intf: _ctx.intf,\n onOpenSidebar: _ctx.openSidebar\n }, null, 40, [\"modelValue\", \"node\", \"intf\", \"onOpenSidebar\"])) : (openBlock(), createElementBlock(\"span\", _hoisted_2$h, toDisplayString(_ctx.intf.name), 1))\n ], 10, _hoisted_1$n);\n}\nconst NodeInterface = /* @__PURE__ */ _export_sfc(_sfc_main$r, [[\"render\", _sfc_render$q]]);\nconst _hoisted_1$m = [\"id\", \"data-node-type\"];\nconst _hoisted_2$g = [\"onPointerdown\"];\nconst _hoisted_3$d = { class: \"__title-label\" };\nconst _hoisted_4$b = { class: \"__menu\" };\nconst _hoisted_5$5 = [\"onKeydown\"];\nconst _hoisted_6$3 = { class: \"__content\" };\nconst _hoisted_7$1 = { class: \"__outputs\" };\nconst _hoisted_8$1 = { class: \"__inputs\" };\nconst _sfc_main$q = /* @__PURE__ */ defineComponent({\n __name: \"Node\",\n props: {\n node: null,\n selected: { type: Boolean, default: false }\n },\n emits: [\"select\"],\n setup(__props, { emit }) {\n const props = __props;\n const { viewModel } = useViewModel();\n const { graph, switchGraph } = useGraph();\n const dragMove = useDragMove(toRef(props.node, \"position\"));\n const el = ref(null);\n const renaming = ref(false);\n const tempName = ref(\"\");\n const renameInputEl = ref(null);\n const showContextMenu = ref(false);\n const contextMenuItems = computed(() => {\n const items = [\n { value: \"rename\", label: \"Rename\" },\n { value: \"delete\", label: \"Delete\" }\n ];\n if (props.node.type.startsWith(GRAPH_NODE_TYPE_PREFIX)) {\n items.push({ value: \"editSubgraph\", label: \"Edit Subgraph\" });\n }\n return items;\n });\n const classes = computed(() => ({\n \"--selected\": props.selected,\n \"--dragging\": dragMove.dragging.value,\n \"--two-column\": !!props.node.twoColumn\n }));\n const styles = computed(() => {\n var _a2, _b;\n return {\n top: `${((_a2 = props.node.position) == null ? void 0 : _a2.y) ?? 0}px`,\n left: `${((_b = props.node.position) == null ? void 0 : _b.x) ?? 0}px`,\n width: `${props.node.width ?? 200}px`\n };\n });\n const displayedInputs = computed(() => Object.values(props.node.inputs).filter((ni) => !ni.hidden));\n const displayedOutputs = computed(() => Object.values(props.node.outputs).filter((ni) => !ni.hidden));\n const select = () => {\n emit(\"select\");\n };\n const startDrag = (ev) => {\n dragMove.onPointerDown(ev);\n document.addEventListener(\"pointermove\", dragMove.onPointerMove);\n document.addEventListener(\"pointerup\", stopDrag);\n select();\n };\n const stopDrag = () => {\n dragMove.onPointerUp();\n document.removeEventListener(\"pointermove\", dragMove.onPointerMove);\n document.removeEventListener(\"pointerup\", stopDrag);\n };\n const openContextMenu = () => {\n showContextMenu.value = true;\n };\n const onContextMenuClick = async (action) => {\n var _a2;\n switch (action) {\n case \"delete\":\n graph.value.removeNode(props.node);\n break;\n case \"rename\":\n tempName.value = props.node.title;\n renaming.value = true;\n await nextTick();\n (_a2 = renameInputEl.value) == null ? void 0 : _a2.focus();\n break;\n case \"editSubgraph\":\n switchGraph(props.node.template);\n break;\n }\n };\n const doneRenaming = () => {\n props.node.title = tempName.value;\n renaming.value = false;\n };\n const onRender = () => {\n if (el.value) {\n viewModel.value.hooks.renderNode.execute({ node: props.node, el: el.value });\n }\n };\n onMounted(onRender);\n onUpdated(onRender);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: __props.node.id,\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([\"baklava-node\", unref(classes)]),\n style: normalizeStyle(unref(styles)),\n \"data-node-type\": __props.node.type,\n onPointerdown: select\n }, [\n createElementVNode(\"div\", {\n class: \"__title\",\n onPointerdown: withModifiers(startDrag, [\"self\", \"stop\"])\n }, [\n !renaming.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createElementVNode(\"div\", _hoisted_3$d, toDisplayString(__props.node.title), 1),\n createElementVNode(\"div\", _hoisted_4$b, [\n createVNode(VerticalDots, {\n class: \"--clickable\",\n onClick: openContextMenu\n }),\n createVNode(ContextMenu, {\n modelValue: showContextMenu.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => showContextMenu.value = $event),\n x: 0,\n y: 0,\n items: unref(contextMenuItems),\n onClick: onContextMenuClick\n }, null, 8, [\"modelValue\", \"items\"])\n ])\n ], 64)) : withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 1,\n ref_key: \"renameInputEl\",\n ref: renameInputEl,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => tempName.value = $event),\n type: \"text\",\n class: \"baklava-input\",\n placeholder: \"Node Name\",\n onBlur: doneRenaming,\n onKeydown: withKeys(doneRenaming, [\"enter\"])\n }, null, 40, _hoisted_5$5)), [\n [vModelText, tempName.value]\n ])\n ], 40, _hoisted_2$g),\n createElementVNode(\"div\", _hoisted_6$3, [\n createElementVNode(\"div\", _hoisted_7$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(displayedOutputs), (output) => {\n return openBlock(), createBlock(NodeInterface, {\n key: output.id,\n node: __props.node,\n intf: output\n }, null, 8, [\"node\", \"intf\"]);\n }), 128))\n ]),\n createElementVNode(\"div\", _hoisted_8$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(displayedInputs), (input) => {\n return openBlock(), createBlock(NodeInterface, {\n key: input.id,\n node: __props.node,\n intf: input\n }, null, 8, [\"node\", \"intf\"]);\n }), 128))\n ])\n ])\n ], 46, _hoisted_1$m);\n };\n }\n});\nconst _sfc_main$p = defineComponent({\n props: {\n x1: {\n type: Number,\n required: true\n },\n y1: {\n type: Number,\n required: true\n },\n x2: {\n type: Number,\n required: true\n },\n y2: {\n type: Number,\n required: true\n },\n state: {\n type: Number,\n default: TemporaryConnectionState.NONE\n },\n isTemporary: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const transform = (x, y) => {\n const tx = (x + graph.value.panning.x) * graph.value.scaling;\n const ty = (y + graph.value.panning.y) * graph.value.scaling;\n return [tx, ty];\n };\n const d = computed(() => {\n const [tx1, ty1] = transform(props.x1, props.y1);\n const [tx2, ty2] = transform(props.x2, props.y2);\n if (viewModel.value.settings.useStraightConnections) {\n return `M ${tx1} ${ty1} L ${tx2} ${ty2}`;\n } else {\n const dx = 0.3 * Math.abs(tx1 - tx2);\n return `M ${tx1} ${ty1} C ${tx1 + dx} ${ty1}, ${tx2 - dx} ${ty2}, ${tx2} ${ty2}`;\n }\n });\n const classes = computed(() => ({\n \"--temporary\": props.isTemporary,\n \"--allowed\": props.state === TemporaryConnectionState.ALLOWED,\n \"--forbidden\": props.state === TemporaryConnectionState.FORBIDDEN\n }));\n return { d, classes };\n }\n});\nconst _hoisted_1$l = [\"d\"];\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"path\", {\n class: normalizeClass([\"baklava-connection\", _ctx.classes]),\n d: _ctx.d\n }, null, 10, _hoisted_1$l);\n}\nconst ConnectionView = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$p]]);\nfunction getDomElementOfNode(node) {\n return document.getElementById(node.id);\n}\nfunction getDomElements(ni) {\n const interfaceDOM = document.getElementById(ni.id);\n const portDOM = interfaceDOM == null ? void 0 : interfaceDOM.getElementsByClassName(\"__port\");\n return {\n node: (interfaceDOM == null ? void 0 : interfaceDOM.closest(\".baklava-node\")) ?? null,\n interface: interfaceDOM,\n port: portDOM && portDOM.length > 0 ? portDOM[0] : null\n };\n}\nconst _sfc_main$o = defineComponent({\n components: {\n \"connection-view\": ConnectionView\n },\n props: {\n connection: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const { graph } = useGraph();\n let resizeObserver;\n const d = ref({ x1: 0, y1: 0, x2: 0, y2: 0 });\n const state = computed(\n () => props.connection.isInDanger ? TemporaryConnectionState.FORBIDDEN : TemporaryConnectionState.NONE\n );\n const fromNodePosition = computed(() => {\n var _a2;\n return (_a2 = graph.value.findNodeById(props.connection.from.nodeId)) == null ? void 0 : _a2.position;\n });\n const toNodePosition = computed(() => {\n var _a2;\n return (_a2 = graph.value.findNodeById(props.connection.to.nodeId)) == null ? void 0 : _a2.position;\n });\n const getPortCoordinates2 = (resolved) => {\n if (resolved.node && resolved.interface && resolved.port) {\n return [\n resolved.node.offsetLeft + resolved.interface.offsetLeft + resolved.port.offsetLeft + resolved.port.clientWidth / 2,\n resolved.node.offsetTop + resolved.interface.offsetTop + resolved.port.offsetTop + resolved.port.clientHeight / 2\n ];\n } else {\n return [0, 0];\n }\n };\n const updateCoords = () => {\n const from = getDomElements(props.connection.from);\n const to = getDomElements(props.connection.to);\n if (from.node && to.node) {\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver(() => {\n updateCoords();\n });\n resizeObserver.observe(from.node);\n resizeObserver.observe(to.node);\n }\n }\n const [x1, y1] = getPortCoordinates2(from);\n const [x2, y2] = getPortCoordinates2(to);\n d.value = { x1, y1, x2, y2 };\n };\n onMounted(async () => {\n await nextTick();\n updateCoords();\n });\n onBeforeUnmount(() => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n });\n watch([fromNodePosition, toNodePosition], () => updateCoords(), { deep: true });\n return { d, state };\n }\n});\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_connection_view = resolveComponent(\"connection-view\");\n return openBlock(), createBlock(_component_connection_view, {\n x1: _ctx.d.x1,\n y1: _ctx.d.y1,\n x2: _ctx.d.x2,\n y2: _ctx.d.y2,\n state: _ctx.state\n }, null, 8, [\"x1\", \"y1\", \"x2\", \"y2\", \"state\"]);\n}\nconst ConnectionWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$o]]);\nfunction getPortCoordinates(resolved) {\n if (resolved.node && resolved.interface && resolved.port) {\n return [\n resolved.node.offsetLeft + resolved.interface.offsetLeft + resolved.port.offsetLeft + resolved.port.clientWidth / 2,\n resolved.node.offsetTop + resolved.interface.offsetTop + resolved.port.offsetTop + resolved.port.clientHeight / 2\n ];\n } else {\n return [0, 0];\n }\n}\nconst _sfc_main$n = defineComponent({\n components: {\n \"connection-view\": ConnectionView\n },\n props: {\n connection: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const status = computed(() => props.connection ? props.connection.status : TemporaryConnectionState.NONE);\n const d = computed(() => {\n if (!props.connection) {\n return {\n input: [0, 0],\n output: [0, 0]\n };\n }\n const start = getPortCoordinates(getDomElements(props.connection.from));\n const end = props.connection.to ? getPortCoordinates(getDomElements(props.connection.to)) : [props.connection.mx || start[0], props.connection.my || start[1]];\n if (props.connection.from.isInput) {\n return {\n input: end,\n output: start\n };\n } else {\n return {\n input: start,\n output: end\n };\n }\n });\n return { d, status };\n }\n});\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_connection_view = resolveComponent(\"connection-view\");\n return openBlock(), createBlock(_component_connection_view, {\n x1: _ctx.d.input[0],\n y1: _ctx.d.input[1],\n x2: _ctx.d.output[0],\n y2: _ctx.d.output[1],\n state: _ctx.status,\n \"is-temporary\": \"\"\n }, null, 8, [\"x1\", \"y1\", \"x2\", \"y2\", \"state\"]);\n}\nconst TemporaryConnection = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$n]]);\nconst _sfc_main$m = defineComponent({\n setup() {\n const { graph } = useGraph();\n const el = ref(null);\n const width = ref(300);\n const node = computed(() => {\n const id = graph.value.sidebar.nodeId;\n return graph.value.nodes.find((x) => x.id === id);\n });\n const styles = computed(() => ({\n width: `${width.value}px`\n }));\n const displayedInterfaces = computed(() => {\n if (!node.value) {\n return [];\n }\n const allIntfs = [...Object.values(node.value.inputs), ...Object.values(node.value.outputs)];\n return allIntfs.filter((intf) => intf.displayInSidebar && intf.component);\n });\n const close = () => {\n graph.value.sidebar.visible = false;\n };\n const startResize = () => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\n \"mouseup\",\n () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n },\n { once: true }\n );\n };\n const onMouseMove = (event) => {\n var _a2, _b;\n const maxwidth = ((_b = (_a2 = el.value) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.getBoundingClientRect().width) ?? 500;\n width.value -= event.movementX;\n if (width.value < 300) {\n width.value = 300;\n } else if (width.value > 0.9 * maxwidth) {\n width.value = 0.9 * maxwidth;\n }\n };\n return { el, graph, node, styles, displayedInterfaces, startResize, close };\n }\n});\nconst _hoisted_1$k = { class: \"__header\" };\nconst _hoisted_2$f = { class: \"__node-name\" };\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-sidebar\", { \"--open\": _ctx.graph.sidebar.visible }]),\n style: normalizeStyle(_ctx.styles)\n }, [\n createElementVNode(\"div\", {\n class: \"__resizer\",\n onMousedown: _cache[0] || (_cache[0] = (...args) => _ctx.startResize && _ctx.startResize(...args))\n }, null, 32),\n createElementVNode(\"div\", _hoisted_1$k, [\n createElementVNode(\"button\", {\n tabindex: \"-1\",\n class: \"__close\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.close && _ctx.close(...args))\n }, \" × \"),\n createElementVNode(\"div\", _hoisted_2$f, [\n createElementVNode(\"b\", null, toDisplayString(_ctx.node ? _ctx.node.title : \"\"), 1)\n ])\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.displayedInterfaces, (intf) => {\n return openBlock(), createElementBlock(\"div\", {\n key: intf.id,\n class: \"__interface\"\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(intf.component), {\n modelValue: intf.value,\n \"onUpdate:modelValue\": ($event) => intf.value = $event,\n node: _ctx.node,\n intf\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"node\", \"intf\"]))\n ]);\n }), 128))\n ], 6);\n}\nconst Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$m]]);\nconst _sfc_main$l = defineComponent({\n setup() {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const canvas = ref(null);\n const showViewBounds = ref(false);\n let ctx;\n let dragging = false;\n let bounds = { x1: 0, y1: 0, x2: 0, y2: 0 };\n const updateCanvas = () => {\n var _a2, _b;\n if (!ctx) {\n return;\n }\n const nodeCoords = /* @__PURE__ */ new Map();\n const nodeDomElements = /* @__PURE__ */ new Map();\n for (const n of graph.value.nodes) {\n const domElement = getDomElementOfNode(n);\n const width = (domElement == null ? void 0 : domElement.clientWidth) ?? 0;\n const height = (domElement == null ? void 0 : domElement.clientHeight) ?? 0;\n const posX = ((_a2 = n.position) == null ? void 0 : _a2.x) ?? 0;\n const posY = ((_b = n.position) == null ? void 0 : _b.y) ?? 0;\n nodeCoords.set(n, {\n x1: posX,\n y1: posY,\n x2: posX + width,\n y2: posY + height\n });\n nodeDomElements.set(n, domElement);\n }\n const newBounds = {\n x1: Number.MAX_SAFE_INTEGER,\n y1: Number.MAX_SAFE_INTEGER,\n x2: Number.MIN_SAFE_INTEGER,\n y2: Number.MIN_SAFE_INTEGER\n };\n for (const nc of nodeCoords.values()) {\n if (nc.x1 < newBounds.x1) {\n newBounds.x1 = nc.x1;\n }\n if (nc.y1 < newBounds.y1) {\n newBounds.y1 = nc.y1;\n }\n if (nc.x2 > newBounds.x2) {\n newBounds.x2 = nc.x2;\n }\n if (nc.y2 > newBounds.y2) {\n newBounds.y2 = nc.y2;\n }\n }\n const padding = 50;\n newBounds.x1 -= padding;\n newBounds.y1 -= padding;\n newBounds.x2 += padding;\n newBounds.y2 += padding;\n bounds = newBounds;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.strokeStyle = \"white\";\n for (const c of graph.value.connections) {\n const [origX1, origY1] = getPortCoordinates(getDomElements(c.from));\n const [origX2, origY2] = getPortCoordinates(getDomElements(c.to));\n const [x1, y1] = transformCoordinates(origX1, origY1);\n const [x2, y2] = transformCoordinates(origX2, origY2);\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n if (viewModel.value.settings.useStraightConnections) {\n ctx.lineTo(x2, y2);\n } else {\n const dx = 0.3 * Math.abs(x1 - x2);\n ctx.bezierCurveTo(x1 + dx, y1, x2 - dx, y2, x2, y2);\n }\n ctx.stroke();\n }\n ctx.strokeStyle = \"lightgray\";\n for (const [n, nc] of nodeCoords.entries()) {\n const [x1, y1] = transformCoordinates(nc.x1, nc.y1);\n const [x2, y2] = transformCoordinates(nc.x2, nc.y2);\n ctx.fillStyle = getNodeColor(nodeDomElements.get(n));\n ctx.beginPath();\n ctx.rect(x1, y1, x2 - x1, y2 - y1);\n ctx.fill();\n ctx.stroke();\n }\n if (showViewBounds.value) {\n const viewBounds = getViewBounds();\n const [x1, y1] = transformCoordinates(viewBounds.x1, viewBounds.y1);\n const [x2, y2] = transformCoordinates(viewBounds.x2, viewBounds.y2);\n ctx.fillStyle = \"rgba(255, 255, 255, 0.2)\";\n ctx.fillRect(x1, y1, x2 - x1, y2 - y1);\n }\n };\n const transformCoordinates = (origX, origY) => {\n return [\n (origX - bounds.x1) / (bounds.x2 - bounds.x1) * ctx.canvas.clientWidth,\n (origY - bounds.y1) / (bounds.y2 - bounds.y1) * ctx.canvas.clientHeight\n ];\n };\n const reverseTransform = (thisX, thisY) => {\n return [\n thisX * (bounds.x2 - bounds.x1) / ctx.canvas.clientWidth + bounds.x1,\n thisY * (bounds.y2 - bounds.y1) / ctx.canvas.clientHeight + bounds.y1\n ];\n };\n const getNodeColor = (domElement) => {\n if (domElement) {\n const content = domElement.querySelector(\".__content\");\n if (content) {\n const contentColor = getComputedColor(content);\n if (contentColor) {\n return contentColor;\n }\n }\n const nodeColor = getComputedColor(domElement);\n if (nodeColor) {\n return nodeColor;\n }\n }\n return \"gray\";\n };\n const getComputedColor = (domElement) => {\n const c = getComputedStyle(domElement).backgroundColor;\n if (c && c !== \"rgba(0, 0, 0, 0)\") {\n return c;\n }\n };\n const getViewBounds = () => {\n const parentWidth = canvas.value.parentElement.offsetWidth;\n const parentHeight = canvas.value.parentElement.offsetHeight;\n const x2 = parentWidth / graph.value.scaling - graph.value.panning.x;\n const y2 = parentHeight / graph.value.scaling - graph.value.panning.y;\n return { x1: -graph.value.panning.x, y1: -graph.value.panning.y, x2, y2 };\n };\n const mousedown = (ev) => {\n if (ev.button === 0) {\n dragging = true;\n mousemove(ev);\n }\n };\n const mousemove = (ev) => {\n if (dragging) {\n const [cx, cy] = reverseTransform(ev.offsetX, ev.offsetY);\n const viewBounds = getViewBounds();\n const dx = (viewBounds.x1 - viewBounds.x2) / 2;\n const dy = (viewBounds.y1 - viewBounds.y2) / 2;\n graph.value.panning.x = -(cx + dx);\n graph.value.panning.y = -(cy + dy);\n }\n };\n const mouseup = () => {\n dragging = false;\n };\n const mouseenter = () => {\n showViewBounds.value = true;\n };\n const mouseleave = () => {\n showViewBounds.value = false;\n mouseup();\n };\n onMounted(() => {\n ctx = canvas.value.getContext(\"2d\");\n ctx.imageSmoothingQuality = \"high\";\n updateCanvas();\n });\n return { canvas, showViewBounds, mousedown, mousemove, mouseup, mouseenter, mouseleave };\n }\n});\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"canvas\", {\n ref: \"canvas\",\n class: \"baklava-minimap\",\n onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.mouseenter && _ctx.mouseenter(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.mouseleave && _ctx.mouseleave(...args)),\n onMousedown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.mousedown && _ctx.mousedown(...args), [\"self\"])),\n onMousemove: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.mousemove && _ctx.mousemove(...args), [\"self\"])),\n onMouseup: _cache[4] || (_cache[4] = (...args) => _ctx.mouseup && _ctx.mouseup(...args))\n }, null, 544);\n}\nconst Minimap = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$k = defineComponent({\n components: { ContextMenu, VerticalDots },\n props: {\n type: {\n type: String,\n required: true\n },\n title: {\n type: String,\n required: true\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const { switchGraph } = useGraph();\n const showContextMenu = ref(false);\n const hasContextMenu = computed(() => props.type.startsWith(GRAPH_NODE_TYPE_PREFIX));\n const contextMenuItems = [\n { label: \"Edit Subgraph\", value: \"editSubgraph\" },\n { label: \"Delete Subgraph\", value: \"deleteSubgraph\" }\n ];\n const openContextMenu = () => {\n showContextMenu.value = true;\n };\n const onContextMenuClick = (action) => {\n const graphTemplateId = props.type.substring(GRAPH_NODE_TYPE_PREFIX.length);\n const graphTemplate = viewModel.value.editor.graphTemplates.find((gt) => gt.id === graphTemplateId);\n if (!graphTemplate) {\n return;\n }\n switch (action) {\n case \"editSubgraph\":\n switchGraph(graphTemplate);\n break;\n case \"deleteSubgraph\":\n viewModel.value.editor.removeGraphTemplate(graphTemplate);\n break;\n }\n };\n return { showContextMenu, hasContextMenu, contextMenuItems, openContextMenu, onContextMenuClick };\n }\n});\nconst _hoisted_1$j = [\"data-node-type\"];\nconst _hoisted_2$e = { class: \"__title\" };\nconst _hoisted_3$c = { class: \"__title-label\" };\nconst _hoisted_4$a = {\n key: 0,\n class: \"__menu\"\n};\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vertical_dots = resolveComponent(\"vertical-dots\");\n const _component_context_menu = resolveComponent(\"context-menu\");\n return openBlock(), createElementBlock(\"div\", {\n class: \"baklava-node --palette\",\n \"data-node-type\": _ctx.type\n }, [\n createElementVNode(\"div\", _hoisted_2$e, [\n createElementVNode(\"div\", _hoisted_3$c, toDisplayString(_ctx.title), 1),\n _ctx.hasContextMenu ? (openBlock(), createElementBlock(\"div\", _hoisted_4$a, [\n createVNode(_component_vertical_dots, {\n class: \"--clickable\",\n onPointerdown: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"stop\", \"prevent\"])),\n onClick: withModifiers(_ctx.openContextMenu, [\"stop\", \"prevent\"])\n }, null, 8, [\"onClick\"]),\n createVNode(_component_context_menu, {\n modelValue: _ctx.showContextMenu,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => _ctx.showContextMenu = $event),\n x: -100,\n y: 0,\n items: _ctx.contextMenuItems,\n onClick: _ctx.onContextMenuClick,\n onPointerdown: _cache[2] || (_cache[2] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, null, 8, [\"modelValue\", \"items\", \"onClick\"])\n ])) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_1$j);\n}\nconst PaletteEntry = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$k]]);\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nconst randomUUID = typeof crypto !== \"undefined\" && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nconst native = {\n randomUUID\n};\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nconst _sfc_main$j = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const onClick = () => {\n if (props.intf.callback) {\n props.intf.callback();\n }\n };\n return { onClick };\n }\n});\nconst _hoisted_1$i = [\"title\"];\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"button\", {\n class: \"baklava-button --block\",\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_1$i);\n}\nconst ButtonInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$j]]);\nclass ButtonInterface extends NodeInterface$1 {\n constructor(name, callback) {\n super(name, void 0);\n this.component = markRaw(ButtonInterfaceComponent);\n this.callback = callback;\n this.setPort(false);\n }\n}\nconst _sfc_main$i = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n }\n});\nconst _hoisted_1$h = [\"title\"];\nconst _hoisted_2$d = /* @__PURE__ */ createElementVNode(\"div\", { class: \"__checkmark-container\" }, [\n /* @__PURE__ */ createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\"\n }, [\n /* @__PURE__ */ createElementVNode(\"path\", {\n class: \"__checkmark\",\n d: \"M 6 5 L 6 10 L 16 10\",\n transform: \"rotate(-45 10 10)\"\n })\n ])\n], -1);\nconst _hoisted_3$b = { class: \"__label\" };\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"baklava-checkbox\", { \"--checked\": _ctx.intf.value }]),\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.intf.value = !_ctx.intf.value)\n }, [\n _hoisted_2$d,\n createElementVNode(\"div\", _hoisted_3$b, toDisplayString(_ctx.intf.name), 1)\n ], 10, _hoisted_1$h);\n}\nconst CheckboxInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$i]]);\nclass CheckboxInterface extends NodeInterface$1 {\n constructor() {\n super(...arguments);\n this.component = markRaw(CheckboxInterfaceComponent);\n }\n}\nconst MAX_STRING_LENGTH = 9;\nfunction isValidator(intf) {\n return \"validate\" in intf;\n}\nclass BaseNumericInterface extends NodeInterface$1 {\n constructor(name, value, min, max) {\n super(name, value);\n this.min = min;\n this.max = max;\n }\n validate(v) {\n return (!this.min || v >= this.min) && (!this.max || v <= this.max);\n }\n}\nconst useBaseNumericInterface = (intf, precision = 3) => {\n const inputEl = ref(null);\n const editMode = ref(false);\n const invalid = ref(false);\n const tempValue = ref(\"0\");\n const stringRepresentation = computed(() => {\n const s = intf.value.value.toFixed(precision);\n return s.length > MAX_STRING_LENGTH ? intf.value.value.toExponential(MAX_STRING_LENGTH - 5) : s;\n });\n const validate = (v) => {\n if (Number.isNaN(v)) {\n return false;\n } else if (isValidator(intf.value)) {\n return intf.value.validate(v);\n } else {\n return true;\n }\n };\n const setValue = (newValue) => {\n if (validate(newValue)) {\n intf.value.value = newValue;\n }\n };\n watch(tempValue, () => {\n invalid.value = false;\n });\n const enterEditMode = async () => {\n tempValue.value = intf.value.value.toFixed(precision);\n editMode.value = true;\n await nextTick();\n if (inputEl.value) {\n inputEl.value.focus();\n }\n };\n const leaveEditMode = () => {\n const v = parseFloat(tempValue.value);\n if (!validate(v)) {\n invalid.value = true;\n } else {\n setValue(v);\n editMode.value = false;\n }\n };\n return {\n editMode,\n invalid,\n tempValue,\n inputEl,\n stringRepresentation,\n validate,\n setValue,\n enterEditMode,\n leaveEditMode\n };\n};\nconst _sfc_main$h = {};\nconst _hoisted_1$g = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$c = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"6 9 12 15 18 9\" }, null, -1);\nconst _hoisted_3$a = [\n _hoisted_2$c\n];\nfunction _sfc_render$h(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$g, _hoisted_3$a);\n}\nconst Arrow = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$g = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"), 0);\n const increment = () => {\n baseNumericInterface.setValue(props.intf.value + 1);\n };\n const decrement = () => {\n baseNumericInterface.setValue(props.intf.value - 1);\n };\n return { ...baseNumericInterface, increment, decrement };\n }\n});\nconst _hoisted_1$f = { class: \"baklava-num-input\" };\nconst _hoisted_2$b = [\"title\"];\nconst _hoisted_3$9 = { class: \"__value\" };\nconst _hoisted_4$9 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$f, [\n createElementVNode(\"div\", {\n class: \"__button --dec\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.decrement && _ctx.decrement(...args))\n }, [\n createVNode(_component_i_arrow)\n ]),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__content\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.enterEditMode && _ctx.enterEditMode(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__label\",\n title: _ctx.intf.name\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_2$b),\n createElementVNode(\"div\", _hoisted_3$9, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$9, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[3] || (_cache[3] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[4] || (_cache[4] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"__button --inc\",\n onClick: _cache[5] || (_cache[5] = (...args) => _ctx.increment && _ctx.increment(...args))\n }, [\n createVNode(_component_i_arrow)\n ])\n ]);\n}\nconst IntegerInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$g]]);\nclass IntegerInterface extends BaseNumericInterface {\n constructor() {\n super(...arguments);\n this.component = markRaw(IntegerInterfaceComponent);\n }\n validate(v) {\n return Number.isInteger(v) && super.validate(v);\n }\n}\nconst _sfc_main$f = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"));\n const increment = () => {\n baseNumericInterface.setValue(props.intf.value + 0.1);\n };\n const decrement = () => {\n baseNumericInterface.setValue(props.intf.value - 0.1);\n };\n return { ...baseNumericInterface, increment, decrement };\n }\n});\nconst _hoisted_1$e = { class: \"baklava-num-input\" };\nconst _hoisted_2$a = [\"title\"];\nconst _hoisted_3$8 = { class: \"__value\" };\nconst _hoisted_4$8 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n createElementVNode(\"div\", {\n class: \"__button --dec\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.decrement && _ctx.decrement(...args))\n }, [\n createVNode(_component_i_arrow)\n ]),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__content\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.enterEditMode && _ctx.enterEditMode(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__label\",\n title: _ctx.intf.name\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_2$a),\n createElementVNode(\"div\", _hoisted_3$8, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$8, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[3] || (_cache[3] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[4] || (_cache[4] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"__button --inc\",\n onClick: _cache[5] || (_cache[5] = (...args) => _ctx.increment && _ctx.increment(...args))\n }, [\n createVNode(_component_i_arrow)\n ])\n ]);\n}\nconst NumberInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$f]]);\nclass NumberInterface extends BaseNumericInterface {\n constructor() {\n super(...arguments);\n this.component = markRaw(NumberInterfaceComponent);\n }\n}\nconst _sfc_main$e = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const el = ref(null);\n const open = ref(false);\n const selectedItem = computed(\n () => props.intf.items.find(\n (v) => typeof v === \"string\" ? v === props.intf.value : v.value === props.intf.value\n )\n );\n const selectedText = computed(() => {\n if (selectedItem.value) {\n return typeof selectedItem.value === \"string\" ? selectedItem.value : selectedItem.value.text;\n } else {\n return \"\";\n }\n });\n const setSelected = (item) => {\n props.intf.value = typeof item === \"string\" ? item : item.value;\n };\n onClickOutside(el, () => {\n open.value = false;\n });\n return { el, open, selectedItem, selectedText, setSelected };\n }\n});\nconst _hoisted_1$d = [\"title\"];\nconst _hoisted_2$9 = { class: \"__selected\" };\nconst _hoisted_3$7 = { class: \"__text\" };\nconst _hoisted_4$7 = { class: \"__icon\" };\nconst _hoisted_5$4 = { class: \"__dropdown\" };\nconst _hoisted_6$2 = { class: \"item --header\" };\nconst _hoisted_7 = [\"onClick\"];\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-select\", { \"--open\": _ctx.open }]),\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.open = !_ctx.open)\n }, [\n createElementVNode(\"div\", _hoisted_2$9, [\n createElementVNode(\"div\", _hoisted_3$7, toDisplayString(_ctx.selectedText), 1),\n createElementVNode(\"div\", _hoisted_4$7, [\n createVNode(_component_i_arrow)\n ])\n ]),\n createVNode(Transition, { name: \"slide-fade\" }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", _hoisted_5$4, [\n createElementVNode(\"div\", _hoisted_6$2, toDisplayString(_ctx.intf.name), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.intf.items, (item, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i,\n class: normalizeClass([\"item\", { \"--active\": item === _ctx.selectedItem }]),\n onClick: ($event) => _ctx.setSelected(item)\n }, toDisplayString(typeof item === \"string\" ? item : item.text), 11, _hoisted_7);\n }), 128))\n ], 512), [\n [vShow, _ctx.open]\n ])\n ]),\n _: 1\n })\n ], 10, _hoisted_1$d);\n}\nconst SelectInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$e]]);\nclass SelectInterface extends NodeInterface$1 {\n constructor(name, value, items) {\n super(name, value);\n this.component = markRaw(SelectInterfaceComponent);\n this.items = items;\n }\n}\nconst _sfc_main$d = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const el = ref(null);\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"));\n const didSlide = ref(false);\n const isMouseDown = ref(false);\n const percentage = computed(\n () => Math.min(100, Math.max(0, props.intf.value * 100 / (props.intf.max - props.intf.min)))\n );\n const mousedown = () => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n isMouseDown.value = true;\n };\n const mouseup = () => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n if (!didSlide.value) {\n void baseNumericInterface.enterEditMode();\n }\n isMouseDown.value = false;\n didSlide.value = false;\n };\n const mouseleave = (ev) => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n if (isMouseDown.value) {\n if (ev.offsetX >= el.value.clientWidth) {\n baseNumericInterface.setValue(props.intf.max);\n } else if (ev.offsetX <= 0) {\n baseNumericInterface.setValue(props.intf.min);\n }\n }\n isMouseDown.value = false;\n didSlide.value = false;\n };\n const mousemove = (ev) => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n const v = Math.max(\n props.intf.min,\n Math.min(\n props.intf.max,\n (props.intf.max - props.intf.min) * (ev.offsetX / el.value.clientWidth) + props.intf.min\n )\n );\n if (isMouseDown.value) {\n baseNumericInterface.setValue(v);\n didSlide.value = true;\n }\n };\n return { ...baseNumericInterface, el, percentage, mousedown, mouseup, mousemove, mouseleave };\n }\n});\nconst _hoisted_1$c = {\n key: 0,\n class: \"__content\"\n};\nconst _hoisted_2$8 = { class: \"__label\" };\nconst _hoisted_3$6 = { class: \"__value\" };\nconst _hoisted_4$6 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-slider\", { \"baklava-ignore-mouse\": !_ctx.editMode }]),\n onPointerdown: _cache[3] || (_cache[3] = (...args) => _ctx.mousedown && _ctx.mousedown(...args)),\n onPointerup: _cache[4] || (_cache[4] = (...args) => _ctx.mouseup && _ctx.mouseup(...args)),\n onPointermove: _cache[5] || (_cache[5] = (...args) => _ctx.mousemove && _ctx.mousemove(...args)),\n onPointerleave: _cache[6] || (_cache[6] = (...args) => _ctx.mouseleave && _ctx.mouseleave(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__slider\",\n style: normalizeStyle({ width: _ctx.percentage + \"%\" })\n }, null, 4),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n createElementVNode(\"div\", _hoisted_2$8, toDisplayString(_ctx.intf.name), 1),\n createElementVNode(\"div\", _hoisted_3$6, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$6, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[1] || (_cache[1] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ]))\n ], 34);\n}\nconst SliderInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$d]]);\nclass SliderInterface extends BaseNumericInterface {\n constructor(name, value, min, max) {\n super(name, value, min, max);\n this.component = markRaw(SliderInterfaceComponent);\n this.min = min;\n this.max = max;\n }\n}\nconst _sfc_main$c = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n }\n});\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", null, toDisplayString(_ctx.intf.value), 1);\n}\nconst TextInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$c]]);\nclass TextInterface extends NodeInterface$1 {\n constructor(name, value) {\n super(name, value);\n this.component = markRaw(TextInterfaceComponent);\n this.setPort(false);\n }\n}\nconst _sfc_main$b = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n },\n modelValue: {\n type: String,\n required: true\n }\n },\n emits: [\"update:modelValue\"],\n setup(props, { emit }) {\n const v = computed({\n get: () => props.modelValue,\n set: (v2) => {\n emit(\"update:modelValue\", v2);\n }\n });\n return { v };\n }\n});\nconst _hoisted_1$b = [\"placeholder\", \"title\"];\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", null, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.v = $event),\n type: \"text\",\n class: \"baklava-input\",\n placeholder: _ctx.intf.name,\n title: _ctx.intf.name\n }, null, 8, _hoisted_1$b), [\n [vModelText, _ctx.v]\n ])\n ]);\n}\nconst TextInputInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$b]]);\nclass TextInputInterface extends NodeInterface$1 {\n constructor() {\n super(...arguments);\n this.component = markRaw(TextInputInterfaceComponent);\n }\n}\nconst SUBGRAPH_INPUT_NODE_TYPE = \"__baklava_SubgraphInputNode\";\nconst SUBGRAPH_OUTPUT_NODE_TYPE = \"__baklava_SubgraphOutputNode\";\nconst SubgraphInputNode = defineNode({\n type: SUBGRAPH_INPUT_NODE_TYPE,\n title: \"Subgraph Input\",\n inputs: {\n name: () => new TextInputInterface(\"Name\", \"Input\").setPort(false)\n },\n outputs: {\n placeholder: () => new NodeInterface$1(\"Connection\", void 0)\n },\n onCreate() {\n this.graphInterfaceId = v4();\n }\n});\nconst SubgraphOutputNode = defineNode({\n type: SUBGRAPH_OUTPUT_NODE_TYPE,\n title: \"Subgraph Output\",\n inputs: {\n name: () => new TextInputInterface(\"Name\", \"Output\").setPort(false),\n placeholder: () => new NodeInterface$1(\"Connection\", void 0)\n },\n onCreate() {\n this.graphInterfaceId = v4();\n }\n});\nfunction checkRecursion(editor, currentGraph, graphNodeType) {\n if (!currentGraph.template) {\n return false;\n }\n if (getGraphNodeTypeString(currentGraph.template) === graphNodeType) {\n return true;\n }\n const template = editor.graphTemplates.find((t) => getGraphNodeTypeString(t) === graphNodeType);\n if (!template) {\n return false;\n }\n const containedGraphNodes = template.nodes.filter((n) => n.type.startsWith(GRAPH_NODE_TYPE_PREFIX));\n return containedGraphNodes.some((n) => checkRecursion(editor, currentGraph, n.type));\n}\nconst _sfc_main$a = defineComponent({\n components: { PaletteEntry },\n setup() {\n const { viewModel } = useViewModel();\n const { x: mouseX, y: mouseY } = usePointer();\n const { transform } = useTransform();\n const editorEl = inject(\"editorEl\");\n const draggedNode = ref(null);\n const categories = computed(() => {\n const nodeTypeEntries = Array.from(viewModel.value.editor.nodeTypes.entries());\n const categoryNames = new Set(nodeTypeEntries.map(([, ni]) => ni.category));\n const categories2 = [];\n for (const c of categoryNames.values()) {\n let nodeTypesInCategory = nodeTypeEntries.filter(([, ni]) => ni.category === c);\n if (viewModel.value.displayedGraph.template) {\n nodeTypesInCategory = nodeTypesInCategory.filter(\n ([nt]) => !checkRecursion(viewModel.value.editor, viewModel.value.displayedGraph, nt)\n );\n } else {\n nodeTypesInCategory = nodeTypesInCategory.filter(\n ([nt]) => ![SUBGRAPH_INPUT_NODE_TYPE, SUBGRAPH_OUTPUT_NODE_TYPE].includes(nt)\n );\n }\n if (nodeTypesInCategory.length > 0) {\n categories2.push({\n name: c,\n nodeTypes: Object.fromEntries(nodeTypesInCategory)\n });\n }\n }\n categories2.sort((a, b) => {\n if (a.name === \"default\") {\n return -1;\n } else if (b.name === \"default\") {\n return 1;\n } else {\n return a.name > b.name ? 1 : -1;\n }\n });\n return categories2;\n });\n const draggedNodeStyles = computed(() => {\n if (!draggedNode.value || !(editorEl == null ? void 0 : editorEl.value)) {\n return {};\n }\n const { left, top } = editorEl.value.getBoundingClientRect();\n return {\n top: `${mouseY.value - top}px`,\n left: `${mouseX.value - left}px`\n };\n });\n const onDragStart = (type, nodeInformation) => {\n draggedNode.value = {\n type,\n nodeInformation\n };\n const onDragEnd = () => {\n const instance = reactive(new nodeInformation.type());\n viewModel.value.displayedGraph.addNode(instance);\n const rect = editorEl.value.getBoundingClientRect();\n const [x, y] = transform(mouseX.value - rect.left, mouseY.value - rect.top);\n instance.position.x = x;\n instance.position.y = y;\n draggedNode.value = null;\n document.removeEventListener(\"pointerup\", onDragEnd);\n };\n document.addEventListener(\"pointerup\", onDragEnd);\n };\n return { draggedNode, categories, draggedNodeStyles, onDragStart, mouseX, mouseY };\n }\n});\nconst _hoisted_1$a = { class: \"baklava-node-palette\" };\nconst _hoisted_2$7 = { key: 0 };\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_PaletteEntry = resolveComponent(\"PaletteEntry\");\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", _hoisted_1$a, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.categories, (c) => {\n return openBlock(), createElementBlock(\"section\", {\n key: c.name\n }, [\n c.name !== \"default\" ? (openBlock(), createElementBlock(\"h1\", _hoisted_2$7, toDisplayString(c.name), 1)) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(c.nodeTypes, (ni, nt) => {\n return openBlock(), createBlock(_component_PaletteEntry, {\n key: nt,\n type: nt,\n title: ni.title,\n onPointerdown: ($event) => _ctx.onDragStart(nt, ni)\n }, null, 8, [\"type\", \"title\", \"onPointerdown\"]);\n }), 128))\n ]);\n }), 128))\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n _ctx.draggedNode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"baklava-dragged-node\",\n style: normalizeStyle(_ctx.draggedNodeStyles)\n }, [\n createVNode(_component_PaletteEntry, {\n type: _ctx.draggedNode.type,\n title: _ctx.draggedNode.nodeInformation.title\n }, null, 8, [\"type\", \"title\"])\n ], 4)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ], 64);\n}\nconst NodePalette = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$a]]);\nconst SAVE_SUBGRAPH_COMMAND = \"SAVE_SUBGRAPH\";\nfunction registerSaveSubgraphCommand(displayedGraph, handler) {\n const saveSubgraph = () => {\n const graph = displayedGraph.value;\n if (!graph.template) {\n throw new Error(\"Graph template property not set\");\n }\n const interfaceConnections = [];\n const inputs = [];\n const inputNodes = graph.nodes.filter((n) => n.type === SUBGRAPH_INPUT_NODE_TYPE);\n for (const n of inputNodes) {\n const connections = graph.connections.filter((c) => c.from === n.outputs.placeholder);\n connections.forEach((c) => {\n inputs.push({\n id: n.graphInterfaceId,\n name: n.inputs.name.value,\n nodeInterfaceId: c.to.id\n });\n });\n interfaceConnections.push(...connections);\n }\n const outputs = [];\n const outputNodes = graph.nodes.filter((n) => n.type === SUBGRAPH_OUTPUT_NODE_TYPE);\n for (const n of outputNodes) {\n const connections = graph.connections.filter((c) => c.to === n.inputs.placeholder);\n connections.forEach((c) => {\n outputs.push({\n id: n.graphInterfaceId,\n name: n.inputs.name.value,\n nodeInterfaceId: c.from.id\n });\n });\n interfaceConnections.push(...connections);\n }\n const innerConnections = graph.connections.filter((c) => !interfaceConnections.includes(c));\n const nodes = graph.nodes.filter(\n (n) => n.type !== SUBGRAPH_INPUT_NODE_TYPE && n.type !== SUBGRAPH_OUTPUT_NODE_TYPE\n );\n graph.template.update({\n inputs,\n outputs,\n connections: innerConnections.map((c) => ({ id: c.id, from: c.from.id, to: c.to.id })),\n nodes: nodes.map((n) => n.save())\n });\n graph.template.panning = graph.panning;\n graph.template.scaling = graph.scaling;\n };\n handler.registerCommand(SAVE_SUBGRAPH_COMMAND, {\n canExecute: () => {\n var _a2;\n return displayedGraph.value !== ((_a2 = displayedGraph.value.editor) == null ? void 0 : _a2.graph);\n },\n execute: saveSubgraph\n });\n}\nconst CREATE_SUBGRAPH_COMMAND = \"CREATE_SUBGRAPH\";\nconst IGNORE_NODE_TYPES = [SUBGRAPH_INPUT_NODE_TYPE, SUBGRAPH_OUTPUT_NODE_TYPE];\nfunction registerCreateSubgraphCommand(displayedGraph, handler, switchGraph) {\n const canCreateSubgraph = () => {\n return displayedGraph.value.selectedNodes.filter((n) => !IGNORE_NODE_TYPES.includes(n.type)).length > 0;\n };\n const createSubgraph = () => {\n const graph = displayedGraph.value;\n const editor = displayedGraph.value.editor;\n if (graph.selectedNodes.length === 0) {\n return;\n }\n const selectedNodes = graph.selectedNodes.filter((n) => !IGNORE_NODE_TYPES.includes(n.type));\n const selectedNodesInputs = selectedNodes.flatMap((n) => Object.values(n.inputs));\n const selectedNodesOutputs = selectedNodes.flatMap((n) => Object.values(n.outputs));\n const inputConnections = graph.connections.filter(\n (c) => !selectedNodesOutputs.includes(c.from) && selectedNodesInputs.includes(c.to)\n );\n const outputConnections = graph.connections.filter(\n (c) => selectedNodesOutputs.includes(c.from) && !selectedNodesInputs.includes(c.to)\n );\n const innerConnections = graph.connections.filter(\n (c) => selectedNodesOutputs.includes(c.from) && selectedNodesInputs.includes(c.to)\n );\n const inputInterfaces = inputConnections.map((c) => c.to);\n const outputInterfaces = outputConnections.map((c) => c.from);\n const interfaceIdMap = /* @__PURE__ */ new Map();\n const graphInputs = [];\n for (const i of inputInterfaces) {\n const newId = v4();\n interfaceIdMap.set(i.id, newId);\n graphInputs.push({ id: newId, nodeInterfaceId: i.id, name: i.name });\n }\n const graphOutputs = [];\n for (const i of outputInterfaces) {\n const newId = v4();\n interfaceIdMap.set(i.id, newId);\n graphOutputs.push({ id: newId, nodeInterfaceId: i.id, name: i.name });\n }\n const subgraphTemplate = reactive(\n new GraphTemplate(\n {\n connections: innerConnections.map((c) => ({ id: c.id, from: c.from.id, to: c.to.id })),\n inputs: graphInputs,\n outputs: graphOutputs,\n nodes: selectedNodes.map((n) => n.save())\n },\n editor\n )\n );\n editor.addGraphTemplate(subgraphTemplate);\n const nt = editor.nodeTypes.get(getGraphNodeTypeString(subgraphTemplate));\n if (!nt) {\n throw new Error(\"Unable to create subgraph: Could not find corresponding graph node type\");\n }\n const node = reactive(new nt.type());\n graph.addNode(node);\n const averageX = Math.round(\n selectedNodes.map((n) => n.position.x).reduce((p, c) => p + c, 0) / selectedNodes.length\n );\n const averageY = Math.round(\n selectedNodes.map((n) => n.position.y).reduce((p, c) => p + c, 0) / selectedNodes.length\n );\n node.position.x = averageX;\n node.position.y = averageY;\n inputConnections.forEach((c) => {\n graph.removeConnection(c);\n graph.addConnection(c.from, node.inputs[interfaceIdMap.get(c.to.id)]);\n });\n outputConnections.forEach((c) => {\n graph.removeConnection(c);\n graph.addConnection(node.outputs[interfaceIdMap.get(c.from.id)], c.to);\n });\n selectedNodes.forEach((n) => graph.removeNode(n));\n if (handler.canExecuteCommand(SAVE_SUBGRAPH_COMMAND)) {\n handler.executeCommand(SAVE_SUBGRAPH_COMMAND);\n }\n switchGraph(subgraphTemplate);\n displayedGraph.value.panning = { ...graph.panning };\n displayedGraph.value.scaling = graph.scaling;\n };\n handler.registerCommand(CREATE_SUBGRAPH_COMMAND, {\n canExecute: canCreateSubgraph,\n execute: createSubgraph\n });\n}\nconst DELETE_NODES_COMMAND = \"DELETE_NODES\";\nfunction registerDeleteNodesCommand(displayedGraph, handler) {\n handler.registerCommand(DELETE_NODES_COMMAND, {\n canExecute: () => displayedGraph.value.selectedNodes.length > 0,\n execute() {\n displayedGraph.value.selectedNodes.forEach((n) => displayedGraph.value.removeNode(n));\n }\n });\n handler.registerHotkey([\"Delete\"], DELETE_NODES_COMMAND);\n}\nconst SWITCH_TO_MAIN_GRAPH_COMMAND = \"SWITCH_TO_MAIN_GRAPH\";\nfunction registerSwitchToMainGraphCommand(displayedGraph, handler, switchGraph) {\n handler.registerCommand(SWITCH_TO_MAIN_GRAPH_COMMAND, {\n canExecute: () => displayedGraph.value !== displayedGraph.value.editor.graph,\n execute: () => {\n handler.executeCommand(SAVE_SUBGRAPH_COMMAND);\n switchGraph(displayedGraph.value.editor.graph);\n }\n });\n}\nfunction registerGraphCommands(displayedGraph, handler, switchGraph) {\n registerDeleteNodesCommand(displayedGraph, handler);\n registerCreateSubgraphCommand(displayedGraph, handler, switchGraph);\n registerSaveSubgraphCommand(displayedGraph, handler);\n registerSwitchToMainGraphCommand(displayedGraph, handler, switchGraph);\n}\nclass NodeStep {\n constructor(type, data) {\n this.type = type;\n if (type === \"addNode\") {\n this.nodeId = data;\n } else {\n this.nodeState = data;\n }\n }\n undo(graph) {\n if (this.type === \"addNode\") {\n this.removeNode(graph);\n } else {\n this.addNode(graph);\n }\n }\n redo(graph) {\n if (this.type === \"addNode\" && this.nodeState) {\n this.addNode(graph);\n } else if (this.type === \"removeNode\" && this.nodeId) {\n this.removeNode(graph);\n }\n }\n addNode(graph) {\n const nodeType = graph.editor.nodeTypes.get(this.nodeState.type);\n if (!nodeType) {\n return;\n }\n const n = new nodeType.type();\n graph.addNode(n);\n n.load(this.nodeState);\n this.nodeId = n.id;\n }\n removeNode(graph) {\n const node = graph.nodes.find((n) => n.id === this.nodeId);\n if (!node) {\n return;\n }\n this.nodeState = node.save();\n graph.removeNode(node);\n }\n}\nclass ConnectionStep {\n constructor(type, data) {\n this.type = type;\n if (type === \"addConnection\") {\n this.connectionId = data;\n } else {\n const d = data;\n this.connectionState = {\n id: d.id,\n from: d.from.id,\n to: d.to.id\n };\n }\n }\n undo(graph) {\n if (this.type === \"addConnection\") {\n this.removeConnection(graph);\n } else {\n this.addConnection(graph);\n }\n }\n redo(graph) {\n if (this.type === \"addConnection\" && this.connectionState) {\n this.addConnection(graph);\n } else if (this.type === \"removeConnection\" && this.connectionId) {\n this.removeConnection(graph);\n }\n }\n addConnection(graph) {\n const fromIntf = graph.findNodeInterface(this.connectionState.from);\n const toIntf = graph.findNodeInterface(this.connectionState.to);\n if (!fromIntf || !toIntf) {\n return;\n }\n graph.addConnection(fromIntf, toIntf);\n }\n removeConnection(graph) {\n const connection = graph.connections.find((c) => c.id === this.connectionId);\n if (!connection) {\n return;\n }\n this.connectionState = {\n id: connection.id,\n from: connection.from.id,\n to: connection.to.id\n };\n graph.removeConnection(connection);\n }\n}\nclass TransactionStep {\n constructor(steps) {\n this.type = \"transaction\";\n if (steps.length === 0) {\n throw new Error(\"Can't create a transaction with no steps\");\n }\n this.steps = steps;\n }\n undo(graph) {\n for (let i = this.steps.length - 1; i >= 0; i--) {\n this.steps[i].undo(graph);\n }\n }\n redo(graph) {\n for (let i = 0; i < this.steps.length; i++) {\n this.steps[i].redo(graph);\n }\n }\n}\nconst UNDO_COMMAND = \"UNDO\";\nconst REDO_COMMAND = \"REDO\";\nconst START_TRANSACTION_COMMAND = \"START_TRANSACTION\";\nconst COMMIT_TRANSACTION_COMMAND = \"COMMIT_TRANSACTION\";\nfunction useHistory(graph, commandHandler) {\n const token = Symbol(\"HistoryToken\");\n const maxSteps = ref(200);\n const steps = ref([]);\n const changeBySelf = ref(false);\n const currentIndex = ref(-1);\n const activeTransaction = ref(false);\n const transactionSteps = ref([]);\n const addStep = (step) => {\n if (changeBySelf.value) {\n return;\n }\n if (activeTransaction.value) {\n transactionSteps.value.push(step);\n } else {\n if (currentIndex.value !== steps.value.length - 1) {\n steps.value = steps.value.slice(0, currentIndex.value + 1);\n }\n steps.value.push(step);\n currentIndex.value++;\n while (steps.value.length > maxSteps.value) {\n steps.value.shift();\n }\n }\n };\n const startTransaction = () => {\n activeTransaction.value = true;\n };\n const commitTransaction = () => {\n activeTransaction.value = false;\n if (transactionSteps.value.length > 0) {\n addStep(new TransactionStep(transactionSteps.value));\n transactionSteps.value = [];\n }\n };\n const canUndo = () => steps.value.length !== 0 && currentIndex.value !== -1;\n const undo = () => {\n if (!canUndo()) {\n return;\n }\n changeBySelf.value = true;\n steps.value[currentIndex.value--].undo(graph.value);\n changeBySelf.value = false;\n };\n const canRedo = () => steps.value.length !== 0 && currentIndex.value < steps.value.length - 1;\n const redo = () => {\n if (!canRedo()) {\n return;\n }\n changeBySelf.value = true;\n steps.value[++currentIndex.value].redo(graph.value);\n changeBySelf.value = false;\n };\n watch(\n graph,\n (newGraph, oldGraph) => {\n if (oldGraph) {\n oldGraph.events.addNode.unsubscribe(token);\n oldGraph.events.removeNode.unsubscribe(token);\n oldGraph.events.addConnection.unsubscribe(token);\n oldGraph.events.removeConnection.unsubscribe(token);\n }\n if (newGraph) {\n newGraph.events.addNode.subscribe(token, (node) => {\n addStep(new NodeStep(\"addNode\", node.id));\n });\n newGraph.events.removeNode.subscribe(token, (node) => {\n addStep(new NodeStep(\"removeNode\", node.save()));\n });\n newGraph.events.addConnection.subscribe(token, (conn) => {\n addStep(new ConnectionStep(\"addConnection\", conn.id));\n });\n newGraph.events.removeConnection.subscribe(token, (conn) => {\n addStep(new ConnectionStep(\"removeConnection\", conn));\n });\n }\n },\n { immediate: true }\n );\n commandHandler.registerCommand(UNDO_COMMAND, {\n canExecute: canUndo,\n execute: undo\n });\n commandHandler.registerCommand(REDO_COMMAND, {\n canExecute: canRedo,\n execute: redo\n });\n commandHandler.registerCommand(START_TRANSACTION_COMMAND, {\n canExecute: () => !activeTransaction.value,\n execute: startTransaction\n });\n commandHandler.registerCommand(COMMIT_TRANSACTION_COMMAND, {\n canExecute: () => activeTransaction.value,\n execute: commitTransaction\n });\n commandHandler.registerHotkey([\"Control\", \"z\"], UNDO_COMMAND);\n commandHandler.registerHotkey([\"Control\", \"y\"], REDO_COMMAND);\n return reactive({\n maxSteps\n });\n}\nconst COPY_COMMAND = \"COPY\";\nconst PASTE_COMMAND = \"PASTE\";\nconst CLEAR_CLIPBOARD_COMMAND = \"CLEAR_CLIPBOARD\";\nfunction useClipboard(displayedGraph, editor, commandHandler) {\n const token = Symbol(\"ClipboardToken\");\n const nodeBuffer = ref(\"\");\n const connectionBuffer = ref(\"\");\n const isEmpty = computed(() => !nodeBuffer.value);\n const clear = () => {\n nodeBuffer.value = \"\";\n connectionBuffer.value = \"\";\n };\n const copy = () => {\n const interfacesOfSelectedNodes = displayedGraph.value.selectedNodes.flatMap((n) => [\n ...Object.values(n.inputs),\n ...Object.values(n.outputs)\n ]);\n const connections = displayedGraph.value.connections.filter(\n (conn) => interfacesOfSelectedNodes.includes(conn.from) || interfacesOfSelectedNodes.includes(conn.to)\n ).map((conn) => ({ from: conn.from.id, to: conn.to.id }));\n connectionBuffer.value = JSON.stringify(connections);\n nodeBuffer.value = JSON.stringify(displayedGraph.value.selectedNodes.map((n) => n.save()));\n };\n const findInterface = (nodes, id, io) => {\n for (const n of nodes) {\n let intf;\n if (!io || io === \"input\") {\n intf = Object.values(n.inputs).find((intf2) => intf2.id === id);\n }\n if (!intf && (!io || io === \"output\")) {\n intf = Object.values(n.outputs).find((intf2) => intf2.id === id);\n }\n if (intf) {\n return intf;\n }\n }\n return void 0;\n };\n const paste = () => {\n if (isEmpty.value) {\n return;\n }\n const idmap = /* @__PURE__ */ new Map();\n const parsedNodeBuffer = JSON.parse(nodeBuffer.value);\n const parsedConnectionBuffer = JSON.parse(connectionBuffer.value);\n const newNodes = [];\n const newConnections = [];\n const graph = displayedGraph.value;\n commandHandler.executeCommand(START_TRANSACTION_COMMAND);\n for (const n of parsedNodeBuffer) {\n const nodeType = editor.value.nodeTypes.get(n.type);\n if (!nodeType) {\n console.warn(`Node type ${n.type} not registered`);\n return;\n }\n const copiedNode = new nodeType.type();\n const generatedId = copiedNode.id;\n newNodes.push(copiedNode);\n const tapInterfaces = (intfs) => {\n Object.values(intfs).forEach((intf) => {\n intf.hooks.load.subscribe(token, (intfState) => {\n const newIntfId = v4();\n idmap.set(intfState.id, newIntfId);\n intf.id = newIntfId;\n intf.hooks.load.unsubscribe(token);\n return intfState;\n });\n });\n };\n tapInterfaces(copiedNode.inputs);\n tapInterfaces(copiedNode.outputs);\n copiedNode.hooks.beforeLoad.subscribe(token, (nodeState) => {\n const ns = nodeState;\n if (ns.position) {\n ns.position.x += 10;\n ns.position.y += 10;\n }\n copiedNode.hooks.beforeLoad.unsubscribe(token);\n return ns;\n });\n graph.addNode(copiedNode);\n copiedNode.load(n);\n copiedNode.id = generatedId;\n idmap.set(n.id, generatedId);\n }\n for (const c of parsedConnectionBuffer) {\n const fromIntf = findInterface(newNodes, idmap.get(c.from), \"output\");\n const toIntf = findInterface(newNodes, idmap.get(c.to), \"input\");\n if (!fromIntf || !toIntf) {\n continue;\n }\n const newConnection = graph.addConnection(fromIntf, toIntf);\n if (newConnection) {\n newConnections.push(newConnection);\n }\n }\n commandHandler.executeCommand(COMMIT_TRANSACTION_COMMAND);\n return {\n newNodes,\n newConnections\n };\n };\n commandHandler.registerCommand(COPY_COMMAND, {\n canExecute: () => true,\n execute: copy\n });\n commandHandler.registerHotkey([\"Control\", \"c\"], COPY_COMMAND);\n commandHandler.registerCommand(PASTE_COMMAND, {\n canExecute: () => !isEmpty.value,\n execute: paste\n });\n commandHandler.registerHotkey([\"Control\", \"v\"], PASTE_COMMAND);\n commandHandler.registerCommand(CLEAR_CLIPBOARD_COMMAND, {\n canExecute: () => true,\n execute: clear\n });\n return reactive({ isEmpty });\n}\nconst OPEN_SIDEBAR_COMMAND = \"OPEN_SIDEBAR\";\nfunction registerOpenSidebarCommand(displayedGraph, handler) {\n handler.registerCommand(OPEN_SIDEBAR_COMMAND, {\n execute: (nodeId) => {\n displayedGraph.value.sidebar.nodeId = nodeId;\n displayedGraph.value.sidebar.visible = true;\n },\n canExecute: () => true\n });\n}\nfunction registerSidebarCommands(displayedGraph, handler) {\n registerOpenSidebarCommand(displayedGraph, handler);\n}\nconst commandList = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n CREATE_SUBGRAPH_COMMAND,\n DELETE_NODES_COMMAND,\n SAVE_SUBGRAPH_COMMAND,\n SWITCH_TO_MAIN_GRAPH_COMMAND,\n COMMIT_TRANSACTION_COMMAND,\n START_TRANSACTION_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n CLEAR_CLIPBOARD_COMMAND,\n COPY_COMMAND,\n PASTE_COMMAND,\n OPEN_SIDEBAR_COMMAND\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst _sfc_main$9 = {};\nconst _hoisted_1$9 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$6 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$5 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M9 13l-4 -4l4 -4m-4 4h11a4 4 0 0 1 0 8h-1\" }, null, -1);\nconst _hoisted_4$5 = [\n _hoisted_2$6,\n _hoisted_3$5\n];\nfunction _sfc_render$9(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$9, _hoisted_4$5);\n}\nconst ArrowBackUp = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$8 = {};\nconst _hoisted_1$8 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$5 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$4 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M15 13l4 -4l-4 -4m4 4h-11a4 4 0 0 0 0 8h1\" }, null, -1);\nconst _hoisted_4$4 = [\n _hoisted_2$5,\n _hoisted_3$4\n];\nfunction _sfc_render$8(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$8, _hoisted_4$4);\n}\nconst ArrowForwardUp = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$7 = {};\nconst _hoisted_1$7 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$4 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"19\",\n y2: \"12\"\n}, null, -1);\nconst _hoisted_4$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"11\",\n y2: \"18\"\n}, null, -1);\nconst _hoisted_5$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"11\",\n y2: \"6\"\n}, null, -1);\nconst _hoisted_6$1 = [\n _hoisted_2$4,\n _hoisted_3$3,\n _hoisted_4$3,\n _hoisted_5$3\n];\nfunction _sfc_render$7(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$7, _hoisted_6$1);\n}\nconst ArrowLeft = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$6 = {};\nconst _hoisted_1$6 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$3 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$2 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2\" }, null, -1);\nconst _hoisted_4$2 = /* @__PURE__ */ createElementVNode(\"rect\", {\n x: \"9\",\n y: \"3\",\n width: \"6\",\n height: \"4\",\n rx: \"2\"\n}, null, -1);\nconst _hoisted_5$2 = [\n _hoisted_2$3,\n _hoisted_3$2,\n _hoisted_4$2\n];\nfunction _sfc_render$6(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$6, _hoisted_5$2);\n}\nconst Clipboard = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$5 = {};\nconst _hoisted_1$5 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$2 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$1 = /* @__PURE__ */ createElementVNode(\"rect\", {\n x: \"8\",\n y: \"8\",\n width: \"12\",\n height: \"12\",\n rx: \"2\"\n}, null, -1);\nconst _hoisted_4$1 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" }, null, -1);\nconst _hoisted_5$1 = [\n _hoisted_2$2,\n _hoisted_3$1,\n _hoisted_4$1\n];\nfunction _sfc_render$5(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$5, _hoisted_5$1);\n}\nconst Copy = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$4 = {};\nconst _hoisted_1$4 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$1 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2\" }, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"14\",\n r: \"2\"\n}, null, -1);\nconst _hoisted_5 = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"14 4 14 8 8 8 8 4\" }, null, -1);\nconst _hoisted_6 = [\n _hoisted_2$1,\n _hoisted_3,\n _hoisted_4,\n _hoisted_5\n];\nfunction _sfc_render$4(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$4, _hoisted_6);\n}\nconst DeviceFloppy = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$3 = {};\nconst _hoisted_1$3 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createStaticVNode('', 6);\nconst _hoisted_8 = [\n _hoisted_2\n];\nfunction _sfc_render$3(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, _hoisted_8);\n}\nconst Hierarchy2 = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = defineComponent({\n props: {\n command: {\n type: String,\n required: true\n },\n title: {\n type: String,\n required: true\n },\n icon: {\n type: Object,\n required: false,\n default: void 0\n }\n },\n setup() {\n const { viewModel } = useViewModel();\n return { viewModel };\n }\n});\nconst _hoisted_1$2 = [\"disabled\", \"title\"];\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"button\", {\n class: \"baklava-toolbar-entry baklava-toolbar-button\",\n disabled: !_ctx.viewModel.commandHandler.canExecuteCommand(_ctx.command),\n title: _ctx.title,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.viewModel.commandHandler.executeCommand(_ctx.command))\n }, [\n _ctx.icon ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ], 64))\n ], 8, _hoisted_1$2);\n}\nconst ToolbarButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = defineComponent({\n components: { ToolbarButton },\n setup() {\n const { viewModel } = useViewModel();\n const isSubgraph = computed(() => viewModel.value.displayedGraph !== viewModel.value.editor.graph);\n const commands = [\n { command: COPY_COMMAND, title: \"Copy\", icon: Copy },\n { command: PASTE_COMMAND, title: \"Paste\", icon: Clipboard },\n { command: UNDO_COMMAND, title: \"Undo\", icon: ArrowBackUp },\n { command: REDO_COMMAND, title: \"Redo\", icon: ArrowForwardUp },\n { command: CREATE_SUBGRAPH_COMMAND, title: \"Create Subgraph\", icon: Hierarchy2 }\n ];\n const subgraphCommands = [\n { command: SAVE_SUBGRAPH_COMMAND, title: \"Save Subgraph\", icon: DeviceFloppy },\n { command: SWITCH_TO_MAIN_GRAPH_COMMAND, title: \"Back to Main Graph\", icon: ArrowLeft }\n ];\n return { isSubgraph, commands, subgraphCommands };\n }\n});\nconst _hoisted_1$1 = { class: \"baklava-toolbar\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_toolbar_button = resolveComponent(\"toolbar-button\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.commands, (c) => {\n return openBlock(), createBlock(_component_toolbar_button, {\n key: c.command,\n command: c.command,\n title: c.title,\n icon: c.icon\n }, null, 8, [\"command\", \"title\", \"icon\"]);\n }), 128)),\n _ctx.isSubgraph ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.subgraphCommands, (c) => {\n return openBlock(), createBlock(_component_toolbar_button, {\n key: c.command,\n command: c.command,\n title: c.title,\n icon: c.icon\n }, null, 8, [\"command\", \"title\", \"icon\"]);\n }), 128)) : createCommentVNode(\"\", true)\n ]);\n}\nconst Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = defineComponent({\n components: { Background, Node: _sfc_main$q, ConnectionWrapper, TemporaryConnection, Sidebar, Minimap, NodePalette, Toolbar },\n props: {\n viewModel: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const token = Symbol(\"EditorToken\");\n const viewModelRef2 = toRef(props, \"viewModel\");\n providePlugin(viewModelRef2);\n const el = ref(null);\n provide(\"editorEl\", el);\n const nodes = computed(() => props.viewModel.displayedGraph.nodes);\n const connections = computed(() => props.viewModel.displayedGraph.connections);\n const selectedNodes = computed(() => props.viewModel.displayedGraph.selectedNodes);\n const panZoom = usePanZoom();\n const temporaryConnection = useTemporaryConnection();\n const nodeContainerStyle = computed(() => ({\n ...panZoom.styles.value\n }));\n const counter = ref(0);\n props.viewModel.editor.hooks.load.subscribe(token, (s) => {\n counter.value++;\n return s;\n });\n const onPointerMove = (ev) => {\n panZoom.onPointerMove(ev);\n temporaryConnection.onMouseMove(ev);\n };\n const onPointerDown = (ev) => {\n if (ev.button === 0) {\n if (ev.target === el.value) {\n unselectAllNodes();\n panZoom.onPointerDown(ev);\n }\n temporaryConnection.onMouseDown();\n }\n };\n const onPointerUp = (ev) => {\n panZoom.onPointerUp(ev);\n temporaryConnection.onMouseUp();\n };\n const keyDown = (ev) => {\n if (ev.key === \"Tab\") {\n ev.preventDefault();\n }\n props.viewModel.commandHandler.handleKeyDown(ev);\n };\n const keyUp = (ev) => {\n props.viewModel.commandHandler.handleKeyUp(ev);\n };\n const selectNode = (node) => {\n if (!props.viewModel.commandHandler.pressedKeys.includes(\"Control\")) {\n unselectAllNodes();\n }\n props.viewModel.displayedGraph.selectedNodes.push(node);\n };\n const unselectAllNodes = () => {\n props.viewModel.displayedGraph.selectedNodes = [];\n };\n return {\n el,\n counter,\n nodes,\n connections,\n selectedNodes,\n nodeContainerStyle,\n onPointerMove,\n onPointerDown,\n onPointerUp,\n keyDown,\n keyUp,\n selectNode,\n temporaryConnection: temporaryConnection.temporaryConnection,\n mouseWheel: panZoom.onMouseWheel,\n dragging: panZoom.dragging\n };\n }\n});\nconst _hoisted_1 = { class: \"connections-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_background = resolveComponent(\"background\");\n const _component_toolbar = resolveComponent(\"toolbar\");\n const _component_node_palette = resolveComponent(\"node-palette\");\n const _component_connection_wrapper = resolveComponent(\"connection-wrapper\");\n const _component_temporary_connection = resolveComponent(\"temporary-connection\");\n const _component_node = resolveComponent(\"node\");\n const _component_sidebar = resolveComponent(\"sidebar\");\n const _component_minimap = resolveComponent(\"minimap\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n tabindex: \"-1\",\n class: normalizeClass([\"baklava-editor\", {\n \"baklava-ignore-mouse\": !!_ctx.temporaryConnection || _ctx.dragging,\n \"--temporary-connection\": !!_ctx.temporaryConnection\n }]),\n onPointermove: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.onPointerMove && _ctx.onPointerMove(...args), [\"self\"])),\n onPointerdown: _cache[1] || (_cache[1] = (...args) => _ctx.onPointerDown && _ctx.onPointerDown(...args)),\n onPointerup: _cache[2] || (_cache[2] = (...args) => _ctx.onPointerUp && _ctx.onPointerUp(...args)),\n onWheel: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.mouseWheel && _ctx.mouseWheel(...args), [\"self\"])),\n onKeydown: _cache[4] || (_cache[4] = (...args) => _ctx.keyDown && _ctx.keyDown(...args)),\n onKeyup: _cache[5] || (_cache[5] = (...args) => _ctx.keyUp && _ctx.keyUp(...args))\n }, [\n renderSlot(_ctx.$slots, \"background\", {}, () => [\n createVNode(_component_background)\n ]),\n renderSlot(_ctx.$slots, \"toolbar\", {}, () => [\n createVNode(_component_toolbar)\n ]),\n renderSlot(_ctx.$slots, \"palette\", {}, () => [\n createVNode(_component_node_palette)\n ]),\n (openBlock(), createElementBlock(\"svg\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.connections, (connection) => {\n return openBlock(), createElementBlock(\"g\", {\n key: connection.id + _ctx.counter.toString()\n }, [\n renderSlot(_ctx.$slots, \"connection\", { connection }, () => [\n createVNode(_component_connection_wrapper, { connection }, null, 8, [\"connection\"])\n ])\n ]);\n }), 128)),\n renderSlot(_ctx.$slots, \"temporaryConnection\", { temporaryConnection: _ctx.temporaryConnection }, () => [\n _ctx.temporaryConnection ? (openBlock(), createBlock(_component_temporary_connection, {\n key: 0,\n connection: _ctx.temporaryConnection\n }, null, 8, [\"connection\"])) : createCommentVNode(\"\", true)\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"node-container\",\n style: normalizeStyle(_ctx.nodeContainerStyle)\n }, [\n createVNode(TransitionGroup, { name: \"fade\" }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {\n return renderSlot(_ctx.$slots, \"node\", {\n node,\n selected: _ctx.selectedNodes.includes(node),\n onSelect: ($event) => _ctx.selectNode(node)\n }, () => [\n (openBlock(), createBlock(_component_node, {\n key: node.id + _ctx.counter.toString(),\n node,\n selected: _ctx.selectedNodes.includes(node),\n onSelect: ($event) => _ctx.selectNode(node)\n }, null, 8, [\"node\", \"selected\", \"onSelect\"]))\n ]);\n }), 256))\n ]),\n _: 3\n })\n ], 4),\n renderSlot(_ctx.$slots, \"sidebar\", {}, () => [\n createVNode(_component_sidebar)\n ]),\n renderSlot(_ctx.$slots, \"minimap\", {}, () => [\n _ctx.viewModel.settings.enableMinimap ? (openBlock(), createBlock(_component_minimap, { key: 0 })) : createCommentVNode(\"\", true)\n ])\n ], 34);\n}\nconst Editor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nfunction useHotkeyHandler(executeCommand) {\n const pressedKeys = ref([]);\n const handlers = ref([]);\n const handleKeyDown = (ev) => {\n if (!pressedKeys.value.includes(ev.key)) {\n pressedKeys.value.push(ev.key);\n }\n handlers.value.forEach((h) => {\n if (h.keys.every((k) => pressedKeys.value.includes(k))) {\n executeCommand(h.commandName);\n }\n });\n };\n const handleKeyUp = (ev) => {\n const index = pressedKeys.value.indexOf(ev.key);\n if (index >= 0) {\n pressedKeys.value.splice(index, 1);\n }\n };\n const registerHotkey = (keys2, commandName) => {\n handlers.value.push({ keys: keys2, commandName });\n };\n return { pressedKeys, handleKeyDown, handleKeyUp, registerHotkey };\n}\nconst useCommandHandler = () => {\n const commands = ref(/* @__PURE__ */ new Map());\n const registerCommand = (name, command) => {\n if (commands.value.has(name)) {\n throw new Error(`Command \"${name}\" already exists`);\n }\n commands.value.set(name, command);\n };\n const executeCommand = (name, throwOnNonexisting = false, ...args) => {\n if (!commands.value.has(name)) {\n if (throwOnNonexisting) {\n throw new Error(`[CommandHandler] Command ${name} not registered`);\n } else {\n return;\n }\n }\n return commands.value.get(name).execute(...args);\n };\n const canExecuteCommand = (name, throwOnNonexisting = false, ...args) => {\n if (!commands.value.has(name)) {\n if (throwOnNonexisting) {\n throw new Error(`[CommandHandler] Command ${name} not registered`);\n } else {\n return false;\n }\n }\n return commands.value.get(name).canExecute(args);\n };\n const hotkeyHandler = useHotkeyHandler(executeCommand);\n return reactive({ registerCommand, executeCommand, canExecuteCommand, ...hotkeyHandler });\n};\nconst isTemplate = (g) => !(g instanceof Graph);\nfunction useSwitchGraph(editor, displayedGraph) {\n const switchGraph = (newGraph) => {\n let newGraphInstance;\n if (!isTemplate(newGraph)) {\n if (newGraph !== editor.value.graph) {\n throw new Error(\n \"Can only switch using 'Graph' instance when it is the root graph. Otherwise a 'GraphTemplate' must be used.\"\n );\n }\n newGraphInstance = newGraph;\n } else {\n newGraphInstance = new Graph(editor.value);\n newGraph.createGraph(newGraphInstance);\n newGraphInstance.inputs.forEach((input) => {\n const node = new SubgraphInputNode();\n node.inputs.name.value = input.name;\n node.graphInterfaceId = input.id;\n newGraphInstance.addNode(node);\n const targetInterface = newGraphInstance.findNodeInterface(input.nodeInterfaceId);\n if (!targetInterface) {\n console.warn(`Could not find target interface ${input.nodeInterfaceId} for subgraph input node`);\n return;\n }\n newGraphInstance.addConnection(node.outputs.placeholder, targetInterface);\n });\n newGraphInstance.outputs.forEach((output) => {\n const node = new SubgraphOutputNode();\n node.inputs.name.value = output.name;\n node.graphInterfaceId = output.id;\n newGraphInstance.addNode(node);\n const targetInterface = newGraphInstance.findNodeInterface(output.nodeInterfaceId);\n if (!targetInterface) {\n console.warn(`Could not find target interface ${output.nodeInterfaceId} for subgraph input node`);\n return;\n }\n newGraphInstance.addConnection(targetInterface, node.inputs.placeholder);\n });\n }\n if (displayedGraph.value && displayedGraph.value !== editor.value.graph) {\n displayedGraph.value.destroy();\n }\n newGraphInstance.panning = newGraphInstance.panning ?? newGraph.panning ?? { x: 0, y: 0 };\n newGraphInstance.scaling = newGraphInstance.scaling ?? newGraph.scaling ?? 1;\n newGraphInstance.selectedNodes = newGraphInstance.selectedNodes ?? [];\n newGraphInstance.sidebar = newGraphInstance.sidebar ?? { visible: false, nodeId: \"\", optionName: \"\" };\n displayedGraph.value = newGraphInstance;\n };\n return { switchGraph };\n}\nfunction setViewNodeProperties(node) {\n node.position = node.position ?? { x: 0, y: 0 };\n node.disablePointerEvents = false;\n node.twoColumn = node.twoColumn ?? false;\n node.width = node.width ?? 200;\n}\nfunction useBaklava(existingEditor) {\n const editor = ref(existingEditor ?? new Editor$1());\n const token = Symbol(\"ViewModelToken\");\n const _displayedGraph = ref(null);\n const displayedGraph = shallowReadonly(_displayedGraph);\n const { switchGraph } = useSwitchGraph(editor, _displayedGraph);\n const isSubgraph = computed(() => displayedGraph.value && displayedGraph.value !== editor.value.graph);\n const settings = reactive({\n useStraightConnections: false,\n enableMinimap: false,\n background: {\n gridSize: 100,\n gridDivision: 5,\n subGridVisibleThreshold: 0.6\n }\n });\n const commandHandler = useCommandHandler();\n const history = useHistory(displayedGraph, commandHandler);\n const clipboard = useClipboard(displayedGraph, editor, commandHandler);\n const hooks = {\n renderNode: new SequentialHook(null),\n renderInterface: new SequentialHook(null)\n };\n registerGraphCommands(displayedGraph, commandHandler, switchGraph);\n registerSidebarCommands(displayedGraph, commandHandler);\n watch(\n editor,\n (newValue, oldValue) => {\n if (oldValue) {\n oldValue.events.registerGraph.unsubscribe(token);\n oldValue.graphEvents.beforeAddNode.unsubscribe(token);\n newValue.nodeHooks.beforeLoad.unsubscribe(token);\n newValue.nodeHooks.afterSave.unsubscribe(token);\n newValue.graphTemplateHooks.beforeLoad.unsubscribe(token);\n newValue.graphTemplateHooks.afterSave.unsubscribe(token);\n }\n if (newValue) {\n newValue.nodeHooks.beforeLoad.subscribe(token, (state, node) => {\n node.position = state.position ?? { x: 0, y: 0 };\n node.width = state.width ?? 200;\n node.twoColumn = state.twoColumn ?? false;\n return state;\n });\n newValue.nodeHooks.afterSave.subscribe(token, (state, node) => {\n state.position = node.position;\n state.width = node.width;\n state.twoColumn = node.twoColumn;\n return state;\n });\n newValue.graphTemplateHooks.beforeLoad.subscribe(token, (state, template) => {\n template.panning = state.panning;\n template.scaling = state.scaling;\n return state;\n });\n newValue.graphTemplateHooks.afterSave.subscribe(token, (state, template) => {\n state.panning = template.panning;\n state.scaling = template.scaling;\n return state;\n });\n newValue.graphEvents.beforeAddNode.subscribe(token, (node) => setViewNodeProperties(node));\n editor.value.registerNodeType(SubgraphInputNode, { category: \"Subgraphs\" });\n editor.value.registerNodeType(SubgraphOutputNode, { category: \"Subgraphs\" });\n switchGraph(newValue.graph);\n }\n },\n { immediate: true }\n );\n return reactive({\n editor,\n displayedGraph,\n isSubgraph,\n settings,\n commandHandler,\n history,\n clipboard,\n hooks,\n switchGraph\n });\n}\nconst components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Connection: ConnectionView,\n ConnectionWrapper,\n TemporaryConnection,\n Node: _sfc_main$q,\n NodeInterface,\n ContextMenu,\n Minimap,\n Sidebar\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n ButtonInterface,\n ButtonInterfaceComponent,\n CheckboxInterface,\n CheckboxInterfaceComponent,\n commandList as Commands,\n components as Components,\n Editor as EditorComponent,\n IntegerInterface,\n IntegerInterfaceComponent,\n NumberInterface,\n NumberInterfaceComponent,\n SelectInterface,\n SelectInterfaceComponent,\n SliderInterface,\n SliderInterfaceComponent,\n TextInputInterface,\n TextInputInterfaceComponent,\n TextInterface,\n providePlugin,\n useBaklava,\n useCommandHandler,\n useDragMove,\n useGraph,\n useTransform,\n useViewModel\n};\n"],"names":["BaklavaEvent","constructor","entity","super","this","emit","data","listeners","forEach","l","PreventableBaklavaEvent","prevented","prevent","Array","from","values","DynamicSequentialHook","execute","currentValue","callback","SequentialHook","ParallelHook","results","push","createProxy","token","Symbol","Map","targets","Set","register","key","subscribable","registerProxy","_a","_b","get","addTarget","target","add","keys","removeTarget","unregisterProxy","delete","destroy","t","clear","Proxy","startsWith","has","set","addSubscribable","Subscribable","listenerMap","_listeners","proxyMap","proxies","concat","flatMap","getListeners","subscribe","console","warn","unsubscribe","i","indexOf","splice","viewModelRef","useViewModel","Error","viewModel","useGraph","graph","value","switchGraph","useDragMove","positionRef","draggingStartPoint","draggingStartPosition","dragging","onPointerDown","ev","x","pageX","y","pageY","onPointerMove","dx","dy","scaling","onPointerUp","useTransform","transform","panning","TemporaryConnectionState","TemporaryConnectionState2","_export_sfc","sfc","props","__vccOpts","val","Background","setup","styles","config","settings","background","positionLeft","positionTop","size","gridSize","subSize","gridDivision","backgroundPosition","backgroundSize","subGridVisibleThreshold","_ctx","_cache","$props","$setup","$data","$options","class","style","isClient","window","isString","noop","navigator","userAgent","test","__defProp$7","Object","defineProperty","__defProps$5","defineProperties","__getOwnPropDescs$5","getOwnPropertyDescriptors","__getOwnPropSymbols$9","getOwnPropertySymbols","__hasOwnProp$9","prototype","hasOwnProperty","__propIsEnum$9","propertyIsEnumerable","__defNormalProp$7","obj","enumerable","configurable","writable","__spreadValues$7","a","b","prop","call","__spreadProps$5","unrefElement","elRef","_a2","plain","r","$el","defaultWindow","useEventListener","args","events","options","isArray","cleanups","cleanup","fn","length","stopWatch","el","event","map","listener","addEventListener","removeEventListener","immediate","flush","stop","onClickOutside","handler","window2","ignore","capture","detectIframe","fallback","shouldListen","shouldIgnore","some","target2","document","querySelectorAll","composedPath","includes","clearTimeout","detail","passive","e","button","path","setTimeout","activeElement","tagName","contains","filter","Boolean","location","_global","globalThis","global","self","globalKey","__defProp$5","__defProps$1","__getOwnPropDescs$1","__getOwnPropSymbols$5","__hasOwnProp$5","__propIsEnum$5","__defNormalProp$5","defaultState","pointerId","pressure","tiltX","tiltY","width","height","twist","pointerType","SwipeDirection","SwipeDirection2","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","linear","arg","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","_sfc_main$t","modelValue","type","default","items","required","Number","isNested","isFlipped","flippable","emits","activeMenuResetTimeout","activeMenu","rootIsFlipped","flippedX","flippedY","s","top","left","classes","itemsWithHoverProperty","hover","_c","_d","parentWidth","parentElement","offsetWidth","parentHeight","offsetHeight","onClick","item","submenu","onChildClick","onMouseEnter","index","onMouseLeave","_hoisted_1$p","_hoisted_2$j","_hoisted_3$f","_hoisted_5$7","viewBox","d","stroke","fill","ContextMenu","_component_context_menu","name","ref","isDivider","disabled","onMouseenter","$event","onMouseleave","label","_","_sfc_main$s","_hoisted_1$o","xmlns","_hoisted_6$4","cx","cy","VerticalDots","_sfc_main$r","node","intf","hoveredOver","isConnected","connectionCount","isInput","showComponent","component","port","onRender","hooks","renderInterface","startHover","endHover","openSidebar","sidebar","displayedGraph","nodeId","id","optionName","visible","_hoisted_1$n","_hoisted_2$h","NodeInterface","onPointerover","onPointerout","onOpenSidebar","_hoisted_1$m","_hoisted_2$g","_hoisted_3$d","_hoisted_4$b","_hoisted_5$5","_hoisted_6$3","_hoisted_7$1","_hoisted_8$1","_sfc_main$q","__name","selected","__props","dragMove","renaming","tempName","renameInputEl","showContextMenu","contextMenuItems","twoColumn","position","displayedInputs","inputs","ni","hidden","displayedOutputs","outputs","select","startDrag","stopDrag","openContextMenu","onContextMenuClick","async","action","removeNode","title","focus","template","doneRenaming","renderNode","ref_key","onPointerdown","placeholder","onBlur","onKeydown","output","input","_sfc_main$p","x1","y1","x2","y2","state","NONE","isTemporary","tx1","ty1","tx2","ty2","useStraightConnections","Math","abs","ALLOWED","FORBIDDEN","_hoisted_1$l","ConnectionView","getDomElements","interfaceDOM","getElementById","portDOM","getElementsByClassName","closest","interface","ConnectionWrapper","components","connection","resizeObserver","isInDanger","fromNodePosition","findNodeById","toNodePosition","to","getPortCoordinates2","resolved","offsetLeft","clientWidth","offsetTop","clientHeight","updateCoords","ResizeObserver","observe","disconnect","deep","_component_connection_view","getPortCoordinates","TemporaryConnection","status","start","end","mx","my","_sfc_main$m","nodes","find","displayedInterfaces","displayInSidebar","onMouseMove","maxwidth","getBoundingClientRect","movementX","startResize","once","close","_hoisted_1$k","_hoisted_2$f","Sidebar","onMousedown","tabindex","Minimap","canvas","showViewBounds","ctx","bounds","transformCoordinates","origX","origY","getNodeColor","domElement","content","querySelector","contentColor","getComputedColor","nodeColor","c","getComputedStyle","backgroundColor","getViewBounds","mousemove","thisX","offsetX","thisY","offsetY","viewBounds","mouseup","getContext","imageSmoothingQuality","nodeCoords","nodeDomElements","n","posX","posY","newBounds","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nc","clearRect","strokeStyle","connections","origX1","origY1","origX2","origY2","beginPath","moveTo","lineTo","bezierCurveTo","entries","fillStyle","rect","fillRect","updateCanvas","mousedown","mouseenter","mouseleave","onMousemove","onMouseup","_sfc_main$k","String","hasContextMenu","graphTemplateId","substring","graphTemplate","editor","graphTemplates","gt","removeGraphTemplate","_hoisted_1$j","_hoisted_2$e","_hoisted_3$c","_hoisted_4$a","PaletteEntry","_component_vertical_dots","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","byteToHex","toString","slice","native","randomUUID","v4","buf","offset","rnds","random","arr","toLowerCase","unsafeStringify","_sfc_main$j","_hoisted_1$i","ButtonInterfaceComponent","ButtonInterface","setPort","_sfc_main$i","_hoisted_1$h","_hoisted_2$d","_hoisted_3$b","CheckboxInterfaceComponent","CheckboxInterface","arguments","BaseNumericInterface","min","max","validate","v","useBaseNumericInterface","precision","inputEl","editMode","invalid","tempValue","stringRepresentation","toFixed","toExponential","MAX_STRING_LENGTH","isNaN","isValidator","setValue","newValue","enterEditMode","leaveEditMode","parseFloat","_sfc_main$h","_hoisted_1$g","_hoisted_3$a","points","Arrow","_sfc_main$g","baseNumericInterface","increment","decrement","_hoisted_1$f","_hoisted_2$b","_hoisted_3$9","_hoisted_4$9","IntegerInterfaceComponent","_component_i_arrow","IntegerInterface","isInteger","_sfc_main$f","_hoisted_1$e","_hoisted_2$a","_hoisted_3$8","_hoisted_4$8","NumberInterfaceComponent","NumberInterface","_sfc_main$e","open","selectedItem","selectedText","text","setSelected","_hoisted_1$d","_hoisted_2$9","_hoisted_3$7","_hoisted_4$7","_hoisted_5$4","_hoisted_6$2","_hoisted_7","SelectInterfaceComponent","SelectInterface","_sfc_main$d","didSlide","isMouseDown","percentage","_hoisted_1$c","_hoisted_2$8","_hoisted_3$6","_hoisted_4$6","SliderInterfaceComponent","onPointerup","onPointermove","onPointerleave","TextInterfaceComponent","TextInterface","_sfc_main$b","v2","_hoisted_1$b","TextInputInterfaceComponent","TextInputInterface","SUBGRAPH_INPUT_NODE_TYPE","SUBGRAPH_OUTPUT_NODE_TYPE","SubgraphInputNode","onCreate","graphInterfaceId","SubgraphOutputNode","checkRecursion","currentGraph","graphNodeType","_sfc_main$a","mouseX","mouseY","isInside","initialValue","assign","pointerTypes","keys2","omitUndefined","reduce","k","objectPick","__spreadValues$5","objectRef","result","copy","newObject","setPrototypeOf","toRefs","usePointer","editorEl","draggedNode","categories","nodeTypeEntries","nodeTypes","categoryNames","category","categories2","nodeTypesInCategory","nt","fromEntries","sort","draggedNodeStyles","onDragStart","nodeInformation","onDragEnd","instance","addNode","_hoisted_1$a","_hoisted_2$7","NodePalette","_component_PaletteEntry","SAVE_SUBGRAPH_COMMAND","CREATE_SUBGRAPH_COMMAND","IGNORE_NODE_TYPES","DELETE_NODES_COMMAND","SWITCH_TO_MAIN_GRAPH_COMMAND","NodeStep","nodeState","undo","redo","nodeType","load","save","ConnectionStep","connectionId","connectionState","removeConnection","addConnection","fromIntf","findNodeInterface","toIntf","TransactionStep","steps","UNDO_COMMAND","REDO_COMMAND","START_TRANSACTION_COMMAND","COMMIT_TRANSACTION_COMMAND","COPY_COMMAND","PASTE_COMMAND","CLEAR_CLIPBOARD_COMMAND","OPEN_SIDEBAR_COMMAND","toStringTag","_sfc_main$9","_hoisted_1$9","_hoisted_4$5","ArrowBackUp","_sfc_main$8","_hoisted_1$8","_hoisted_4$4","ArrowForwardUp","_sfc_main$7","_hoisted_1$7","_hoisted_6$1","ArrowLeft","_sfc_main$6","_hoisted_1$6","_hoisted_5$2","rx","Clipboard","_sfc_main$5","_hoisted_1$5","_hoisted_5$1","Copy","_sfc_main$4","_hoisted_1$4","_hoisted_6","DeviceFloppy","_sfc_main$3","_hoisted_1$3","_hoisted_8","Hierarchy2","_sfc_main$2","command","icon","_hoisted_1$2","ToolbarButton","commandHandler","canExecuteCommand","executeCommand","_sfc_main$1","isSubgraph","commands","subgraphCommands","_hoisted_1$1","Toolbar","_component_toolbar_button","_sfc_main","Node","viewModelRef2","selectedNodes","panZoom","pointerCache","prevDiff","midpoint","applyZoom","centerX","centerY","newScale","currentPoint","newPoint","diff","getCoordsFromCache","ax","clientX","ay","clientY","bx","by","curDiff","sqrt","p","onMouseWheel","preventDefault","scrollAmount","deltaY","deltaMode","usePanZoom","temporaryConnection","hoveringOver","checkConnectionResult","checkConnection","connectionAllowed","ids","connectionsInDanger","onMouseDown","onMouseUp","useTemporaryConnection","nodeContainerStyle","counter","unselectAllNodes","keyDown","handleKeyDown","keyUp","handleKeyUp","selectNode","pressedKeys","mouseWheel","_hoisted_1","Editor","_component_background","_component_toolbar","_component_node_palette","_component_connection_wrapper","_component_temporary_connection","_component_node","_component_sidebar","_component_minimap","onWheel","onKeyup","$slots","onSelect","enableMinimap","useCommandHandler","throwOnNonexisting","hotkeyHandler","handlers","h","every","commandName","registerHotkey","useHotkeyHandler","registerCommand","canExecute","isTemplate","g","useBaklava","existingEditor","_displayedGraph","newGraph","newGraphInstance","createGraph","targetInterface","nodeInterfaceId","useSwitchGraph","history","maxSteps","changeBySelf","currentIndex","activeTransaction","transactionSteps","addStep","step","shift","canUndo","canRedo","oldGraph","conn","useHistory","clipboard","nodeBuffer","connectionBuffer","isEmpty","findInterface","io","intf2","interfacesOfSelectedNodes","JSON","stringify","idmap","parsedNodeBuffer","parse","parsedConnectionBuffer","newNodes","newConnections","copiedNode","generatedId","tapInterfaces","intfs","intfState","newIntfId","beforeLoad","ns","newConnection","useClipboard","registerDeleteNodesCommand","selectedNodesInputs","selectedNodesOutputs","inputConnections","outputConnections","innerConnections","inputInterfaces","outputInterfaces","interfaceIdMap","graphInputs","newId","graphOutputs","subgraphTemplate","addGraphTemplate","averageX","round","averageY","registerCreateSubgraphCommand","interfaceConnections","inputNodes","outputNodes","update","registerSaveSubgraphCommand","registerSwitchToMainGraphCommand","registerGraphCommands","registerOpenSidebarCommand","registerSidebarCommands","oldValue","registerGraph","graphEvents","beforeAddNode","nodeHooks","afterSave","graphTemplateHooks","disablePointerEvents","setViewNodeProperties","registerNodeType","freeze","__proto__","Connection"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/167.e705f8bd.js b/_static/kpm/js/167.e705f8bd.js new file mode 100644 index 00000000..d3c309a9 --- /dev/null +++ b/_static/kpm/js/167.e705f8bd.js @@ -0,0 +1,2 @@ +(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[167],{20425:function(e){var n,t,r,o,i,a,u,c;e.exports=(n="__v-click-outside",t="undefined"!=typeof window,r="undefined"!=typeof navigator,o=t&&("ontouchstart"in window||r&&navigator.msMaxTouchPoints>0)?["touchstart"]:["click"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(e,t){var r=function(e){var n="function"==typeof e;if(!n&&"object"!=typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||o,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),a=r.handler,u=r.middleware,c=r.detectIframe,d=r.capture;if(r.isActive){if(e[n]=r.events.map((function(n){return{event:n,srcTarget:document.documentElement,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,o=e.middleware,a=t.path||t.composedPath&&t.composedPath();(a?a.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:o})}({el:e,event:n,handler:a,middleware:u})},capture:d}})),c){var f={event:"blur",srcTarget:window,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,o=e.middleware;setTimeout((function(){var e=document.activeElement;e&&"IFRAME"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:o})}),0)}({el:e,event:n,handler:a,middleware:u})},capture:d};e[n]=[].concat(e[n],[f])}e[n].forEach((function(t){var r=t.event,o=t.srcTarget,i=t.handler;return setTimeout((function(){e[n]&&o.addEventListener(r,i,d)}),0)}))}},u=function(e){(e[n]||[]).forEach((function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)})),delete e[n]},c=t?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(u(e),a(e,{value:t}))},unmounted:u}:{},{install:function(e){e.directive("click-outside",c)},directive:c})},40703:function(e,n,t){var r;r=function(e){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=3)}([function(e,n,t){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t(1),i=t(2),a=t(5)||("undefined"!=typeof window?window.cola:null),u=t(4),c=function(e){return(void 0===e?"undefined":r(e))===r(0)},d=function(){},f=function(e,n){var t;return null!=(t=e)&&(void 0===t?"undefined":r(t))===r((function(){}))?e.apply(n,[n]):e};function s(e){this.options=o({},i,e)}s.prototype.run=function(){var e=this,n=this.options;e.manuallyStopped=!1;var t=n.cy,o=n.eles,i=o.nodes(),s=o.edges(),h=!1,l=i.filter((function(e){return e.isParent()})),g=i.subtract(l),v=n.boundingBox||{x1:0,y1:0,w:t.width(),h:t.height()};void 0===v.x2&&(v.x2=v.x1+v.w),void 0===v.w&&(v.w=v.x2-v.x1),void 0===v.y2&&(v.y2=v.y1+v.h),void 0===v.h&&(v.h=v.y2-v.y1);var p=function(){for(var e=0;e0&&b.constraints(S),b.groups(l.map((function(e,t){var r=f(n.nodeSpacing,e),o=function(n){return parseFloat(e.style("padding-"+n))},i=o("left")+r,a=o("right")+r,u=o("top")+r,c=o("bottom")+r;return e.scratch().cola={index:t,padding:Math.max(i,a,u,c),leaves:e.children().intersection(g).map((function(e){return e[0].scratch().cola.index})),fixed:e.locked()},e})).map((function(e){return e.scratch().cola.groups=e.children().intersection(l).map((function(e){return e.scratch().cola.index})),e.scratch().cola})));var I,_=void 0,L=void 0;if(null!=n.edgeLength?(_=n.edgeLength,L="linkDistance"):null!=n.edgeSymDiffLength?(_=n.edgeSymDiffLength,L="symmetricDiffLinkLengths"):null!=n.edgeJaccardLength?(_=n.edgeJaccardLength,L="jaccardLinkLengths"):(_=100,L="linkDistance"),b.links(s.stdFilter((function(e){return g.contains(e.source())&&g.contains(e.target())})).map((function(e){var n=e.scratch().cola={source:e.source()[0].scratch().cola.index,target:e.target()[0].scratch().cola.index};return null!=_&&(n.calcLength=f(_,e)),n}))),b.size([v.w,v.h]),null!=_&&b[L]((function(e){return e.calcLength})),n.flow){var T=void 0;(void 0===(I=n.flow)?"undefined":r(I))===r("")?T={axis:n.flow,minSeparation:50}:c(n.flow)?T={axis:"y",minSeparation:n.flow}:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r({})}(n.flow)?((T=n.flow).axis=T.axis||"y",T.minSeparation=null!=T.minSeparation?T.minSeparation:50):T={axis:"y",minSeparation:50},b.flowLayout(T.axis,T.minSeparation)}return e.trigger({type:"layoutstart",layout:e}),b.avoidOverlaps(n.avoidOverlap).handleDisconnected(n.handleDisconnected).start(n.unconstrIter,n.userConstIter,n.allConstIter,void 0,void 0,n.centerGraph),n.infinite||setTimeout((function(){e.manuallyStopped||b.stop()}),n.maxSimulationTime),this},s.prototype.stop=function(){return this.adaptor&&(this.manuallyStopped=!0,this.adaptor.stop()),this},e.exports=s},function(e,n,t){"use strict";e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var n=arguments.length,t=Array(n>1?n-1:0),r=1;r1?n-1:0),r=1;r{e.exports={graphlib:t(70574),layout:t(98123),debug:t(27570),util:{time:t(11138).time,notime:t(11138).notime},version:t(88177)}},92188:(e,n,t)=>{"use strict";var r=t(38436),o=t(74079);e.exports={run:function(e){var n="greedy"===e.graph().acyclicer?o(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};return r.forEach(e.nodes(),(function i(a){r.has(o,a)||(o[a]=!0,t[a]=!0,r.forEach(e.outEdges(a),(function(e){r.has(t,e.w)?n.push(e):i(e.w)})),delete t[a])})),n}(e);r.forEach(n,(function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,r.uniqueId("rev"))}))},undo:function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}}))}}},61133:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t,r,i,a){var u={width:0,height:0,rank:a,borderType:n},c=i[n][a-1],d=o.addDummyNode(e,"border",u,t);i[n][a]=d,e.setParent(d,r),c&&e.setEdge(c,d,{weight:1})}e.exports=function(e){r.forEach(e.children(),(function n(t){var o=e.children(t),a=e.node(t);if(o.length&&r.forEach(o,n),r.has(a,"minRank")){a.borderLeft=[],a.borderRight=[];for(var u=a.minRank,c=a.maxRank+1;u{"use strict";var r=t(38436);function o(e){r.forEach(e.nodes(),(function(n){i(e.node(n))})),r.forEach(e.edges(),(function(n){i(e.edge(n))}))}function i(e){var n=e.width;e.width=e.height,e.height=n}function a(e){e.y=-e.y}function u(e){var n=e.x;e.x=e.y,e.y=n}e.exports={adjust:function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||o(e)},undo:function(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.forEach(e.nodes(),(function(n){a(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.forEach(t.points,a),r.has(t,"y")&&a(t)}))}(e),"lr"!==n&&"rl"!==n||(function(e){r.forEach(e.nodes(),(function(n){u(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.forEach(t.points,u),r.has(t,"x")&&u(t)}))}(e),o(e))}}},77822:e=>{function n(){var e={};e._next=e._prev=e,this._sentinel=e}function t(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function r(e,n){if("_next"!==e&&"_prev"!==e)return n}e.exports=n,n.prototype.dequeue=function(){var e=this._sentinel,n=e._prev;if(n!==e)return t(n),n},n.prototype.enqueue=function(e){var n=this._sentinel;e._prev&&e._next&&t(e),e._next=n._next,n._next._prev=e,n._next=e,e._prev=n},n.prototype.toString=function(){for(var e=[],n=this._sentinel,t=n._prev;t!==n;)e.push(JSON.stringify(t,r)),t=t._prev;return"["+e.join(", ")+"]"}},27570:(e,n,t)=>{var r=t(38436),o=t(11138),i=t(70574).Graph;e.exports={debugOrdering:function(e){var n=o.buildLayerMatrix(e),t=new i({compound:!0,multigraph:!0}).setGraph({});return r.forEach(e.nodes(),(function(n){t.setNode(n,{label:n}),t.setParent(n,"layer"+e.node(n).rank)})),r.forEach(e.edges(),(function(e){t.setEdge(e.v,e.w,{},e.name)})),r.forEach(n,(function(e,n){var o="layer"+n;t.setNode(o,{rank:"same"}),r.reduce(e,(function(e,n){return t.setEdge(e,n,{style:"invis"}),n}))})),t}}},70574:(e,n,t)=>{var r;try{r=t(28282)}catch(e){}r||(r=window.graphlib),e.exports=r},74079:(e,n,t)=>{var r=t(38436),o=t(70574).Graph,i=t(77822);e.exports=function(e,n){if(e.nodeCount()<=1)return[];var t=function(e,n){var t=new o,a=0,u=0;r.forEach(e.nodes(),(function(e){t.setNode(e,{v:e,in:0,out:0})})),r.forEach(e.edges(),(function(e){var r=t.edge(e.v,e.w)||0,o=n(e),i=r+o;t.setEdge(e.v,e.w,i),u=Math.max(u,t.node(e.v).out+=o),a=Math.max(a,t.node(e.w).in+=o)}));var d=r.range(u+a+3).map((function(){return new i})),f=a+1;return r.forEach(t.nodes(),(function(e){c(d,f,t.node(e))})),{graph:t,buckets:d,zeroIdx:f}}(e,n||a),d=function(e,n,t){for(var r,o=[],i=n[n.length-1],a=n[0];e.nodeCount();){for(;r=a.dequeue();)u(e,n,t,r);for(;r=i.dequeue();)u(e,n,t,r);if(e.nodeCount())for(var c=n.length-2;c>0;--c)if(r=n[c].dequeue()){o=o.concat(u(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return r.flatten(r.map(d,(function(n){return e.outEdges(n.v,n.w)})),!0)};var a=r.constant(1);function u(e,n,t,o,i){var a=i?[]:void 0;return r.forEach(e.inEdges(o.v),(function(r){var o=e.edge(r),u=e.node(r.v);i&&a.push({v:r.v,w:r.w}),u.out-=o,c(n,t,u)})),r.forEach(e.outEdges(o.v),(function(r){var o=e.edge(r),i=r.w,a=e.node(i);a.in-=o,c(n,t,a)})),e.removeNode(o.v),a}function c(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}},98123:(e,n,t)=>{"use strict";var r=t(38436),o=t(92188),i=t(45995),a=t(78093),u=t(11138).normalizeRanks,c=t(24219),d=t(11138).removeEmptyRanks,f=t(72981),s=t(61133),h=t(53258),l=t(53408),g=t(17873),v=t(11138),p=t(70574).Graph;e.exports=function(e,n){var t=n&&n.debugTiming?v.time:v.notime;t("layout",(function(){var n=t(" buildLayoutGraph",(function(){return function(e){var n=new p({multigraph:!0,compound:!0}),t=I(e.graph());return n.setGraph(r.merge({},y,S(t,m),r.pick(t,w))),r.forEach(e.nodes(),(function(t){var o=I(e.node(t));n.setNode(t,r.defaults(S(o,b),x)),n.setParent(t,e.parent(t))})),r.forEach(e.edges(),(function(t){var o=I(e.edge(t));n.setEdge(t,r.merge({},k,S(o,E),r.pick(o,N)))})),n}(e)}));t(" runLayout",(function(){!function(e,n){n(" makeSpaceForEdgeLabels",(function(){!function(e){var n=e.graph();n.ranksep/=2,r.forEach(e.edges(),(function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(e)})),n(" removeSelfEdges",(function(){!function(e){r.forEach(e.edges(),(function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}}))}(e)})),n(" acyclic",(function(){o.run(e)})),n(" nestingGraph.run",(function(){f.run(e)})),n(" rank",(function(){a(v.asNonCompoundGraph(e))})),n(" injectEdgeLabelProxies",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};v.addDummyNode(e,"edge-proxy",o,"_ep")}}))}(e)})),n(" removeEmptyRanks",(function(){d(e)})),n(" nestingGraph.cleanup",(function(){f.cleanup(e)})),n(" normalizeRanks",(function(){u(e)})),n(" assignRankMinMax",(function(){!function(e){var n=0;r.forEach(e.nodes(),(function(t){var o=e.node(t);o.borderTop&&(o.minRank=e.node(o.borderTop).rank,o.maxRank=e.node(o.borderBottom).rank,n=r.max(n,o.maxRank))})),e.graph().maxRank=n}(e)})),n(" removeEdgeLabelProxies",(function(){!function(e){r.forEach(e.nodes(),(function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))}))}(e)})),n(" normalize.run",(function(){i.run(e)})),n(" parentDummyChains",(function(){c(e)})),n(" addBorderSegments",(function(){s(e)})),n(" order",(function(){l(e)})),n(" insertSelfEdges",(function(){!function(e){var n=v.buildLayerMatrix(e);r.forEach(n,(function(n){var t=0;r.forEach(n,(function(n,o){var i=e.node(n);i.order=o+t,r.forEach(i.selfEdges,(function(n){v.addDummyNode(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")})),delete i.selfEdges}))}))}(e)})),n(" adjustCoordinateSystem",(function(){h.adjust(e)})),n(" position",(function(){g(e)})),n(" positionSelfEdges",(function(){!function(e){r.forEach(e.nodes(),(function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,a=t.x-o,u=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*a/3,y:i-u},{x:o+5*a/6,y:i-u},{x:o+a,y:i},{x:o+5*a/6,y:i+u},{x:o+2*a/3,y:i+u}],t.label.x=t.x,t.label.y=t.y}}))}(e)})),n(" removeBorderNodes",(function(){!function(e){r.forEach(e.nodes(),(function(n){if(e.children(n).length){var t=e.node(n),o=e.node(t.borderTop),i=e.node(t.borderBottom),a=e.node(r.last(t.borderLeft)),u=e.node(r.last(t.borderRight));t.width=Math.abs(u.x-a.x),t.height=Math.abs(i.y-o.y),t.x=a.x+t.width/2,t.y=o.y+t.height/2}})),r.forEach(e.nodes(),(function(n){"border"===e.node(n).dummy&&e.removeNode(n)}))}(e)})),n(" normalize.undo",(function(){i.undo(e)})),n(" fixupEdgeLabelCoords",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(r.has(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}}))}(e)})),n(" undoCoordinateSystem",(function(){h.undo(e)})),n(" translateGraph",(function(){!function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,a=e.graph(),u=a.marginx||0,c=a.marginy||0;function d(e){var r=e.x,a=e.y,u=e.width,c=e.height;n=Math.min(n,r-u/2),t=Math.max(t,r+u/2),o=Math.min(o,a-c/2),i=Math.max(i,a+c/2)}r.forEach(e.nodes(),(function(n){d(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.has(t,"x")&&d(t)})),n-=u,o-=c,r.forEach(e.nodes(),(function(t){var r=e.node(t);r.x-=n,r.y-=o})),r.forEach(e.edges(),(function(t){var i=e.edge(t);r.forEach(i.points,(function(e){e.x-=n,e.y-=o})),r.has(i,"x")&&(i.x-=n),r.has(i,"y")&&(i.y-=o)})),a.width=t-n+u,a.height=i-o+c}(e)})),n(" assignNodeIntersects",(function(){!function(e){r.forEach(e.edges(),(function(n){var t,r,o=e.edge(n),i=e.node(n.v),a=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=a,r=i),o.points.unshift(v.intersectRect(i,t)),o.points.push(v.intersectRect(a,r))}))}(e)})),n(" reversePoints",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);t.reversed&&t.points.reverse()}))}(e)})),n(" acyclic.undo",(function(){o.undo(e)}))}(n,t)})),t(" updateInputGraph",(function(){!function(e,n){r.forEach(e.nodes(),(function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))})),r.forEach(e.edges(),(function(t){var o=e.edge(t),i=n.edge(t);o.points=i.points,r.has(i,"x")&&(o.x=i.x,o.y=i.y)})),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n)}))}))};var m=["nodesep","edgesep","ranksep","marginx","marginy"],y={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},w=["acyclicer","ranker","rankdir","align"],b=["width","height"],x={width:0,height:0},E=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},N=["labelpos"];function S(e,n){return r.mapValues(r.pick(e,n),Number)}function I(e){var n={};return r.forEach(e,(function(e,t){n[t.toLowerCase()]=e})),n}},38436:(e,n,t)=>{var r;try{r={cloneDeep:t(50361),constant:t(75703),defaults:t(91747),each:t(66073),filter:t(63105),find:t(13311),flatten:t(85564),forEach:t(84486),forIn:t(62620),has:t(18721),isUndefined:t(52353),last:t(10928),map:t(35161),mapValues:t(66604),max:t(6162),merge:t(82492),min:t(53632),minBy:t(22762),now:t(7771),pick:t(78718),range:t(96026),reduce:t(54061),sortBy:t(89734),uniqueId:t(73955),values:t(52628),zipObject:t(7287)}}catch(e){}r||(r=window._),e.exports=r},72981:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t,a,u,c,d){var f=e.children(d);if(f.length){var s=o.addBorderNode(e,"_bt"),h=o.addBorderNode(e,"_bb"),l=e.node(d);e.setParent(s,d),l.borderTop=s,e.setParent(h,d),l.borderBottom=h,r.forEach(f,(function(r){i(e,n,t,a,u,c,r);var o=e.node(r),f=o.borderTop?o.borderTop:r,l=o.borderBottom?o.borderBottom:r,g=o.borderTop?a:2*a,v=f!==l?1:u-c[d]+1;e.setEdge(s,f,{weight:g,minlen:v,nestingEdge:!0}),e.setEdge(l,h,{weight:g,minlen:v,nestingEdge:!0})})),e.parent(d)||e.setEdge(n,s,{weight:0,minlen:u+c[d]})}else d!==n&&e.setEdge(n,d,{weight:0,minlen:t})}e.exports={run:function(e){var n=o.addDummyNode(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var a=e.children(o);a&&a.length&&r.forEach(a,(function(e){t(e,i+1)})),n[o]=i}return r.forEach(e.children(),(function(e){t(e,1)})),n}(e),a=r.max(r.values(t))-1,u=2*a+1;e.graph().nestingRoot=n,r.forEach(e.edges(),(function(n){e.edge(n).minlen*=u}));var c=function(e){return r.reduce(e.edges(),(function(n,t){return n+e.edge(t).weight}),0)}(e)+1;r.forEach(e.children(),(function(r){i(e,n,u,c,a,t,r)})),e.graph().nodeRankFactor=u},cleanup:function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.forEach(e.edges(),(function(n){e.edge(n).nestingEdge&&e.removeEdge(n)}))}}},45995:(e,n,t)=>{"use strict";var r=t(38436),o=t(11138);e.exports={run:function(e){e.graph().dummyChains=[],r.forEach(e.edges(),(function(n){!function(e,n){var t,r,i,a=n.v,u=e.node(a).rank,c=n.w,d=e.node(c).rank,f=n.name,s=e.edge(n),h=s.labelRank;if(d!==u+1){for(e.removeEdge(n),i=0,++u;u{var r=t(38436);e.exports=function(e,n,t){var o,i={};r.forEach(t,(function(t){for(var r,a,u=e.parent(t);u;){if((r=e.parent(u))?(a=i[r],i[r]=u):(a=o,o=u),a&&a!==u)return void n.setEdge(a,u);u=r}}))}},35439:(e,n,t)=>{var r=t(38436);e.exports=function(e,n){return r.map(n,(function(n){var t=e.inEdges(n);if(t.length){var o=r.reduce(t,(function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}}),{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}return{v:n}}))}},23128:(e,n,t)=>{var r=t(38436),o=t(70574).Graph;e.exports=function(e,n,t){var i=function(e){for(var n;e.hasNode(n=r.uniqueId("_root")););return n}(e),a=new o({compound:!0}).setGraph({root:i}).setDefaultNodeLabel((function(n){return e.node(n)}));return r.forEach(e.nodes(),(function(o){var u=e.node(o),c=e.parent(o);(u.rank===n||u.minRank<=n&&n<=u.maxRank)&&(a.setNode(o),a.setParent(o,c||i),r.forEach(e[t](o),(function(n){var t=n.v===o?n.w:n.v,i=a.edge(t,o),u=r.isUndefined(i)?0:i.weight;a.setEdge(t,o,{weight:e.edge(n).weight+u})})),r.has(u,"minRank")&&a.setNode(o,{borderLeft:u.borderLeft[n],borderRight:u.borderRight[n]}))})),a}},56630:(e,n,t)=>{"use strict";var r=t(38436);function o(e,n,t){for(var o=r.zipObject(t,r.map(t,(function(e,n){return n}))),i=r.flatten(r.map(n,(function(n){return r.sortBy(r.map(e.outEdges(n),(function(n){return{pos:o[n.w],weight:e.edge(n).weight}})),"pos")})),!0),a=1;a0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;d+=e.weight*t}))),d}e.exports=function(e,n){for(var t=0,r=1;r{"use strict";var r=t(38436),o=t(2588),i=t(56630),a=t(61026),u=t(23128),c=t(55093),d=t(70574).Graph,f=t(11138);function s(e,n,t){return r.map(n,(function(n){return u(e,n,t)}))}function h(e,n){var t=new d;r.forEach(e,(function(e){var o=e.graph().root,i=a(e,o,t,n);r.forEach(i.vs,(function(n,t){e.node(n).order=t})),c(e,t,i.vs)}))}function l(e,n){r.forEach(n,(function(n){r.forEach(n,(function(n,t){e.node(n).order=t}))}))}e.exports=function(e){var n=f.maxRank(e),t=s(e,r.range(1,n+1),"inEdges"),a=s(e,r.range(n-1,-1,-1),"outEdges"),u=o(e);l(e,u);for(var c,d=Number.POSITIVE_INFINITY,g=0,v=0;v<4;++g,++v){h(g%2?t:a,g%4>=2),u=f.buildLayerMatrix(e);var p=i(e,u);p{"use strict";var r=t(38436);e.exports=function(e){var n={},t=r.filter(e.nodes(),(function(n){return!e.children(n).length})),o=r.max(r.map(t,(function(n){return e.node(n).rank}))),i=r.map(r.range(o+1),(function(){return[]})),a=r.sortBy(t,(function(n){return e.node(n).rank}));return r.forEach(a,(function t(o){if(!r.has(n,o)){n[o]=!0;var a=e.node(o);i[a.rank].push(o),r.forEach(e.successors(o),t)}})),i}},83678:(e,n,t)=>{"use strict";var r=t(38436);e.exports=function(e,n){var t={};return r.forEach(e,(function(e,n){var o=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};r.isUndefined(e.barycenter)||(o.barycenter=e.barycenter,o.weight=e.weight)})),r.forEach(n.edges(),(function(e){var n=t[e.v],o=t[e.w];r.isUndefined(n)||r.isUndefined(o)||(o.indegree++,n.out.push(t[e.w]))})),function(e){var n=[];function t(e){return function(n){var t,o,i,a;n.merged||(r.isUndefined(n.barycenter)||r.isUndefined(e.barycenter)||n.barycenter>=e.barycenter)&&(o=n,i=0,a=0,(t=e).weight&&(i+=t.barycenter*t.weight,a+=t.weight),o.weight&&(i+=o.barycenter*o.weight,a+=o.weight),t.vs=o.vs.concat(t.vs),t.barycenter=i/a,t.weight=a,t.i=Math.min(o.i,t.i),o.merged=!0)}}function o(n){return function(t){t.in.push(n),0==--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.forEach(i.in.reverse(),t(i)),r.forEach(i.out,o(i))}return r.map(r.filter(n,(function(e){return!e.merged})),(function(e){return r.pick(e,["vs","i","barycenter","weight"])}))}(r.filter(t,(function(e){return!e.indegree})))}},61026:(e,n,t)=>{var r=t(38436),o=t(35439),i=t(83678),a=t(87304);e.exports=function e(n,t,u,c){var d=n.children(t),f=n.node(t),s=f?f.borderLeft:void 0,h=f?f.borderRight:void 0,l={};s&&(d=r.filter(d,(function(e){return e!==s&&e!==h})));var g=o(n,d);r.forEach(g,(function(t){if(n.children(t.v).length){var o=e(n,t.v,u,c);l[t.v]=o,r.has(o,"barycenter")&&(i=t,a=o,r.isUndefined(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight))}var i,a}));var v=i(g,u);!function(e,n){r.forEach(e,(function(e){e.vs=r.flatten(e.vs.map((function(e){return n[e]?n[e].vs:e})),!0)}))}(v,l);var p=a(v,c);if(s&&(p.vs=r.flatten([s,p.vs,h],!0),n.predecessors(s).length)){var m=n.node(n.predecessors(s)[0]),y=n.node(n.predecessors(h)[0]);r.has(p,"barycenter")||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+m.order+y.order)/(p.weight+2),p.weight+=2}return p}},87304:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t){for(var o;n.length&&(o=r.last(n)).i<=t;)n.pop(),e.push(o.vs),t++;return t}e.exports=function(e,n){var t,a=o.partition(e,(function(e){return r.has(e,"barycenter")})),u=a.lhs,c=r.sortBy(a.rhs,(function(e){return-e.i})),d=[],f=0,s=0,h=0;u.sort((t=!!n,function(e,n){return e.barycentern.barycenter?1:t?n.i-e.i:e.i-n.i})),h=i(d,c,h),r.forEach(u,(function(e){h+=e.vs.length,d.push(e.vs),f+=e.barycenter*e.weight,s+=e.weight,h=i(d,c,h)}));var l={vs:r.flatten(d,!0)};return s&&(l.barycenter=f/s,l.weight=s),l}},24219:(e,n,t)=>{var r=t(38436);e.exports=function(e){var n=function(e){var n={},t=0;return r.forEach(e.children(),(function o(i){var a=t;r.forEach(e.children(i),o),n[i]={low:a,lim:t++}})),n}(e);r.forEach(e.graph().dummyChains,(function(t){for(var r=e.node(t),o=r.edgeObj,i=function(e,n,t,r){var o,i,a=[],u=[],c=Math.min(n[t].low,n[r].low),d=Math.max(n[t].lim,n[r].lim);o=t;do{o=e.parent(o),a.push(o)}while(o&&(n[o].low>c||d>n[o].lim));for(i=o,o=r;(o=e.parent(o))!==i;)u.push(o);return{path:a.concat(u.reverse()),lca:i}}(e,n,o.v,o.w),a=i.path,u=i.lca,c=0,d=a[c],f=!0;t!==o.w;){if(r=e.node(t),f){for(;(d=a[c])!==u&&e.node(d).maxRank{"use strict";var r=t(38436),o=t(70574).Graph,i=t(11138);function a(e,n){var t={};return r.reduce(n,(function(n,o){var i=0,a=0,u=n.length,d=r.last(o);return r.forEach(o,(function(n,f){var s=function(e,n){if(e.node(n).dummy)return r.find(e.predecessors(n),(function(n){return e.node(n).dummy}))}(e,n),h=s?e.node(s).order:u;(s||n===d)&&(r.forEach(o.slice(a,f+1),(function(n){r.forEach(e.predecessors(n),(function(r){var o=e.node(r),a=o.order;!(au)&&c(t,n,d)}))}))}return r.reduce(n,(function(n,t){var i,a=-1,u=0;return r.forEach(t,(function(r,c){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,u,c,a,i),u=c,a=i)}o(t,u,t.length,i,n.length)})),t})),t}function c(e,n,t){if(n>t){var r=n;n=t,t=r}var o=e[n];o||(e[n]=o={}),o[t]=!0}function d(e,n,t){if(n>t){var o=n;n=t,t=o}return r.has(e[n],t)}function f(e,n,t,o){var i={},a={},u={};return r.forEach(n,(function(e){r.forEach(e,(function(e,n){i[e]=e,a[e]=e,u[e]=n}))})),r.forEach(n,(function(e){var n=-1;r.forEach(e,(function(e){var c=o(e);if(c.length){c=r.sortBy(c,(function(e){return u[e]}));for(var f=(c.length-1)/2,s=Math.floor(f),h=Math.ceil(f);s<=h;++s){var l=c[s];a[e]===e&&n{"use strict";var r=t(38436),o=t(11138),i=t(3573).positionX;e.exports=function(e){(function(e){var n=o.buildLayerMatrix(e),t=e.graph().ranksep,i=0;r.forEach(n,(function(n){var o=r.max(r.map(n,(function(n){return e.node(n).height})));r.forEach(n,(function(n){e.node(n).y=i+o/2})),i+=o+t}))})(e=o.asNonCompoundGraph(e)),r.forEach(i(e),(function(n,t){e.node(t).x=n}))}},20300:(e,n,t)=>{"use strict";var r=t(38436),o=t(70574).Graph,i=t(76681).slack;function a(e,n){return r.forEach(e.nodes(),(function t(o){r.forEach(n.nodeEdges(o),(function(r){var a=r.v,u=o===a?r.w:a;e.hasNode(u)||i(n,r)||(e.setNode(u,{}),e.setEdge(o,u,{}),t(u))}))})),e.nodeCount()}function u(e,n){return r.minBy(n.edges(),(function(t){if(e.hasNode(t.v)!==e.hasNode(t.w))return i(n,t)}))}function c(e,n,t){r.forEach(e.nodes(),(function(e){n.node(e).rank+=t}))}e.exports=function(e){var n,t,r=new o({directed:!1}),d=e.nodes()[0],f=e.nodeCount();for(r.setNode(d,{});a(r,e){"use strict";var r=t(76681).longestPath,o=t(20300),i=t(42472);e.exports=function(e){switch(e.graph().ranker){case"network-simplex":default:!function(e){i(e)}(e);break;case"tight-tree":!function(e){r(e),o(e)}(e);break;case"longest-path":a(e)}};var a=r},42472:(e,n,t)=>{"use strict";var r=t(38436),o=t(20300),i=t(76681).slack,a=t(76681).longestPath,u=t(70574).alg.preorder,c=t(70574).alg.postorder,d=t(11138).simplify;function f(e){e=d(e),a(e);var n,t=o(e);for(l(t),s(t,e);n=v(t);)m(t,e,n,p(t,e,n))}function s(e,n){var t=c(e,e.nodes());t=t.slice(0,t.length-1),r.forEach(t,(function(t){!function(e,n,t){var r=e.node(t).parent;e.edge(t,r).cutvalue=h(e,n,t)}(e,n,t)}))}function h(e,n,t){var o=e.node(t).parent,i=!0,a=n.edge(t,o),u=0;return a||(i=!1,a=n.edge(o,t)),u=a.weight,r.forEach(n.nodeEdges(t),(function(r){var a,c,d=r.v===t,f=d?r.w:r.v;if(f!==o){var s=d===i,h=n.edge(r).weight;if(u+=s?h:-h,a=t,c=f,e.hasEdge(a,c)){var l=e.edge(t,f).cutvalue;u+=s?-l:l}}})),u}function l(e,n){arguments.length<2&&(n=e.nodes()[0]),g(e,{},1,n)}function g(e,n,t,o,i){var a=t,u=e.node(o);return n[o]=!0,r.forEach(e.neighbors(o),(function(i){r.has(n,i)||(t=g(e,n,t,i,o))})),u.low=a,u.lim=t++,i?u.parent=i:delete u.parent,t}function v(e){return r.find(e.edges(),(function(n){return e.edge(n).cutvalue<0}))}function p(e,n,t){var o=t.v,a=t.w;n.hasEdge(o,a)||(o=t.w,a=t.v);var u=e.node(o),c=e.node(a),d=u,f=!1;u.lim>c.lim&&(d=c,f=!0);var s=r.filter(n.edges(),(function(n){return f===y(0,e.node(n.v),d)&&f!==y(0,e.node(n.w),d)}));return r.minBy(s,(function(e){return i(n,e)}))}function m(e,n,t,o){var i=t.v,a=t.w;e.removeEdge(i,a),e.setEdge(o.v,o.w,{}),l(e),s(e,n),function(e,n){var t=r.find(e.nodes(),(function(e){return!n.node(e).parent})),o=u(e,t);o=o.slice(1),r.forEach(o,(function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)}))}(e,n)}function y(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}e.exports=f,f.initLowLimValues=l,f.initCutValues=s,f.calcCutValue=h,f.leaveEdge=v,f.enterEdge=p,f.exchangeEdges=m},76681:(e,n,t)=>{"use strict";var r=t(38436);e.exports={longestPath:function(e){var n={};r.forEach(e.sources(),(function t(o){var i=e.node(o);if(r.has(n,o))return i.rank;n[o]=!0;var a=r.min(r.map(e.outEdges(o),(function(n){return t(n.w)-e.edge(n).minlen})));return a!==Number.POSITIVE_INFINITY&&null!=a||(a=0),i.rank=a}))},slack:function(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}}},11138:(e,n,t)=>{"use strict";var r=t(38436),o=t(70574).Graph;function i(e,n,t,o){var i;do{i=r.uniqueId(o)}while(e.hasNode(i));return t.dummy=n,e.setNode(i,t),i}function a(e){return r.max(r.map(e.nodes(),(function(n){var t=e.node(n).rank;if(!r.isUndefined(t))return t})))}e.exports={addDummyNode:i,simplify:function(e){var n=(new o).setGraph(e.graph());return r.forEach(e.nodes(),(function(t){n.setNode(t,e.node(t))})),r.forEach(e.edges(),(function(t){var r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})})),n},asNonCompoundGraph:function(e){var n=new o({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.forEach(e.nodes(),(function(t){e.children(t).length||n.setNode(t,e.node(t))})),r.forEach(e.edges(),(function(t){n.setEdge(t,e.edge(t))})),n},successorWeights:function(e){var n=r.map(e.nodes(),(function(n){var t={};return r.forEach(e.outEdges(n),(function(n){t[n.w]=(t[n.w]||0)+e.edge(n).weight})),t}));return r.zipObject(e.nodes(),n)},predecessorWeights:function(e){var n=r.map(e.nodes(),(function(n){var t={};return r.forEach(e.inEdges(n),(function(n){t[n.v]=(t[n.v]||0)+e.edge(n).weight})),t}));return r.zipObject(e.nodes(),n)},intersectRect:function(e,n){var t,r,o=e.x,i=e.y,a=n.x-o,u=n.y-i,c=e.width/2,d=e.height/2;if(!a&&!u)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(u)*c>Math.abs(a)*d?(u<0&&(d=-d),t=d*a/u,r=d):(a<0&&(c=-c),t=c,r=c*u/a),{x:o+t,y:i+r}},buildLayerMatrix:function(e){var n=r.map(r.range(a(e)+1),(function(){return[]}));return r.forEach(e.nodes(),(function(t){var o=e.node(t),i=o.rank;r.isUndefined(i)||(n[i][o.order]=t)})),n},normalizeRanks:function(e){var n=r.min(r.map(e.nodes(),(function(n){return e.node(n).rank})));r.forEach(e.nodes(),(function(t){var o=e.node(t);r.has(o,"rank")&&(o.rank-=n)}))},removeEmptyRanks:function(e){var n=r.min(r.map(e.nodes(),(function(n){return e.node(n).rank}))),t=[];r.forEach(e.nodes(),(function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)}));var o=0,i=e.graph().nodeRankFactor;r.forEach(t,(function(n,t){r.isUndefined(n)&&t%i!=0?--o:o&&r.forEach(n,(function(n){e.node(n).rank+=o}))}))},addBorderNode:function(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),i(e,"border",o,n)},maxRank:a,partition:function(e,n){var t={lhs:[],rhs:[]};return r.forEach(e,(function(e){n(e)?t.lhs.push(e):t.rhs.push(e)})),t},time:function(e,n){var t=r.now();try{return n()}finally{console.log(e+" time: "+(r.now()-t)+"ms")}},notime:function(e,n){return n()}}},88177:e=>{e.exports="0.8.5"}}]); +//# sourceMappingURL=167.e705f8bd.js.map \ No newline at end of file diff --git a/_static/kpm/js/167.e705f8bd.js.map b/_static/kpm/js/167.e705f8bd.js.map new file mode 100644 index 00000000..6506187a --- /dev/null +++ b/_static/kpm/js/167.e705f8bd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/167.e705f8bd.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/click-outside-vue3/dist/v-click-outside.umd.js","webpack://pipeline-manager/./node_modules/cytoscape-cola/cytoscape-cola.js","webpack://pipeline-manager/./node_modules/cytoscape-dagre/cytoscape-dagre.js","webpack://pipeline-manager/./node_modules/dagre/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/acyclic.js","webpack://pipeline-manager/./node_modules/dagre/lib/add-border-segments.js","webpack://pipeline-manager/./node_modules/dagre/lib/coordinate-system.js","webpack://pipeline-manager/./node_modules/dagre/lib/data/list.js","webpack://pipeline-manager/./node_modules/dagre/lib/debug.js","webpack://pipeline-manager/./node_modules/dagre/lib/graphlib.js","webpack://pipeline-manager/./node_modules/dagre/lib/greedy-fas.js","webpack://pipeline-manager/./node_modules/dagre/lib/layout.js","webpack://pipeline-manager/./node_modules/dagre/lib/lodash.js","webpack://pipeline-manager/./node_modules/dagre/lib/nesting-graph.js","webpack://pipeline-manager/./node_modules/dagre/lib/normalize.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/barycenter.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/cross-count.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/init-order.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/sort.js","webpack://pipeline-manager/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://pipeline-manager/./node_modules/dagre/lib/position/bk.js","webpack://pipeline-manager/./node_modules/dagre/lib/position/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/network-simplex.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/util.js","webpack://pipeline-manager/./node_modules/dagre/lib/util.js","webpack://pipeline-manager/./node_modules/dagre/lib/version.js"],"sourcesContent":["!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e||self)[\"v-click-outside\"]=n()}(this,function(){var e=\"__v-click-outside\",n=\"undefined\"!=typeof window,t=\"undefined\"!=typeof navigator,r=n&&(\"ontouchstart\"in window||t&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(n,t){var a=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||r,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),o=a.handler,d=a.middleware,c=a.detectIframe,u=a.capture;if(a.isActive){if(n[e]=a.events.map(function(e){return{event:e,srcTarget:document.documentElement,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:a})}({el:n,event:e,handler:o,middleware:d})},capture:u}}),c){var l={event:\"blur\",srcTarget:window,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:a})},0)}({el:n,event:e,handler:o,middleware:d})},capture:u};n[e]=[].concat(n[e],[l])}n[e].forEach(function(t){var r=t.event,i=t.srcTarget,a=t.handler;return setTimeout(function(){n[e]&&i.addEventListener(r,a,u)},0)})}},o=function(n){(n[e]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)}),delete n[e]},d=n?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(o(e),a(e,{value:t}))},unmounted:o}:{};return{install:function(e){e.directive(\"click-outside\",d)},directive:d}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"webcola\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"webcola\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCola\"] = factory(require(\"webcola\"));\n\telse\n\t\troot[\"cytoscapeCola\"] = factory(root[\"webcola\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar assign = __webpack_require__(1);\nvar defaults = __webpack_require__(2);\nvar cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null);\nvar raf = __webpack_require__(4);\nvar isString = function isString(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof('');\n};\nvar isNumber = function isNumber(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0);\n};\nvar isObject = function isObject(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({});\n};\nvar isFunction = function isFunction(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {});\n};\nvar nop = function nop() {};\n\nvar getOptVal = function getOptVal(val, ele) {\n if (isFunction(val)) {\n var fn = val;\n return fn.apply(ele, [ele]);\n } else {\n return val;\n }\n};\n\n// constructor\n// options : object containing layout options\nfunction ColaLayout(options) {\n this.options = assign({}, defaults, options);\n}\n\n// runs the layout\nColaLayout.prototype.run = function () {\n var layout = this;\n var options = this.options;\n\n layout.manuallyStopped = false;\n\n var cy = options.cy; // cy is automatically populated for us in the constructor\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n var ready = false;\n\n var isParent = function isParent(ele) {\n return ele.isParent();\n };\n\n var parentNodes = nodes.filter(isParent);\n\n var nonparentNodes = nodes.subtract(parentNodes);\n\n var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() };\n if (bb.x2 === undefined) {\n bb.x2 = bb.x1 + bb.w;\n }\n if (bb.w === undefined) {\n bb.w = bb.x2 - bb.x1;\n }\n if (bb.y2 === undefined) {\n bb.y2 = bb.y1 + bb.h;\n }\n if (bb.h === undefined) {\n bb.h = bb.y2 - bb.y1;\n }\n\n var updateNodePositions = function updateNodePositions() {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var dimensions = node.layoutDimensions(options);\n var scratch = node.scratch('cola');\n\n // update node dims\n if (!scratch.updatedDims) {\n var padding = getOptVal(options.nodeSpacing, node);\n\n scratch.width = dimensions.w + 2 * padding;\n scratch.height = dimensions.h + 2 * padding;\n }\n }\n\n nodes.positions(function (node) {\n var scratch = node.scratch().cola;\n var retPos = void 0;\n\n if (!node.grabbed() && nonparentNodes.contains(node)) {\n retPos = {\n x: bb.x1 + scratch.x,\n y: bb.y1 + scratch.y\n };\n\n if (!isNumber(retPos.x) || !isNumber(retPos.y)) {\n retPos = undefined;\n }\n }\n\n return retPos;\n });\n\n nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878\n\n if (!ready) {\n onReady();\n ready = true;\n }\n\n if (options.fit) {\n cy.fit(options.padding);\n }\n };\n\n var onDone = function onDone() {\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.grabify();\n }\n\n cy.off('destroy', destroyHandler);\n\n nodes.off('grab free position', grabHandler);\n nodes.off('lock unlock', lockHandler);\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n layout.one('layoutstop', options.stop);\n layout.trigger({ type: 'layoutstop', layout: layout });\n };\n\n var onReady = function onReady() {\n // trigger layoutready when each node has had its position set at least once\n layout.one('layoutready', options.ready);\n layout.trigger({ type: 'layoutready', layout: layout });\n };\n\n var ticksPerFrame = options.refresh;\n\n if (options.refresh < 0) {\n ticksPerFrame = 1;\n } else {\n ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1\n }\n\n var adaptor = layout.adaptor = cola.adaptor({\n trigger: function trigger(e) {\n // on sim event\n var TICK = cola.EventType ? cola.EventType.tick : null;\n var END = cola.EventType ? cola.EventType.end : null;\n\n switch (e.type) {\n case 'tick':\n case TICK:\n if (options.animate) {\n updateNodePositions();\n }\n break;\n\n case 'end':\n case END:\n updateNodePositions();\n if (!options.infinite) {\n onDone();\n }\n break;\n }\n },\n\n kick: function kick() {\n // kick off the simulation\n //let skip = 0;\n\n var firstTick = true;\n\n var inftick = function inftick() {\n if (layout.manuallyStopped) {\n onDone();\n\n return true;\n }\n\n var ret = adaptor.tick();\n\n if (!options.infinite && !firstTick) {\n adaptor.convergenceThreshold(options.convergenceThreshold);\n }\n\n firstTick = false;\n\n if (ret && options.infinite) {\n // resume layout if done\n adaptor.resume(); // resume => new kick\n }\n\n return ret; // allow regular finish b/c of new kick\n };\n\n var multitick = function multitick() {\n // multiple ticks in a row\n var ret = void 0;\n\n for (var i = 0; i < ticksPerFrame && !ret; i++) {\n ret = ret || inftick(); // pick up true ret vals => sim done\n }\n\n return ret;\n };\n\n if (options.animate) {\n var frame = function frame() {\n if (multitick()) {\n return;\n }\n\n raf(frame);\n };\n\n raf(frame);\n } else {\n while (!inftick()) {\n // keep going...\n }\n }\n },\n\n on: nop, // dummy; not needed\n\n drag: nop // not needed for our case\n });\n layout.adaptor = adaptor;\n\n // if set no grabbing during layout\n var grabbableNodes = nodes.filter(':grabbable');\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.ungrabify();\n }\n\n var destroyHandler = void 0;\n cy.one('destroy', destroyHandler = function destroyHandler() {\n layout.stop();\n });\n\n // handle node dragging\n var grabHandler = void 0;\n nodes.on('grab free position', grabHandler = function grabHandler(e) {\n var node = this;\n var scrCola = node.scratch().cola;\n var pos = node.position();\n var nodeIsTarget = e.cyTarget === node || e.target === node;\n\n if (!nodeIsTarget) {\n return;\n }\n\n switch (e.type) {\n case 'grab':\n adaptor.dragstart(scrCola);\n break;\n case 'free':\n adaptor.dragend(scrCola);\n break;\n case 'position':\n // only update when different (i.e. manual .position() call or drag) so we don't loop needlessly\n if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) {\n scrCola.px = pos.x - bb.x1;\n scrCola.py = pos.y - bb.y1;\n }\n break;\n }\n });\n\n var lockHandler = void 0;\n nodes.on('lock unlock', lockHandler = function lockHandler() {\n var node = this;\n var scrCola = node.scratch().cola;\n\n scrCola.fixed = node.locked();\n\n if (node.locked()) {\n adaptor.dragstart(scrCola);\n } else {\n adaptor.dragend(scrCola);\n }\n });\n\n // add nodes to cola\n adaptor.nodes(nonparentNodes.map(function (node, i) {\n var padding = getOptVal(options.nodeSpacing, node);\n var pos = node.position();\n var dimensions = node.layoutDimensions(options);\n\n var struct = node.scratch().cola = {\n x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x,\n y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y,\n width: dimensions.w + 2 * padding,\n height: dimensions.h + 2 * padding,\n index: i,\n fixed: node.locked()\n };\n\n return struct;\n }));\n\n // the constraints to be added on nodes\n var constraints = [];\n\n if (options.alignment) {\n // then set alignment constraints\n\n if (options.alignment.vertical) {\n var verticalAlignments = options.alignment.vertical;\n verticalAlignments.forEach(function (alignment) {\n var offsetsX = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsX.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'x',\n offsets: offsetsX\n });\n });\n }\n\n if (options.alignment.horizontal) {\n var horizontalAlignments = options.alignment.horizontal;\n horizontalAlignments.forEach(function (alignment) {\n var offsetsY = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsY.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'y',\n offsets: offsetsY\n });\n });\n }\n }\n\n // if gapInequalities variable is set add each inequality constraint to list of constraints\n if (options.gapInequalities) {\n options.gapInequalities.forEach(function (inequality) {\n\n // for the constraints to be passed to cola layout adaptor use indices of nodes,\n // not the nodes themselves\n var leftIndex = inequality.left.scratch().cola.index;\n var rightIndex = inequality.right.scratch().cola.index;\n\n constraints.push({\n axis: inequality.axis,\n left: leftIndex,\n right: rightIndex,\n gap: inequality.gap,\n equality: inequality.equality\n });\n });\n }\n\n // add constraints if any\n if (constraints.length > 0) {\n adaptor.constraints(constraints);\n }\n\n // add compound nodes to cola\n adaptor.groups(parentNodes.map(function (node, i) {\n // add basic group incl leaf nodes\n var optPadding = getOptVal(options.nodeSpacing, node);\n var getPadding = function getPadding(d) {\n return parseFloat(node.style('padding-' + d));\n };\n\n var pleft = getPadding('left') + optPadding;\n var pright = getPadding('right') + optPadding;\n var ptop = getPadding('top') + optPadding;\n var pbottom = getPadding('bottom') + optPadding;\n\n node.scratch().cola = {\n index: i,\n\n padding: Math.max(pleft, pright, ptop, pbottom),\n\n // leaves should only contain direct descendants (children),\n // not the leaves of nested compound nodes or any nodes that are compounds themselves\n leaves: node.children().intersection(nonparentNodes).map(function (child) {\n return child[0].scratch().cola.index;\n }),\n\n fixed: node.locked()\n };\n\n return node;\n }).map(function (node) {\n // add subgroups\n node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) {\n return child.scratch().cola.index;\n });\n\n return node.scratch().cola;\n }));\n\n // get the edge length setting mechanism\n var length = void 0;\n var lengthFnName = void 0;\n if (options.edgeLength != null) {\n length = options.edgeLength;\n lengthFnName = 'linkDistance';\n } else if (options.edgeSymDiffLength != null) {\n length = options.edgeSymDiffLength;\n lengthFnName = 'symmetricDiffLinkLengths';\n } else if (options.edgeJaccardLength != null) {\n length = options.edgeJaccardLength;\n lengthFnName = 'jaccardLinkLengths';\n } else {\n length = 100;\n lengthFnName = 'linkDistance';\n }\n\n var lengthGetter = function lengthGetter(link) {\n return link.calcLength;\n };\n\n // add the edges to cola\n adaptor.links(edges.stdFilter(function (edge) {\n return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target());\n }).map(function (edge) {\n var c = edge.scratch().cola = {\n source: edge.source()[0].scratch().cola.index,\n target: edge.target()[0].scratch().cola.index\n };\n\n if (length != null) {\n c.calcLength = getOptVal(length, edge);\n }\n\n return c;\n }));\n\n adaptor.size([bb.w, bb.h]);\n\n if (length != null) {\n adaptor[lengthFnName](lengthGetter);\n }\n\n // set the flow of cola\n if (options.flow) {\n var flow = void 0;\n var defAxis = 'y';\n var defMinSep = 50;\n\n if (isString(options.flow)) {\n flow = {\n axis: options.flow,\n minSeparation: defMinSep\n };\n } else if (isNumber(options.flow)) {\n flow = {\n axis: defAxis,\n minSeparation: options.flow\n };\n } else if (isObject(options.flow)) {\n flow = options.flow;\n\n flow.axis = flow.axis || defAxis;\n flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep;\n } else {\n // e.g. options.flow: true\n flow = {\n axis: defAxis,\n minSeparation: defMinSep\n };\n }\n\n adaptor.flowLayout(flow.axis, flow.minSeparation);\n }\n\n layout.trigger({ type: 'layoutstart', layout: layout });\n\n adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0\n undefined, // keepRunning = true\n options.centerGraph);\n\n if (!options.infinite) {\n setTimeout(function () {\n if (!layout.manuallyStopped) {\n adaptor.stop();\n }\n }, options.maxSimulationTime);\n }\n\n return this; // chaining\n};\n\n// called on continuous layouts to stop them before they finish\nColaLayout.prototype.stop = function () {\n if (this.adaptor) {\n this.manuallyStopped = true;\n this.adaptor.stop();\n }\n\n return this; // chaining\n};\n\nmodule.exports = ColaLayout;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.filter(function (src) {\n return src != null;\n }).forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// default layout options\nvar defaults = {\n animate: true, // whether to show the layout as it's running\n refresh: 1, // number of ticks per frame; higher is faster but more jerky\n maxSimulationTime: 4000, // max length in ms to run the layout\n ungrabifyWhileSimulating: false, // so you can't drag nodes during layout\n fit: true, // on every layout reposition of nodes, fit the viewport\n padding: 30, // padding around the simulation\n boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node\n\n // layout event callbacks\n ready: function ready() {}, // on layoutready\n stop: function stop() {}, // on layoutstop\n\n // positioning options\n randomize: false, // use random node positions at beginning of layout\n avoidOverlap: true, // if true, prevents overlap of node bounding boxes\n handleDisconnected: true, // if true, avoids disconnected components from overlapping\n convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops\n nodeSpacing: function nodeSpacing(node) {\n return 10;\n }, // extra spacing around nodes\n flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 }\n alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } }\n gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{\"axis\":\"y\", \"left\":node1, \"right\":node2, \"gap\":25}]\n centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position)\n\n\n // different methods of specifying edge length\n // each can be a constant numerical value or a function like `function( edge ){ return 2; }`\n edgeLength: undefined, // sets edge length directly in simulation\n edgeSymDiffLength: undefined, // symmetric diff edge length in simulation\n edgeJaccardLength: undefined, // jaccard edge length in simulation\n\n // iterations of cola algorithm; uses default values on undefined\n unconstrIter: undefined, // unconstrained initial layout iterations\n userConstIter: undefined, // initial layout iterations with user-specified constraints\n allConstIter: undefined, // initial layout iterations with all constraints including non-overlap\n\n // infinite layout options\n infinite: false // overrides all other options for a forces-all-the-time mode\n};\n\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar impl = __webpack_require__(0);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'cola', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar raf = void 0;\n\nif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== ( true ? \"undefined\" : _typeof(undefined))) {\n raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {\n return setTimeout(fn, 16);\n };\n} else {\n // if not available, all you get is immediate calls\n raf = function raf(cb) {\n cb();\n };\n}\n\nmodule.exports = raf;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"dagre\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"dagre\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeDagre\"] = factory(require(\"dagre\"));\n\telse\n\t\troot[\"cytoscapeDagre\"] = factory(root[\"dagre\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__4__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar impl = __webpack_require__(1); // registers the extension on a cytoscape lib ref\n\n\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n\n cytoscape('layout', 'dagre', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isFunction = function isFunction(o) {\n return typeof o === 'function';\n};\n\nvar defaults = __webpack_require__(2);\n\nvar assign = __webpack_require__(3);\n\nvar dagre = __webpack_require__(4); // constructor\n// options : object containing layout options\n\n\nfunction DagreLayout(options) {\n this.options = assign({}, defaults, options);\n} // runs the layout\n\n\nDagreLayout.prototype.run = function () {\n var options = this.options;\n var layout = this;\n var cy = options.cy; // cy is automatically populated for us in the constructor\n\n var eles = options.eles;\n\n var getVal = function getVal(ele, val) {\n return isFunction(val) ? val.apply(ele, [ele]) : val;\n };\n\n var bb = options.boundingBox || {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n };\n\n if (bb.x2 === undefined) {\n bb.x2 = bb.x1 + bb.w;\n }\n\n if (bb.w === undefined) {\n bb.w = bb.x2 - bb.x1;\n }\n\n if (bb.y2 === undefined) {\n bb.y2 = bb.y1 + bb.h;\n }\n\n if (bb.h === undefined) {\n bb.h = bb.y2 - bb.y1;\n }\n\n var g = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true\n });\n var gObj = {};\n\n var setGObj = function setGObj(name, val) {\n if (val != null) {\n gObj[name] = val;\n }\n };\n\n setGObj('nodesep', options.nodeSep);\n setGObj('edgesep', options.edgeSep);\n setGObj('ranksep', options.rankSep);\n setGObj('rankdir', options.rankDir);\n setGObj('align', options.align);\n setGObj('ranker', options.ranker);\n setGObj('acyclicer', options.acyclicer);\n g.setGraph(gObj);\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n g.setDefaultNodeLabel(function () {\n return {};\n }); // add nodes to dagre\n\n var nodes = eles.nodes();\n\n if (isFunction(options.sort)) {\n nodes = nodes.sort(options.sort);\n }\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nbb = node.layoutDimensions(options);\n g.setNode(node.id(), {\n width: nbb.w,\n height: nbb.h,\n name: node.id()\n }); // console.log( g.node(node.id()) );\n } // set compound parents\n\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n\n if (_node.isChild()) {\n g.setParent(_node.id(), _node.parent().id());\n }\n } // add edges to dagre\n\n\n var edges = eles.edges().stdFilter(function (edge) {\n return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes\n });\n\n if (isFunction(options.sort)) {\n edges = edges.sort(options.sort);\n }\n\n for (var _i2 = 0; _i2 < edges.length; _i2++) {\n var edge = edges[_i2];\n g.setEdge(edge.source().id(), edge.target().id(), {\n minlen: getVal(edge, options.minLen),\n weight: getVal(edge, options.edgeWeight),\n name: edge.id()\n }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) );\n }\n\n dagre.layout(g);\n var gNodeIds = g.nodes();\n\n for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) {\n var id = gNodeIds[_i3];\n var n = g.node(id);\n cy.getElementById(id).scratch().dagre = n;\n }\n\n var dagreBB;\n\n if (options.boundingBox) {\n dagreBB = {\n x1: Infinity,\n x2: -Infinity,\n y1: Infinity,\n y2: -Infinity\n };\n nodes.forEach(function (node) {\n var dModel = node.scratch().dagre;\n dagreBB.x1 = Math.min(dagreBB.x1, dModel.x);\n dagreBB.x2 = Math.max(dagreBB.x2, dModel.x);\n dagreBB.y1 = Math.min(dagreBB.y1, dModel.y);\n dagreBB.y2 = Math.max(dagreBB.y2, dModel.y);\n });\n dagreBB.w = dagreBB.x2 - dagreBB.x1;\n dagreBB.h = dagreBB.y2 - dagreBB.y1;\n } else {\n dagreBB = bb;\n }\n\n var constrainPos = function constrainPos(p) {\n if (options.boundingBox) {\n var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w;\n var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h;\n return {\n x: bb.x1 + xPct * bb.w,\n y: bb.y1 + yPct * bb.h\n };\n } else {\n return p;\n }\n };\n\n nodes.layoutPositions(layout, options, function (ele) {\n ele = _typeof(ele) === \"object\" ? ele : this;\n var dModel = ele.scratch().dagre;\n return constrainPos({\n x: dModel.x,\n y: dModel.y\n });\n });\n return this; // chaining\n};\n\nmodule.exports = DagreLayout;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nvar defaults = {\n // dagre algo options, uses default value on undefined\n nodeSep: undefined,\n // the separation between adjacent nodes in the same rank\n edgeSep: undefined,\n // the separation between adjacent edges in the same rank\n rankSep: undefined,\n // the separation between adjacent nodes in the same rank\n rankDir: undefined,\n // 'TB' for top to bottom flow, 'LR' for left to right,\n align: undefined,\n // alignment for rank nodes. Can be 'UL', 'UR', 'DL', or 'DR', where U = up, D = down, L = left, and R = right\n acyclicer: undefined,\n // If set to 'greedy', uses a greedy heuristic for finding a feedback arc set for a graph.\n // A feedback arc set is a set of edges that can be removed to make a graph acyclic.\n ranker: undefined,\n // Type of algorithm to assigns a rank to each node in the input graph.\n // Possible values: network-simplex, tight-tree or longest-path\n minLen: function minLen(edge) {\n return 1;\n },\n // number of ranks to keep between the source and target of the edge\n edgeWeight: function edgeWeight(edge) {\n return 1;\n },\n // higher weight edges are generally made shorter and straighter than lower weight edges\n // general layout options\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // fit padding\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n nodeDimensionsIncludeLabels: false,\n // whether labels should be included in determining the space used by a node\n animate: false,\n // whether to transition the node positions\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n transform: function transform(node, pos) {\n return pos;\n },\n // a function that applies a transform to the final node position\n ready: function ready() {},\n // on layoutready\n sort: undefined,\n // a sorting function to order the nodes and edges; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n // because cytoscape dagre creates a directed graph, and directed graphs use the node order as a tie breaker when\n // defining the topology of a graph, this sort function can help ensure the correct order of the nodes/edges.\n // this feature is most useful when adding and removing the same nodes and edges multiple times in a graph.\n stop: function stop() {} // on layoutstop\n\n};\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// Simple, internal Object.assign() polyfill for options objects etc.\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n return tgt;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__4__;\n\n/***/ })\n/******/ ]);\n});","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n"],"names":["e","n","t","r","i","a","o","d","module","exports","window","navigator","msMaxTouchPoints","event","handler","middleware","Error","events","isActive","detectIframe","capture","Boolean","value","c","u","map","srcTarget","document","documentElement","el","path","composedPath","indexOf","contains","target","l","setTimeout","activeElement","tagName","concat","forEach","addEventListener","removeEventListener","beforeMount","updated","oldValue","JSON","stringify","unmounted","install","directive","factory","__WEBPACK_EXTERNAL_MODULE_5__","modules","installedModules","moduleId","call","m","name","getter","Object","defineProperty","configurable","enumerable","get","__esModule","object","property","prototype","hasOwnProperty","p","s","_typeof","Symbol","iterator","obj","constructor","assign","defaults","cola","raf","isNumber","nop","getOptVal","val","ele","apply","ColaLayout","options","this","run","layout","manuallyStopped","cy","eles","nodes","edges","ready","parentNodes","filter","isParent","nonparentNodes","subtract","bb","boundingBox","x1","y1","w","width","h","height","undefined","x2","y2","updateNodePositions","length","node","dimensions","layoutDimensions","scratch","updatedDims","padding","nodeSpacing","positions","retPos","grabbed","x","y","updateCompoundBounds","onReady","fit","onDone","ungrabifyWhileSimulating","grabbableNodes","grabify","off","destroyHandler","grabHandler","lockHandler","one","stop","trigger","type","ticksPerFrame","refresh","Math","max","adaptor","TICK","EventType","tick","END","end","animate","infinite","kick","firstTick","inftick","ret","convergenceThreshold","resume","frame","multitick","on","drag","ungrabify","scrCola","pos","position","cyTarget","dragstart","dragend","px","py","fixed","locked","randomize","round","random","index","constraints","alignment","vertical","offsetsX","nodeData","push","offset","axis","offsets","horizontal","offsetsY","gapInequalities","inequality","leftIndex","left","rightIndex","right","gap","equality","groups","optPadding","getPadding","parseFloat","style","pleft","pright","ptop","pbottom","leaves","children","intersection","child","lengthFnName","edgeLength","edgeSymDiffLength","edgeJaccardLength","links","stdFilter","edge","source","calcLength","size","link","flow","minSeparation","isObject","flowLayout","avoidOverlaps","avoidOverlap","handleDisconnected","start","unconstrIter","userConstIter","allConstIter","centerGraph","maxSimulationTime","__webpack_require__","bind","tgt","_len","arguments","srcs","Array","_key","src","keys","k","nodeDimensionsIncludeLabels","impl","register","cytoscape","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","fn","cb","__WEBPACK_EXTERNAL_MODULE__4__","toStringTag","mode","ns","create","key","isFunction","dagre","DagreLayout","getVal","g","graphlib","Graph","multigraph","compound","gObj","setGObj","nodeSep","edgeSep","rankSep","rankDir","align","ranker","acyclicer","setGraph","setDefaultEdgeLabel","setDefaultNodeLabel","sort","nbb","setNode","id","_i","_node","isChild","setParent","parent","_i2","setEdge","minlen","minLen","weight","edgeWeight","dagreBB","gNodeIds","_i3","getElementById","Infinity","dModel","min","layoutPositions","xPct","yPct","constrainPos","spacingFactor","animateFilter","animationDuration","animationEasing","transform","debug","util","time","notime","version","_","greedyFAS","fas","graph","weightFn","stack","visited","dfs","v","has","outEdges","dfsFAS","label","removeEdge","forwardName","reversed","uniqueId","undo","addBorderNode","prop","prefix","sg","sgNode","rank","borderType","prev","curr","addDummyNode","borderLeft","borderRight","minRank","maxRank","swapWidthHeight","swapWidthHeightOne","attrs","reverseYOne","swapXYOne","adjust","rankdir","toLowerCase","points","reverseY","swapXY","List","sentinel","_next","_prev","_sentinel","unlink","entry","filterOutLinks","dequeue","enqueue","toString","strs","join","debugOrdering","layerMatrix","buildLayerMatrix","layer","layerV","reduce","nodeCount","state","fasGraph","maxIn","maxOut","out","prevWeight","buckets","range","zeroIdx","assignBucket","buildState","DEFAULT_WEIGHT_FN","results","sources","sinks","removeNode","doGreedyFAS","flatten","constant","collectPredecessors","inEdges","uEntry","wEntry","acyclic","normalize","normalizeRanks","parentDummyChains","removeEmptyRanks","nestingGraph","addBorderSegments","coordinateSystem","order","opts","debugTiming","layoutGraph","inputGraph","canonicalize","merge","graphDefaults","selectNumberAttrs","graphNumAttrs","pick","graphAttrs","nodeNumAttrs","nodeDefaults","edgeDefaults","edgeNumAttrs","edgeAttrs","buildLayoutGraph","ranksep","labelpos","labeloffset","makeSpaceForEdgeLabels","selfEdges","removeSelfEdges","asNonCompoundGraph","injectEdgeLabelProxies","cleanup","borderTop","borderBottom","assignRankMinMax","dummy","labelRank","removeEdgeLabelProxies","layers","orderShift","selfEdge","insertSelfEdges","selfNode","dx","dy","positionSelfEdges","b","last","abs","removeBorderNodes","fixupEdgeLabelCoords","minX","Number","POSITIVE_INFINITY","maxX","minY","maxY","graphLabel","marginX","marginx","marginY","marginy","getExtremes","translateGraph","p1","p2","nodeV","nodeW","unshift","intersectRect","assignNodeIntersects","reverse","reversePointsForReversedEdges","runLayout","inputLabel","layoutLabel","updateInputGraph","edgesep","nodesep","mapValues","newAttrs","lodash","cloneDeep","each","find","forIn","isUndefined","minBy","now","sortBy","values","zipObject","root","depths","top","bottom","childNode","childTop","childBottom","thisWeight","nestingEdge","depth","treeDepths","nestingRoot","acc","sumWeights","nodeRankFactor","dummyChains","vRank","wRank","edgeLabel","edgeObj","normalizeEdge","origLabel","successors","cg","vs","rootPrev","prevChild","movable","inV","result","nodeU","sum","barycenter","relationship","hasNode","createRootNode","twoLayerCrossCount","northLayer","southLayer","southPos","southEntries","firstIndex","treeSize","tree","cc","weightSum","layering","initOrder","crossCount","sortSubgraph","buildLayerGraph","addSubgraphConstraints","buildLayerGraphs","ranks","sweepLayerGraphs","layerGraphs","biasRight","lg","sorted","assignOrder","downLayerGraphs","upLayerGraphs","best","bestCC","lastBest","simpleNodes","orderedVs","entries","mappedEntries","tmp","indegree","entryV","entryW","sourceSet","handleIn","vEntry","merged","handleOut","pop","doResolveConflicts","resolveConflicts","bl","br","subgraphs","barycenters","subgraphResult","other","expandSubgraphs","predecessors","blPred","brPred","consumeUnsortable","unsortable","bias","parts","partition","sortable","lhs","rhs","vsIndex","postorderNums","lim","low","postorder","pathData","lca","vPath","wPath","findPath","pathIdx","pathV","ascending","findType1Conflicts","conflicts","prevLayer","k0","scanPos","prevLayerLength","lastNode","findOtherInnerSegmentNode","k1","slice","scanNode","uLabel","uPos","addConflict","findType2Conflicts","scan","south","southEnd","prevNorthBorder","nextNorthBorder","uNode","north","nextNorthPos","prevNorthPos","southLookahead","conflictsV","hasConflict","verticalAlignment","neighborFn","prevIdx","ws","mp","floor","il","ceil","horizontalCompaction","reverseSep","xs","blockG","blockGraph","sepFn","delta","vLabel","wLabel","sep","vRoot","uRoot","prevMax","buildBlockGraph","iterate","setXsFunc","nextNodesFunc","elem","findSmallestWidthAlignment","xss","NEGATIVE_INFINITY","halfWidth","alignCoordinates","alignTo","alignToVals","alignToMin","alignToMax","vert","horiz","xsVals","balance","ul","ignore","positionX","adjustedLayering","inner","smallestWidth","prevY","maxHeight","positionY","slack","tightTree","nodeEdges","edgeV","findMinSlackEdge","shiftRanks","directed","longestPath","feasibleTree","networkSimplex","networkSimplexRanker","tightTreeRanker","longestPathRanker","initRank","preorder","simplify","initLowLimValues","initCutValues","leaveEdge","exchangeEdges","enterEdge","cutvalue","calcCutValue","assignCutValue","childIsTail","graphEdge","cutValue","isOutEdge","pointsToHead","otherWeight","hasEdge","otherCutValue","dfsAssignLowLim","nextLim","neighbors","tailLabel","flip","candidates","isDescendant","f","flipped","updateRanks","rootLabel","simplified","simpleLabel","isMultigraph","successorWeights","weightMap","sucs","predecessorWeights","preds","rect","point","sx","sy","collection","console","log"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/19.7c5a1bec.js b/_static/kpm/js/19.7c5a1bec.js new file mode 100644 index 00000000..3e96aa43 --- /dev/null +++ b/_static/kpm/js/19.7c5a1bec.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[19],{4019:(t,r,n)=>{function e(t){for(var n in t)r.hasOwnProperty(n)||(r[n]=t[n])}Object.defineProperty(r,"__esModule",{value:!0}),e(n(60089)),e(n(22845)),e(n(7069)),e(n(96085)),e(n(67598)),e(n(77384)),e(n(37426)),e(n(96749)),e(n(69427)),e(n(88793)),e(n(7421)),e(n(81138)),e(n(30031)),e(n(32867)),e(n(74926)),e(n(7565))},60089:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(r){var n=t.call(this)||this,e=r;return e.trigger&&(n.trigger=e.trigger),e.kick&&(n.kick=e.kick),e.drag&&(n.drag=e.drag),e.on&&(n.on=e.on),n.dragstart=n.dragStart=o.Layout.dragStart,n.dragend=n.dragEnd=o.Layout.dragEnd,n}return i(r,t),r.prototype.trigger=function(t){},r.prototype.kick=function(){},r.prototype.drag=function(){},r.prototype.on=function(t,r){return this},r}(o.Layout);r.LayoutAdaptor=s,r.adaptor=function(t){return new s(t)}},7565:(t,r,n)=>{Object.defineProperty(r,"__esModule",{value:!0});var e=n(37426),i=n(67598);r.gridify=function(t,r,n,e){return t.cola.start(0,0,0,10,!1),function(t,r,n,e){t.forEach((function(t){t.routerNode={name:t.name,bounds:t.bounds.inflate(-n)}})),r.forEach((function(r){r.routerNode={bounds:r.bounds.inflate(-e),children:(void 0!==r.groups?r.groups.map((function(r){return t.length+r.id})):[]).concat(void 0!==r.leaves?r.leaves.map((function(t){return t.index})):[])}}));var o=t.concat(r).map((function(t,r){return t.routerNode.id=r,t.routerNode}));return new i.GridRouter(o,{getChildren:function(t){return t.children},getBounds:function(t){return t.bounds}},n-e)}(t.cola.nodes(),t.cola.groups(),n,e).routeEdges(t.powerGraph.powerEdges,r,(function(t){return t.source.routerNode.id}),(function(t){return t.target.routerNode.id}))},r.powerGraphGridLayout=function(t,r,n){var i;t.nodes.forEach((function(t,r){return t.index=r})),(new e.Layout).avoidOverlaps(!1).nodes(t.nodes).links(t.links).powerGraphGroups((function(t){(i=t).groups.forEach((function(t){return t.padding=n}))}));var o=t.nodes.length,s=[],a=t.nodes.slice(0);return a.forEach((function(t,r){return t.index=r})),i.groups.forEach((function(t){var r=t.index=t.id+o;a.push(t),void 0!==t.leaves&&t.leaves.forEach((function(t){return s.push({source:r,target:t.index})})),void 0!==t.groups&&t.groups.forEach((function(t){return s.push({source:r,target:t.id+o})}))})),i.powerEdges.forEach((function(t){s.push({source:t.source.index,target:t.target.index})})),(new e.Layout).size(r).nodes(a).links(s).avoidOverlaps(!1).linkDistance(30).symmetricDiffLinkLengths(5).convergenceThreshold(1e-4).start(100,0,0,0,!1),{cola:(new e.Layout).convergenceThreshold(.001).size(r).avoidOverlaps(!0).nodes(t.nodes).links(t.links).groupCompactness(1e-4).linkDistance(30).symmetricDiffLinkLengths(5).powerGraphGroups((function(t){(i=t).groups.forEach((function(t){t.padding=n}))})).start(50,0,100,0,!1),powerGraph:i}}},22845:(t,r,n)=>{Object.defineProperty(r,"__esModule",{value:!0});var e=n(11509),i=n(11374);r.d3adaptor=function(t){return!t||function(t){return t.version&&null!==t.version.match(/^3\./)}(t)?new e.D3StyleLayoutAdaptor:new i.D3StyleLayoutAdaptor(t)}},11509:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(){var r=t.call(this)||this;r.event=d3.dispatch(o.EventType[o.EventType.start],o.EventType[o.EventType.tick],o.EventType[o.EventType.end]);var n=r;return r.drag=function(){if(!t)var t=d3.behavior.drag().origin(o.Layout.dragOrigin).on("dragstart.d3adaptor",o.Layout.dragStart).on("drag.d3adaptor",(function(t){o.Layout.drag(t,d3.event),n.resume()})).on("dragend.d3adaptor",o.Layout.dragEnd);if(!arguments.length)return t;this.call(t)},r}return i(r,t),r.prototype.trigger=function(t){var r={type:o.EventType[t.type],alpha:t.alpha,stress:t.stress};this.event[r.type](r)},r.prototype.kick=function(){var r=this;d3.timer((function(){return t.prototype.tick.call(r)}))},r.prototype.on=function(t,r){return"string"==typeof t?this.event.on(t,r):this.event.on(o.EventType[t],r),this},r}(o.Layout);r.D3StyleLayoutAdaptor=s,r.d3adaptor=function(){return new s}},11374:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(r){var n=t.call(this)||this;n.d3Context=r,n.event=r.dispatch(o.EventType[o.EventType.start],o.EventType[o.EventType.tick],o.EventType[o.EventType.end]);var e=n;return n.drag=function(){if(!t)var t=r.drag().subject(o.Layout.dragOrigin).on("start.d3adaptor",o.Layout.dragStart).on("drag.d3adaptor",(function(t){o.Layout.drag(t,r.event),e.resume()})).on("end.d3adaptor",o.Layout.dragEnd);if(!arguments.length)return t;arguments[0].call(t)},n}return i(r,t),r.prototype.trigger=function(t){var r={type:o.EventType[t.type],alpha:t.alpha,stress:t.stress};this.event.call(r.type,r)},r.prototype.kick=function(){var r=this,n=this.d3Context.timer((function(){return t.prototype.tick.call(r)&&n.stop()}))},r.prototype.on=function(t,r){return"string"==typeof t?this.event.on(t,r):this.event.on(o.EventType[t],r),this},r}(o.Layout);r.D3StyleLayoutAdaptor=s},7069:(t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function t(){this.locks={}}return t.prototype.add=function(t,r){this.locks[t]=r},t.prototype.clear=function(){this.locks={}},t.prototype.isEmpty=function(){for(var t in this.locks)return!1;return!0},t.prototype.apply=function(t){for(var r in this.locks)t(Number(r),this.locks[r])},t}();r.Locks=n;var e=function(){function t(t,r,e){void 0===e&&(e=null),this.D=r,this.G=e,this.threshold=1e-4,this.numGridSnapNodes=0,this.snapGridSize=100,this.snapStrength=1e3,this.scaleSnapByMaxH=!1,this.random=new i,this.project=null,this.x=t,this.k=t.length;var o=this.n=t[0].length;this.H=new Array(this.k),this.g=new Array(this.k),this.Hd=new Array(this.k),this.a=new Array(this.k),this.b=new Array(this.k),this.c=new Array(this.k),this.d=new Array(this.k),this.e=new Array(this.k),this.ia=new Array(this.k),this.ib=new Array(this.k),this.xtmp=new Array(this.k),this.locks=new n,this.minD=Number.MAX_VALUE;for(var s,a=o;a--;)for(s=o;--s>a;){var u=r[a][s];u>0&&u1e-9)break;var y=this.offsetDir();for(e=0;e1&&l>d||!isFinite(d))for(e=0;e1&&(v=1);var g=d*d,k=2*v*(l-d)/(g*l),w=l*l*l,x=2*-v/(g*w);for(isFinite(k)||console.log(k),e=0;e0?E-(S+1)*_:E-(S-1)*_)&&f<=m&&(this.scaleSnapByMaxH?(this.g[e][u]+=a*A*f,this.H[e][u][u]+=a*A):(this.g[e][u]+=A*f,this.H[e][u][u]+=A))}this.locks.isEmpty()||this.locks.apply((function(n,i){for(e=0;e0;)for(var i=r;i-- >0;)n(e,i)},t.prototype.matrixApply=function(r){t.mApply(this.k,this.n,r)},t.prototype.computeNextPosition=function(t,r){var n=this;this.computeDerivatives(t);var e=this.computeStepSize(this.g);if(this.stepAndProject(t,r,this.g,e),this.project){this.matrixApply((function(e,i){return n.e[e][i]=t[e][i]-r[e][i]}));var i=this.computeStepSize(this.e);i=Math.max(.2,Math.min(i,1)),this.stepAndProject(t,r,this.e,i)}},t.prototype.run=function(t){for(var r=Number.MAX_VALUE,n=!1;!n&&t-- >0;){var e=this.rungeKutta();n=Math.abs(r/e-1)>16)/this.range},t.prototype.getNextBetween=function(t,r){return t+this.getNext()*(r-t)},t}();r.PseudoRandom=i},96085:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(30031),s=function(){};r.Point=s;var a=function(t,r,n,e){this.x1=t,this.y1=r,this.x2=n,this.y2=e};r.LineSegment=a;var u=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r}(s);function h(t,r,n){return(r.x-t.x)*(n.y-t.y)-(n.x-t.x)*(r.y-t.y)}function c(t,r,n){return h(t,r,n)>0}function p(t,r,n){return h(t,r,n)<0}function f(t,r){var n,e,i,o,s=r.length-1;if(p(t,r[1],r[0])&&!c(t,r[s-1],r[0]))return 0;for(n=0,e=s;;){if(e-n==1)return c(t,r[n],r[e])?n:e;if((o=p(t,r[(i=Math.floor((n+e)/2))+1],r[i]))&&!c(t,r[i-1],r[i]))return i;c(t,r[n+1],r[n])?o||c(t,r[n],r[i])?e=i:n=i:o&&p(t,r[n],r[i])?e=i:n=i}}function y(t,r){var n,e,i,o,s=r.length-1;if(c(t,r[s-1],r[0])&&!p(t,r[1],r[0]))return 0;for(n=0,e=s;;){if(e-n==1)return p(t,r[n],r[e])?n:e;if(o=p(t,r[(i=Math.floor((n+e)/2))+1],r[i]),c(t,r[i-1],r[i])&&!o)return i;p(t,r[n+1],r[n])?o?p(t,r[n],r[i])?e=i:n=i:e=i:o?n=i:c(t,r[n],r[i])?e=i:n=i}}function l(t,r,n,e,i,o){var s,a;a=e(t[s=n(r[0],t)],r);for(var u=!1;!u;){for(u=!0;s===t.length-1&&(s=0),!i(r[a],t[s],t[s+1]);)++s;for(;0===a&&(a=r.length-1),!o(t[s],r[a],r[a-1]);)--a,u=!1}return{t1:s,t2:a}}function d(t,r){return l(t,r,f,y,c,p)}r.PolyPoint=u,r.isLeft=h,r.ConvexHull=function(t){var r,n=t.slice(0).sort((function(t,r){return t.x!==r.x?r.x-t.x:r.y-t.y})),e=t.length,i=n[0].x;for(r=1;r=0&&n[r].x===c;r--);for(a=r+1,r=o;++r<=a;)if(!(h(n[0],n[a],n[r])>=0&&r1&&!(h(s[s.length-2],s[s.length-1],n[r])>0);)s.length-=1;0!=r&&s.push(n[r])}u!=a&&s.push(n[u]);var p=s.length;for(r=a;--r>=o;)if(!(h(n[u],n[o],n[r])>=0&&r>o)){for(;s.length>p&&!(h(s[s.length-2],s[s.length-1],n[r])>0);)s.length-=1;0!=r&&s.push(n[r])}}return s},r.clockwiseRadialSweep=function(t,r,n){r.slice(0).sort((function(r,n){return Math.atan2(r.y-t.y,r.x-t.x)-Math.atan2(n.y-t.y,n.x-t.x)})).forEach(n)},r.tangent_PolyPolyC=l,r.LRtangent_PolyPolyC=function(t,r){var n=d(r,t);return{t1:n.t2,t2:n.t1}},r.RLtangent_PolyPolyC=d,r.LLtangent_PolyPolyC=function(t,r){return l(t,r,y,y,p,p)},r.RRtangent_PolyPolyC=function(t,r){return l(t,r,f,f,c,c)};var v=function(t,r){this.t1=t,this.t2=r};r.BiTangent=v;var g=function(){};r.BiTangents=g;var k=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r}(s);r.TVGPoint=k;var w=function(t,r,n,e){this.id=t,this.polyid=r,this.polyvertid=n,this.p=e,e.vv=this};r.VisibilityVertex=w;var x=function(){function t(t,r){this.source=t,this.target=r}return t.prototype.length=function(){var t=this.source.p.x-this.target.p.x,r=this.source.p.y-this.target.p.y;return Math.sqrt(t*t+r*r)},t}();r.VisibilityEdge=x;var m=function(){function t(t,r){if(this.P=t,this.V=[],this.E=[],r)this.V=r.V.slice(0),this.E=r.E.slice(0);else{for(var n=t.length,e=0;e0&&this.E.push(new x(i[o-1].vv,a))}i.length>1&&this.E.push(new x(i[0].vv,i[i.length-1].vv))}for(e=0;e0)return!0;return!1},t}();function _(t,r){for(var n=[],e=1,i=r.length;e=0&&d>=0&&k<0&&w>=0&&x>=0&&m<0?i.ll=new v(o,s):l<=0&&d<=0&&k>0&&w<=0&&x<=0&&m>0?i.rr=new v(o,s):l<=0&&d>0&&k<=0&&w>=0&&x<0&&m>=0?i.rl=new v(o,s):l>=0&&d<0&&k>=0&&w<=0&&x>0&&m<=0&&(i.lr=new v(o,s))}return i}function P(t,r){return!t.every((function(t){return!function(t,r){for(var n=1,e=r.length;n0)return!0}return!1}}}]); +//# sourceMappingURL=19.7c5a1bec.js.map \ No newline at end of file diff --git a/_static/kpm/js/19.7c5a1bec.js.map b/_static/kpm/js/19.7c5a1bec.js.map new file mode 100644 index 00000000..31a39566 --- /dev/null +++ b/_static/kpm/js/19.7c5a1bec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/19.7c5a1bec.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/webcola/dist/index.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/batch.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3v3adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3v4adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/descent.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/geom.js"],"sourcesContent":["\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(require(\"./src/adaptor\"));\r\n__export(require(\"./src/d3adaptor\"));\r\n__export(require(\"./src/descent\"));\r\n__export(require(\"./src/geom\"));\r\n__export(require(\"./src/gridrouter\"));\r\n__export(require(\"./src/handledisconnected\"));\r\n__export(require(\"./src/layout\"));\r\n__export(require(\"./src/layout3d\"));\r\n__export(require(\"./src/linklengths\"));\r\n__export(require(\"./src/powergraph\"));\r\n__export(require(\"./src/pqueue\"));\r\n__export(require(\"./src/rbtree\"));\r\n__export(require(\"./src/rectangle\"));\r\n__export(require(\"./src/shortestpaths\"));\r\n__export(require(\"./src/vpsc\"));\r\n__export(require(\"./src/batch\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9XZWJDb2xhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTZCO0FBQzdCLHFDQUErQjtBQUMvQixtQ0FBNkI7QUFDN0IsZ0NBQTBCO0FBQzFCLHNDQUFnQztBQUNoQyw4Q0FBd0M7QUFDeEMsa0NBQTRCO0FBQzVCLG9DQUE4QjtBQUM5Qix1Q0FBaUM7QUFDakMsc0NBQWdDO0FBQ2hDLGtDQUE0QjtBQUM1QixrQ0FBNEI7QUFDNUIscUNBQStCO0FBQy9CLHlDQUFtQztBQUNuQyxnQ0FBMEI7QUFDMUIsaUNBQTJCIn0=","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar LayoutAdaptor = (function (_super) {\r\n __extends(LayoutAdaptor, _super);\r\n function LayoutAdaptor(options) {\r\n var _this = _super.call(this) || this;\r\n var self = _this;\r\n var o = options;\r\n if (o.trigger) {\r\n _this.trigger = o.trigger;\r\n }\r\n if (o.kick) {\r\n _this.kick = o.kick;\r\n }\r\n if (o.drag) {\r\n _this.drag = o.drag;\r\n }\r\n if (o.on) {\r\n _this.on = o.on;\r\n }\r\n _this.dragstart = _this.dragStart = layout_1.Layout.dragStart;\r\n _this.dragend = _this.dragEnd = layout_1.Layout.dragEnd;\r\n return _this;\r\n }\r\n LayoutAdaptor.prototype.trigger = function (e) { };\r\n ;\r\n LayoutAdaptor.prototype.kick = function () { };\r\n ;\r\n LayoutAdaptor.prototype.drag = function () { };\r\n ;\r\n LayoutAdaptor.prototype.on = function (eventType, listener) { return this; };\r\n ;\r\n return LayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.LayoutAdaptor = LayoutAdaptor;\r\nfunction adaptor(options) {\r\n return new LayoutAdaptor(options);\r\n}\r\nexports.adaptor = adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2FkYXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWlEO0FBRTdDO0lBQW1DLGlDQUFNO0lBYXJDLHVCQUFhLE9BQU87UUFBcEIsWUFDSSxpQkFBTyxTQXlCVjtRQXJCRyxJQUFJLElBQUksR0FBRyxLQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRWhCLElBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRztZQUNiLEtBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM1QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNQLEtBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsQjtRQUVELEtBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsR0FBRyxlQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLE9BQU8sR0FBRyxlQUFNLENBQUMsT0FBTyxDQUFDOztJQUNqRCxDQUFDO0lBcENELCtCQUFPLEdBQVAsVUFBUSxDQUFRLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDckIsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsMEJBQUUsR0FBRixVQUFHLFNBQTZCLEVBQUUsUUFBb0IsSUFBVyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBa0NwRixvQkFBQztBQUFELENBQUMsQUF4Q0QsQ0FBbUMsZUFBTSxHQXdDeEM7QUF4Q1ksc0NBQWE7QUE2QzFCLFNBQWdCLE9BQU8sQ0FBRSxPQUFPO0lBQzVCLE9BQU8sSUFBSSxhQUFhLENBQUUsT0FBTyxDQUFFLENBQUM7QUFDeEMsQ0FBQztBQUZELDBCQUVDIn0=","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar gridrouter_1 = require(\"./gridrouter\");\r\nfunction gridify(pgLayout, nudgeGap, margin, groupMargin) {\r\n pgLayout.cola.start(0, 0, 0, 10, false);\r\n var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin);\r\n return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; });\r\n}\r\nexports.gridify = gridify;\r\nfunction route(nodes, groups, margin, groupMargin) {\r\n nodes.forEach(function (d) {\r\n d.routerNode = {\r\n name: d.name,\r\n bounds: d.bounds.inflate(-margin)\r\n };\r\n });\r\n groups.forEach(function (d) {\r\n d.routerNode = {\r\n bounds: d.bounds.inflate(-groupMargin),\r\n children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : [])\r\n .concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : [])\r\n };\r\n });\r\n var gridRouterNodes = nodes.concat(groups).map(function (d, i) {\r\n d.routerNode.id = i;\r\n return d.routerNode;\r\n });\r\n return new gridrouter_1.GridRouter(gridRouterNodes, {\r\n getChildren: function (v) { return v.children; },\r\n getBounds: function (v) { return v.bounds; }\r\n }, margin - groupMargin);\r\n}\r\nfunction powerGraphGridLayout(graph, size, grouppadding) {\r\n var powerGraph;\r\n graph.nodes.forEach(function (v, i) { return v.index = i; });\r\n new layout_1.Layout()\r\n .avoidOverlaps(false)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; });\r\n });\r\n var n = graph.nodes.length;\r\n var edges = [];\r\n var vs = graph.nodes.slice(0);\r\n vs.forEach(function (v, i) { return v.index = i; });\r\n powerGraph.groups.forEach(function (g) {\r\n var sourceInd = g.index = g.id + n;\r\n vs.push(g);\r\n if (typeof g.leaves !== 'undefined')\r\n g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); });\r\n if (typeof g.groups !== 'undefined')\r\n g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); });\r\n });\r\n powerGraph.powerEdges.forEach(function (e) {\r\n edges.push({ source: e.source.index, target: e.target.index });\r\n });\r\n new layout_1.Layout()\r\n .size(size)\r\n .nodes(vs)\r\n .links(edges)\r\n .avoidOverlaps(false)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .convergenceThreshold(1e-4)\r\n .start(100, 0, 0, 0, false);\r\n return {\r\n cola: new layout_1.Layout()\r\n .convergenceThreshold(1e-3)\r\n .size(size)\r\n .avoidOverlaps(true)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .groupCompactness(1e-4)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) {\r\n v.padding = grouppadding;\r\n });\r\n }).start(50, 0, 100, 0, false),\r\n powerGraph: powerGraph\r\n };\r\n}\r\nexports.powerGraphGridLayout = powerGraphGridLayout;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9iYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUEyQztBQUMzQywyQ0FBdUM7QUFRdkMsU0FBZ0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxXQUFtQjtJQUNuRixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0YsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFNLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsQ0FBQyxDQUFDO0FBQ3hJLENBQUM7QUFKRCwwQkFJQztBQUVELFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBYyxFQUFFLFdBQW1CO0lBQzdELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLFVBQVUsR0FBUTtZQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDcEMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gs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","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar d3v3 = require(\"./d3v3adaptor\");\r\nvar d3v4 = require(\"./d3v4adaptor\");\r\n;\r\nfunction d3adaptor(d3Context) {\r\n if (!d3Context || isD3V3(d3Context)) {\r\n return new d3v3.D3StyleLayoutAdaptor();\r\n }\r\n return new d3v4.D3StyleLayoutAdaptor(d3Context);\r\n}\r\nexports.d3adaptor = d3adaptor;\r\nfunction isD3V3(d3Context) {\r\n var v3exp = /^3\\./;\r\n return d3Context.version && d3Context.version.match(v3exp) !== null;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDNhZGFwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvZDNhZGFwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG9DQUFxQztBQUdVLENBQUM7QUE0QmhELFNBQWdCLFNBQVMsQ0FBQyxTQUF3QztJQUM5RCxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNqQyxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDMUM7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFMRCw4QkFLQztBQUVELFNBQVMsTUFBTSxDQUFDLFNBQXVDO0lBQ25ELElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUNyQixPQUFhLFNBQVUsQ0FBQyxPQUFPLElBQVUsU0FBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3RGLENBQUMifQ==","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor() {\r\n var _this = _super.call(this) || this;\r\n _this.event = d3.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3.behavior.drag()\r\n .origin(layout_1.Layout.dragOrigin)\r\n .on(\"dragstart.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3.event);\r\n d3layout.resume();\r\n })\r\n .on(\"dragend.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n this\r\n .call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event[d3event.type](d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n d3.timer(function () { return _super.prototype.tick.call(_this); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\nfunction d3adaptor() {\r\n return new D3StyleLayoutAdaptor();\r\n}\r\nexports.d3adaptor = d3adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2M2FkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3YzYWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQSxtQ0FBa0Q7QUFHOUM7SUFBMEMsd0NBQU07SUFnQjVDO1FBQUEsWUFDSSxpQkFBTyxTQXVCVjtRQXZDRCxXQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBa0JqRyxJQUFJLFFBQVEsR0FBRyxLQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxLQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtxQkFDeEIsTUFBTSxDQUFDLGVBQU0sQ0FBQyxVQUFVLENBQUM7cUJBQ3pCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDO3FCQUMzQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBQSxDQUFDO29CQUNuQixlQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDO3FCQUNELEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFHbkMsSUFBSTtpQkFFQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFBOztJQUNMLENBQUM7SUFyQ0Qsc0NBQU8sR0FBUCxVQUFRLENBQVE7UUFDWixJQUFJLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQU0sT0FBQSxpQkFBTSxJQUFJLFlBQUUsRUFBWixDQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBZ0NELGlDQUFFLEdBQUYsVUFBRyxTQUE2QixFQUFFLFFBQW9CO1FBQ2xELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0JBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDTCwyQkFBQztBQUFELENBQUMsQUFuREQsQ0FBMEMsZUFBTSxHQW1EL0M7QUFuRFksb0RBQW9CO0FBaUVqQyxTQUFnQixTQUFTO0lBQ3JCLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFGRCw4QkFFQyJ9","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor(d3Context) {\r\n var _this = _super.call(this) || this;\r\n _this.d3Context = d3Context;\r\n _this.event = d3Context.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3Context.drag()\r\n .subject(layout_1.Layout.dragOrigin)\r\n .on(\"start.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3Context.event);\r\n d3layout.resume();\r\n })\r\n .on(\"end.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n arguments[0].call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event.call(d3event.type, d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2NGFkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3Y0YWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxtQ0FBaUQ7QUFVakQ7SUFBMEMsd0NBQU07SUFpQjVDLDhCQUFvQixTQUFvQjtRQUF4QyxZQUNJLGlCQUFPLFNBeUJWO1FBMUJtQixlQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBDLEtBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBR2pILElBQUksUUFBUSxHQUFHLEtBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQztRQUNULEtBQUksQ0FBQyxJQUFJLEdBQUc7WUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUU7cUJBQ3RCLE9BQU8sQ0FBQyxlQUFNLENBQUMsVUFBVSxDQUFDO3FCQUMxQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQztxQkFDdkMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQUEsQ0FBQztvQkFDbkIsZUFBTSxDQUFDLElBQUksQ0FBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQztxQkFDRCxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUtuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTs7SUFDTCxDQUFDO0lBekNELHNDQUFPLEdBQVAsVUFBUSxDQUFRO1FBQ1osSUFBSSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUc1RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFPLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFNLE9BQUEsaUJBQU0sSUFBSSxZQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUF4QixDQUF3QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtDRCxpQ0FBRSxHQUFGLFVBQUcsU0FBNkIsRUFBRSxRQUFvQjtRQUNsRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGtCQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDakQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBdERELENBQTBDLGVBQU0sR0FzRC9DO0FBdERZLG9EQUFvQiJ9","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Locks = (function () {\r\n function Locks() {\r\n this.locks = {};\r\n }\r\n Locks.prototype.add = function (id, x) {\r\n this.locks[id] = x;\r\n };\r\n Locks.prototype.clear = function () {\r\n this.locks = {};\r\n };\r\n Locks.prototype.isEmpty = function () {\r\n for (var l in this.locks)\r\n return false;\r\n return true;\r\n };\r\n Locks.prototype.apply = function (f) {\r\n for (var l in this.locks) {\r\n f(Number(l), this.locks[l]);\r\n }\r\n };\r\n return Locks;\r\n}());\r\nexports.Locks = Locks;\r\nvar Descent = (function () {\r\n function Descent(x, D, G) {\r\n if (G === void 0) { G = null; }\r\n this.D = D;\r\n this.G = G;\r\n this.threshold = 0.0001;\r\n this.numGridSnapNodes = 0;\r\n this.snapGridSize = 100;\r\n this.snapStrength = 1000;\r\n this.scaleSnapByMaxH = false;\r\n this.random = new PseudoRandom();\r\n this.project = null;\r\n this.x = x;\r\n this.k = x.length;\r\n var n = this.n = x[0].length;\r\n this.H = new Array(this.k);\r\n this.g = new Array(this.k);\r\n this.Hd = new Array(this.k);\r\n this.a = new Array(this.k);\r\n this.b = new Array(this.k);\r\n this.c = new Array(this.k);\r\n this.d = new Array(this.k);\r\n this.e = new Array(this.k);\r\n this.ia = new Array(this.k);\r\n this.ib = new Array(this.k);\r\n this.xtmp = new Array(this.k);\r\n this.locks = new Locks();\r\n this.minD = Number.MAX_VALUE;\r\n var i = n, j;\r\n while (i--) {\r\n j = n;\r\n while (--j > i) {\r\n var d = D[i][j];\r\n if (d > 0 && d < this.minD) {\r\n this.minD = d;\r\n }\r\n }\r\n }\r\n if (this.minD === Number.MAX_VALUE)\r\n this.minD = 1;\r\n i = this.k;\r\n while (i--) {\r\n this.g[i] = new Array(n);\r\n this.H[i] = new Array(n);\r\n j = n;\r\n while (j--) {\r\n this.H[i][j] = new Array(n);\r\n }\r\n this.Hd[i] = new Array(n);\r\n this.a[i] = new Array(n);\r\n this.b[i] = new Array(n);\r\n this.c[i] = new Array(n);\r\n this.d[i] = new Array(n);\r\n this.e[i] = new Array(n);\r\n this.ia[i] = new Array(n);\r\n this.ib[i] = new Array(n);\r\n this.xtmp[i] = new Array(n);\r\n }\r\n }\r\n Descent.createSquareMatrix = function (n, f) {\r\n var M = new Array(n);\r\n for (var i = 0; i < n; ++i) {\r\n M[i] = new Array(n);\r\n for (var j = 0; j < n; ++j) {\r\n M[i][j] = f(i, j);\r\n }\r\n }\r\n return M;\r\n };\r\n Descent.prototype.offsetDir = function () {\r\n var _this = this;\r\n var u = new Array(this.k);\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5;\r\n l += x * x;\r\n }\r\n l = Math.sqrt(l);\r\n return u.map(function (x) { return x *= _this.minD / l; });\r\n };\r\n Descent.prototype.computeDerivatives = function (x) {\r\n var _this = this;\r\n var n = this.n;\r\n if (n < 1)\r\n return;\r\n var i;\r\n var d = new Array(this.k);\r\n var d2 = new Array(this.k);\r\n var Huu = new Array(this.k);\r\n var maxH = 0;\r\n for (var u = 0; u < n; ++u) {\r\n for (i = 0; i < this.k; ++i)\r\n Huu[i] = this.g[i][u] = 0;\r\n for (var v = 0; v < n; ++v) {\r\n if (u === v)\r\n continue;\r\n var maxDisplaces = n;\r\n while (maxDisplaces--) {\r\n var sd2 = 0;\r\n for (i = 0; i < this.k; ++i) {\r\n var dx = d[i] = x[i][u] - x[i][v];\r\n sd2 += d2[i] = dx * dx;\r\n }\r\n if (sd2 > 1e-9)\r\n break;\r\n var rd = this.offsetDir();\r\n for (i = 0; i < this.k; ++i)\r\n x[i][v] += rd[i];\r\n }\r\n var l = Math.sqrt(sd2);\r\n var D = this.D[u][v];\r\n var weight = this.G != null ? this.G[u][v] : 1;\r\n if (weight > 1 && l > D || !isFinite(D)) {\r\n for (i = 0; i < this.k; ++i)\r\n this.H[i][u][v] = 0;\r\n continue;\r\n }\r\n if (weight > 1) {\r\n weight = 1;\r\n }\r\n var D2 = D * D;\r\n var gs = 2 * weight * (l - D) / (D2 * l);\r\n var l3 = l * l * l;\r\n var hs = 2 * -weight / (D2 * l3);\r\n if (!isFinite(gs))\r\n console.log(gs);\r\n for (i = 0; i < this.k; ++i) {\r\n this.g[i][u] += d[i] * gs;\r\n Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2);\r\n }\r\n }\r\n for (i = 0; i < this.k; ++i)\r\n maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]);\r\n }\r\n var r = this.snapGridSize / 2;\r\n var g = this.snapGridSize;\r\n var w = this.snapStrength;\r\n var k = w / (r * r);\r\n var numNodes = this.numGridSnapNodes;\r\n for (var u = 0; u < numNodes; ++u) {\r\n for (i = 0; i < this.k; ++i) {\r\n var xiu = this.x[i][u];\r\n var m = xiu / g;\r\n var f = m % 1;\r\n var q = m - f;\r\n var a = Math.abs(f);\r\n var dx = (a <= 0.5) ? xiu - q * g :\r\n (xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g;\r\n if (-r < dx && dx <= r) {\r\n if (this.scaleSnapByMaxH) {\r\n this.g[i][u] += maxH * k * dx;\r\n this.H[i][u][u] += maxH * k;\r\n }\r\n else {\r\n this.g[i][u] += k * dx;\r\n this.H[i][u][u] += k;\r\n }\r\n }\r\n }\r\n }\r\n if (!this.locks.isEmpty()) {\r\n this.locks.apply(function (u, p) {\r\n for (i = 0; i < _this.k; ++i) {\r\n _this.H[i][u][u] += maxH;\r\n _this.g[i][u] -= maxH * (p[i] - x[i][u]);\r\n }\r\n });\r\n }\r\n };\r\n Descent.dotProd = function (a, b) {\r\n var x = 0, i = a.length;\r\n while (i--)\r\n x += a[i] * b[i];\r\n return x;\r\n };\r\n Descent.rightMultiply = function (m, v, r) {\r\n var i = m.length;\r\n while (i--)\r\n r[i] = Descent.dotProd(m[i], v);\r\n };\r\n Descent.prototype.computeStepSize = function (d) {\r\n var numerator = 0, denominator = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n numerator += Descent.dotProd(this.g[i], d[i]);\r\n Descent.rightMultiply(this.H[i], d[i], this.Hd[i]);\r\n denominator += Descent.dotProd(d[i], this.Hd[i]);\r\n }\r\n if (denominator === 0 || !isFinite(denominator))\r\n return 0;\r\n return 1 * numerator / denominator;\r\n };\r\n Descent.prototype.reduceStress = function () {\r\n this.computeDerivatives(this.x);\r\n var alpha = this.computeStepSize(this.g);\r\n for (var i = 0; i < this.k; ++i) {\r\n this.takeDescentStep(this.x[i], this.g[i], alpha);\r\n }\r\n return this.computeStress();\r\n };\r\n Descent.copy = function (a, b) {\r\n var m = a.length, n = b[0].length;\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n b[i][j] = a[i][j];\r\n }\r\n }\r\n };\r\n Descent.prototype.stepAndProject = function (x0, r, d, stepSize) {\r\n Descent.copy(x0, r);\r\n this.takeDescentStep(r[0], d[0], stepSize);\r\n if (this.project)\r\n this.project[0](x0[0], x0[1], r[0]);\r\n this.takeDescentStep(r[1], d[1], stepSize);\r\n if (this.project)\r\n this.project[1](r[0], x0[1], r[1]);\r\n for (var i = 2; i < this.k; i++)\r\n this.takeDescentStep(r[i], d[i], stepSize);\r\n };\r\n Descent.mApply = function (m, n, f) {\r\n var i = m;\r\n while (i-- > 0) {\r\n var j = n;\r\n while (j-- > 0)\r\n f(i, j);\r\n }\r\n };\r\n Descent.prototype.matrixApply = function (f) {\r\n Descent.mApply(this.k, this.n, f);\r\n };\r\n Descent.prototype.computeNextPosition = function (x0, r) {\r\n var _this = this;\r\n this.computeDerivatives(x0);\r\n var alpha = this.computeStepSize(this.g);\r\n this.stepAndProject(x0, r, this.g, alpha);\r\n if (this.project) {\r\n this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; });\r\n var beta = this.computeStepSize(this.e);\r\n beta = Math.max(0.2, Math.min(beta, 1));\r\n this.stepAndProject(x0, r, this.e, beta);\r\n }\r\n };\r\n Descent.prototype.run = function (iterations) {\r\n var stress = Number.MAX_VALUE, converged = false;\r\n while (!converged && iterations-- > 0) {\r\n var s = this.rungeKutta();\r\n converged = Math.abs(stress / s - 1) < this.threshold;\r\n stress = s;\r\n }\r\n return stress;\r\n };\r\n Descent.prototype.rungeKutta = function () {\r\n var _this = this;\r\n this.computeNextPosition(this.x, this.a);\r\n Descent.mid(this.x, this.a, this.ia);\r\n this.computeNextPosition(this.ia, this.b);\r\n Descent.mid(this.x, this.b, this.ib);\r\n this.computeNextPosition(this.ib, this.c);\r\n this.computeNextPosition(this.c, this.d);\r\n var disp = 0;\r\n this.matrixApply(function (i, j) {\r\n var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x;\r\n disp += d * d;\r\n _this.x[i][j] = x;\r\n });\r\n return disp;\r\n };\r\n Descent.mid = function (a, b, m) {\r\n Descent.mApply(a.length, a[0].length, function (i, j) {\r\n return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0;\r\n });\r\n };\r\n Descent.prototype.takeDescentStep = function (x, d, stepSize) {\r\n for (var i = 0; i < this.n; ++i) {\r\n x[i] = x[i] - stepSize * d[i];\r\n }\r\n };\r\n Descent.prototype.computeStress = function () {\r\n var stress = 0;\r\n for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) {\r\n for (var v = u + 1, n = this.n; v < n; ++v) {\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var dx = this.x[i][u] - this.x[i][v];\r\n l += dx * dx;\r\n }\r\n l = Math.sqrt(l);\r\n var d = this.D[u][v];\r\n if (!isFinite(d))\r\n continue;\r\n var rl = d - l;\r\n var d2 = d * d;\r\n stress += rl * rl / d2;\r\n }\r\n }\r\n return stress;\r\n };\r\n Descent.zeroDistance = 1e-10;\r\n return Descent;\r\n}());\r\nexports.Descent = Descent;\r\nvar PseudoRandom = (function () {\r\n function PseudoRandom(seed) {\r\n if (seed === void 0) { seed = 1; }\r\n this.seed = seed;\r\n this.a = 214013;\r\n this.c = 2531011;\r\n this.m = 2147483648;\r\n this.range = 32767;\r\n }\r\n PseudoRandom.prototype.getNext = function () {\r\n this.seed = (this.seed * this.a + this.c) % this.m;\r\n return (this.seed >> 16) / this.range;\r\n };\r\n PseudoRandom.prototype.getNextBetween = function (min, max) {\r\n return min + this.getNext() * (max - min);\r\n };\r\n return PseudoRandom;\r\n}());\r\nexports.PseudoRandom = PseudoRandom;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2Rlc2NlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJSTtJQUFBO1FBQ0ksVUFBSyxHQUE2QixFQUFFLENBQUM7SUFvQ3pDLENBQUM7SUE3QkcsbUJBQUcsR0FBSCxVQUFJLEVBQVUsRUFBRSxDQUFXO1FBSXZCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxxQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtELHVCQUFPLEdBQVA7UUFDSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUtELHFCQUFLLEdBQUwsVUFBTSxDQUFvQztRQUN0QyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBQ0wsWUFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksc0JBQUs7QUFpRGxCO0lBNkRJLGlCQUFZLENBQWEsRUFBUyxDQUFhLEVBQVMsQ0FBbUI7UUFBbkIsa0JBQUEsRUFBQSxRQUFtQjtRQUF6QyxNQUFDLEdBQUQsQ0FBQyxDQUFZO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBa0I7UUE1RHBFLGNBQVMsR0FBVyxNQUFNLENBQUM7UUEyQzNCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3QixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixZQUFPLEdBQTBELElBQUksQ0FBQztRQVd6RSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ04sT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRWEsMEJBQWtCLEdBQWhDLFVBQWlDLENBQVMsRUFBRSxDQUFtQztRQUMzRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxF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QUFDO29CQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO2dCQUNELElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqRCxTQUFTO2lCQUNaO2dCQUNELElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDWixNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNkO2dCQUNELElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksRUFBRSxHQUFHLENBQUMs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","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar Point = (function () {\r\n function Point() {\r\n }\r\n return Point;\r\n}());\r\nexports.Point = Point;\r\nvar LineSegment = (function () {\r\n function LineSegment(x1, y1, x2, y2) {\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n return LineSegment;\r\n}());\r\nexports.LineSegment = LineSegment;\r\nvar PolyPoint = (function (_super) {\r\n __extends(PolyPoint, _super);\r\n function PolyPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return PolyPoint;\r\n}(Point));\r\nexports.PolyPoint = PolyPoint;\r\nfunction isLeft(P0, P1, P2) {\r\n return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y);\r\n}\r\nexports.isLeft = isLeft;\r\nfunction above(p, vi, vj) {\r\n return isLeft(p, vi, vj) > 0;\r\n}\r\nfunction below(p, vi, vj) {\r\n return isLeft(p, vi, vj) < 0;\r\n}\r\nfunction ConvexHull(S) {\r\n var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; });\r\n var n = S.length, i;\r\n var minmin = 0;\r\n var xmin = P[0].x;\r\n for (i = 1; i < n; ++i) {\r\n if (P[i].x !== xmin)\r\n break;\r\n }\r\n var minmax = i - 1;\r\n var H = [];\r\n H.push(P[minmin]);\r\n if (minmax === n - 1) {\r\n if (P[minmax].y !== P[minmin].y)\r\n H.push(P[minmax]);\r\n }\r\n else {\r\n var maxmin, maxmax = n - 1;\r\n var xmax = P[n - 1].x;\r\n for (i = n - 2; i >= 0; i--)\r\n if (P[i].x !== xmax)\r\n break;\r\n maxmin = i + 1;\r\n i = minmax;\r\n while (++i <= maxmin) {\r\n if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin)\r\n continue;\r\n while (H.length > 1) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n if (maxmax != maxmin)\r\n H.push(P[maxmax]);\r\n var bot = H.length;\r\n i = maxmin;\r\n while (--i >= minmax) {\r\n if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax)\r\n continue;\r\n while (H.length > bot) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n }\r\n return H;\r\n}\r\nexports.ConvexHull = ConvexHull;\r\nfunction clockwiseRadialSweep(p, P, f) {\r\n P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f);\r\n}\r\nexports.clockwiseRadialSweep = clockwiseRadialSweep;\r\nfunction nextPolyPoint(p, ps) {\r\n if (p.polyIndex === ps.length - 1)\r\n return ps[0];\r\n return ps[p.polyIndex + 1];\r\n}\r\nfunction prevPolyPoint(p, ps) {\r\n if (p.polyIndex === 0)\r\n return ps[ps.length - 1];\r\n return ps[p.polyIndex - 1];\r\n}\r\nfunction tangent_PointPolyC(P, V) {\r\n var Vclosed = V.slice(0);\r\n Vclosed.push(V[0]);\r\n return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) };\r\n}\r\nfunction Rtangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var upA, dnC;\r\n if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (above(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (dnC && !above(P, V[c - 1], V[c]))\r\n return c;\r\n upA = above(P, V[a + 1], V[a]);\r\n if (upA) {\r\n if (dnC)\r\n b = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (!dnC)\r\n a = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction Ltangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var dnA, dnC;\r\n if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (below(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (above(P, V[c - 1], V[c]) && !dnC)\r\n return c;\r\n dnA = below(P, V[a + 1], V[a]);\r\n if (dnA) {\r\n if (!dnC)\r\n b = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (dnC)\r\n a = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) {\r\n var ix1, ix2;\r\n ix1 = t1(W[0], V);\r\n ix2 = t2(V[ix1], W);\r\n var done = false;\r\n while (!done) {\r\n done = true;\r\n while (true) {\r\n if (ix1 === V.length - 1)\r\n ix1 = 0;\r\n if (cmp1(W[ix2], V[ix1], V[ix1 + 1]))\r\n break;\r\n ++ix1;\r\n }\r\n while (true) {\r\n if (ix2 === 0)\r\n ix2 = W.length - 1;\r\n if (cmp2(V[ix1], W[ix2], W[ix2 - 1]))\r\n break;\r\n --ix2;\r\n done = false;\r\n }\r\n }\r\n return { t1: ix1, t2: ix2 };\r\n}\r\nexports.tangent_PolyPolyC = tangent_PolyPolyC;\r\nfunction LRtangent_PolyPolyC(V, W) {\r\n var rl = RLtangent_PolyPolyC(W, V);\r\n return { t1: rl.t2, t2: rl.t1 };\r\n}\r\nexports.LRtangent_PolyPolyC = LRtangent_PolyPolyC;\r\nfunction RLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below);\r\n}\r\nexports.RLtangent_PolyPolyC = RLtangent_PolyPolyC;\r\nfunction LLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below);\r\n}\r\nexports.LLtangent_PolyPolyC = LLtangent_PolyPolyC;\r\nfunction RRtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above);\r\n}\r\nexports.RRtangent_PolyPolyC = RRtangent_PolyPolyC;\r\nvar BiTangent = (function () {\r\n function BiTangent(t1, t2) {\r\n this.t1 = t1;\r\n this.t2 = t2;\r\n }\r\n return BiTangent;\r\n}());\r\nexports.BiTangent = BiTangent;\r\nvar BiTangents = (function () {\r\n function BiTangents() {\r\n }\r\n return BiTangents;\r\n}());\r\nexports.BiTangents = BiTangents;\r\nvar TVGPoint = (function (_super) {\r\n __extends(TVGPoint, _super);\r\n function TVGPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return TVGPoint;\r\n}(Point));\r\nexports.TVGPoint = TVGPoint;\r\nvar VisibilityVertex = (function () {\r\n function VisibilityVertex(id, polyid, polyvertid, p) {\r\n this.id = id;\r\n this.polyid = polyid;\r\n this.polyvertid = polyvertid;\r\n this.p = p;\r\n p.vv = this;\r\n }\r\n return VisibilityVertex;\r\n}());\r\nexports.VisibilityVertex = VisibilityVertex;\r\nvar VisibilityEdge = (function () {\r\n function VisibilityEdge(source, target) {\r\n this.source = source;\r\n this.target = target;\r\n }\r\n VisibilityEdge.prototype.length = function () {\r\n var dx = this.source.p.x - this.target.p.x;\r\n var dy = this.source.p.y - this.target.p.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n };\r\n return VisibilityEdge;\r\n}());\r\nexports.VisibilityEdge = VisibilityEdge;\r\nvar TangentVisibilityGraph = (function () {\r\n function TangentVisibilityGraph(P, g0) {\r\n this.P = P;\r\n this.V = [];\r\n this.E = [];\r\n if (!g0) {\r\n var n = P.length;\r\n for (var i = 0; i < n; i++) {\r\n var p = P[i];\r\n for (var j = 0; j < p.length; ++j) {\r\n var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj);\r\n this.V.push(vv);\r\n if (j > 0)\r\n this.E.push(new VisibilityEdge(p[j - 1].vv, vv));\r\n }\r\n if (p.length > 1)\r\n this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv));\r\n }\r\n for (var i = 0; i < n - 1; i++) {\r\n var Pi = P[i];\r\n for (var j = i + 1; j < n; j++) {\r\n var Pj = P[j], t = tangents(Pi, Pj);\r\n for (var q in t) {\r\n var c = t[q], source = Pi[c.t1], target = Pj[c.t2];\r\n this.addEdgeIfVisible(source, target, i, j);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.V = g0.V.slice(0);\r\n this.E = g0.E.slice(0);\r\n }\r\n }\r\n TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) {\r\n if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) {\r\n this.E.push(new VisibilityEdge(u.vv, v.vv));\r\n }\r\n };\r\n TangentVisibilityGraph.prototype.addPoint = function (p, i1) {\r\n var n = this.P.length;\r\n this.V.push(new VisibilityVertex(this.V.length, n, 0, p));\r\n for (var i = 0; i < n; ++i) {\r\n if (i === i1)\r\n continue;\r\n var poly = this.P[i], t = tangent_PointPolyC(p, poly);\r\n this.addEdgeIfVisible(p, poly[t.ltan], i1, i);\r\n this.addEdgeIfVisible(p, poly[t.rtan], i1, i);\r\n }\r\n return p.vv;\r\n };\r\n TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) {\r\n for (var i = 0, n = this.P.length; i < n; ++i) {\r\n if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return TangentVisibilityGraph;\r\n}());\r\nexports.TangentVisibilityGraph = TangentVisibilityGraph;\r\nfunction intersects(l, P) {\r\n var ints = [];\r\n for (var i = 1, n = P.length; i < n; ++i) {\r\n var int = rectangle_1.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y);\r\n if (int)\r\n ints.push(int);\r\n }\r\n return ints;\r\n}\r\nfunction tangents(V, W) {\r\n var m = V.length - 1, n = W.length - 1;\r\n var bt = new BiTangents();\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n var v1 = V[i == 0 ? m - 1 : i - 1];\r\n var v2 = V[i];\r\n var v3 = V[i + 1];\r\n var w1 = W[j == 0 ? n - 1 : j - 1];\r\n var w2 = W[j];\r\n var w3 = W[j + 1];\r\n var v1v2w2 = isLeft(v1, v2, w2);\r\n var v2w1w2 = isLeft(v2, w1, w2);\r\n var v2w2w3 = isLeft(v2, w2, w3);\r\n var w1w2v2 = isLeft(w1, w2, v2);\r\n var w2v1v2 = isLeft(w2, v1, v2);\r\n var w2v2v3 = isLeft(w2, v2, v3);\r\n if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0\r\n && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) {\r\n bt.ll = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0\r\n && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) {\r\n bt.rr = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0\r\n && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) {\r\n bt.rl = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0\r\n && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) {\r\n bt.lr = new BiTangent(i, j);\r\n }\r\n }\r\n }\r\n return bt;\r\n}\r\nexports.tangents = tangents;\r\nfunction isPointInsidePoly(p, poly) {\r\n for (var i = 1, n = poly.length; i < n; ++i)\r\n if (below(poly[i - 1], poly[i], p))\r\n return false;\r\n return true;\r\n}\r\nfunction isAnyPInQ(p, q) {\r\n return !p.every(function (v) { return !isPointInsidePoly(v, q); });\r\n}\r\nfunction polysOverlap(p, q) {\r\n if (isAnyPInQ(p, q))\r\n return true;\r\n if (isAnyPInQ(q, p))\r\n return true;\r\n for (var i = 1, n = p.length; i < n; ++i) {\r\n var v = p[i], u = p[i - 1];\r\n if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0)\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.polysOverlap = polysOverlap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2dlb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFDO0FBQ2pDO0lBQUE7SUFHQSxDQUFDO0lBQUQsWUFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksc0JBQUs7QUFLbEI7SUFDSSxxQkFBbUIsRUFBVSxFQUFTLEVBQVUsRUFBUyxFQUFVLEVBQVMsRUFBVTtRQUFuRSxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO0lBQUksQ0FBQztJQUMvRixrQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksa0NBQVc7QUFJeEI7SUFBK0IsNkJBQUs7SUFBcEM7O0lBRUEsQ0FBQztJQUFELGdCQUFDO0FBQUQsQ0FBQyxBQUZELENBQStCLEtBQUssR0FFbkM7QUFGWSw4QkFBUztBQVV0QixTQUFnQixNQUFNLENBQUMsRUFBUyxFQUFFLEVBQVMsRUFBRSxFQUFTO0lBQ2xELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRkQsd0JBRUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFRLEVBQUUsRUFBUyxFQUFFLEVBQVM7SUFDekMsT0FBTyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVE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SSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFHckIsSUFBSSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsQ0FBQztJQUNwQyxJQUFJLEdBQVksRUFBRSxHQUFZLENBQUM7SUFJL0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLENBQUM7SUFFYixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNYLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixPQUFPLENBQUMsQ0FBQzs7Z0JBRVQsT0FBTyxDQUFDLENBQUM7UUFFakIsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLENBQUM7UUFJYixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMs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"],"names":["__export","m","p","exports","hasOwnProperty","Object","defineProperty","value","extendStatics","__extends","this","d","b","setPrototypeOf","__proto__","Array","__","constructor","prototype","create","layout_1","LayoutAdaptor","_super","options","_this","call","o","trigger","kick","drag","on","dragstart","dragStart","Layout","dragend","dragEnd","e","eventType","listener","adaptor","gridrouter_1","gridify","pgLayout","nudgeGap","margin","groupMargin","cola","start","nodes","groups","forEach","routerNode","name","bounds","inflate","children","map","c","length","id","concat","leaves","index","gridRouterNodes","i","GridRouter","getChildren","v","getBounds","route","routeEdges","powerGraph","powerEdges","source","target","powerGraphGridLayout","graph","size","grouppadding","avoidOverlaps","links","powerGraphGroups","padding","n","edges","vs","slice","g","sourceInd","push","gg","linkDistance","symmetricDiffLinkLengths","convergenceThreshold","groupCompactness","d3v3","d3v4","d3adaptor","d3Context","version","match","isD3V3","D3StyleLayoutAdaptor","event","d3","dispatch","EventType","tick","end","d3layout","behavior","origin","dragOrigin","resume","arguments","d3event","type","alpha","stress","timer","subject","t","stop","Locks","locks","add","x","clear","isEmpty","l","apply","f","Number","Descent","D","G","threshold","numGridSnapNodes","snapGridSize","snapStrength","scaleSnapByMaxH","random","PseudoRandom","project","k","H","Hd","a","ia","ib","xtmp","minD","MAX_VALUE","j","createSquareMatrix","M","offsetDir","u","getNextBetween","Math","sqrt","computeDerivatives","d2","Huu","maxH","maxDisplaces","sd2","dx","rd","weight","isFinite","D2","gs","l3","hs","console","log","max","r","numNodes","xiu","q","abs","dotProd","rightMultiply","computeStepSize","numerator","denominator","reduceStress","takeDescentStep","computeStress","copy","stepAndProject","x0","stepSize","mApply","matrixApply","computeNextPosition","beta","min","run","iterations","converged","s","rungeKutta","mid","disp","nMinus1","rl","zeroDistance","seed","range","getNext","rectangle_1","Point","LineSegment","x1","y1","x2","y2","PolyPoint","isLeft","P0","P1","P2","y","above","vi","vj","below","Rtangent_PointPolyC","P","V","dnC","floor","Ltangent_PointPolyC","tangent_PolyPolyC","W","t1","t2","cmp1","cmp2","ix1","ix2","done","RLtangent_PolyPolyC","ConvexHull","S","sort","xmin","minmax","maxmin","maxmax","xmax","bot","clockwiseRadialSweep","atan2","LRtangent_PolyPolyC","LLtangent_PolyPolyC","RRtangent_PolyPolyC","BiTangent","BiTangents","TVGPoint","VisibilityVertex","polyid","polyvertid","vv","VisibilityEdge","dy","TangentVisibilityGraph","g0","E","pj","Pi","Pj","tangents","addEdgeIfVisible","i1","i2","intersectsPolys","addPoint","Vclosed","poly","rtan","ltan","intersects","ints","int","Rectangle","lineIntersection","bt","v1","v2","v3","w1","w2","w3","v1v2w2","v2w1w2","v2w2w3","w1w2v2","w2v1v2","w2v2v3","ll","rr","lr","isAnyPInQ","every","isPointInsidePoly","polysOverlap"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/2.4709de54.js b/_static/kpm/js/2.4709de54.js new file mode 100644 index 00000000..85341a06 --- /dev/null +++ b/_static/kpm/js/2.4709de54.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[2],{23002:(t,e,s)=>{s.d(e,{NO:()=>Ot,Vr:()=>P,ZP:()=>St});var o,n=s(66252),a=s(49963),i=s(2262),r=s(3577),c=Object.defineProperty,l=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,h=(t,e,s)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,p=(t,e)=>{for(var s in e||(e={}))u.call(e,s)&&h(t,s,e[s]);if(l)for(var s of l(e))d.call(e,s)&&h(t,s,e[s]);return t},g=t=>"function"==typeof t,m=t=>"string"==typeof t,f=t=>m(t)&&t.trim().length>0,v=t=>void 0===t,T=t=>"object"==typeof t&&null!==t,b=t=>window.TouchEvent&&t instanceof TouchEvent,y=t=>w(t,"component")&&C(t.component),C=t=>{return!v(t)&&(m(t)||g(e=t)||T(e)||y(t));var e},O=t=>T(t)&&["height","width","right","left","top","bottom"].every((e=>"number"==typeof t[e])),w=(t,e)=>(T(t)||g(t))&&e in t,D=(o=0,()=>o++);function S(t){return b(t)?t.targetTouches[0].clientX:t.clientX}function E(t){return b(t)?t.targetTouches[0].clientY:t.clientY}var R,_,P,B,I,L,x=t=>y(t)?x(t.component):(t=>w(t,"tag")&&f(t.tag))(t)?(0,n.aZ)({render:()=>t}):"string"==typeof t?t:(0,i.IU)((0,i.SU)(t)),N=()=>"undefined"!=typeof window,A=class{constructor(){this.allHandlers={}}getHandlers(t){return this.allHandlers[t]||[]}on(t,e){const s=this.getHandlers(t);s.push(e),this.allHandlers[t]=s}off(t,e){const s=this.getHandlers(t);s.splice(s.indexOf(e)>>>0,1)}emit(t,e){this.getHandlers(t).forEach((t=>t(e)))}},j=t=>["on","off","emit"].every((e=>w(t,e)&&g(t[e])));(_=R||(R={})).SUCCESS="success",_.ERROR="error",_.WARNING="warning",_.INFO="info",_.DEFAULT="default",(B=P||(P={})).TOP_LEFT="top-left",B.TOP_CENTER="top-center",B.TOP_RIGHT="top-right",B.BOTTOM_LEFT="bottom-left",B.BOTTOM_CENTER="bottom-center",B.BOTTOM_RIGHT="bottom-right",(L=I||(I={})).ADD="add",L.DISMISS="dismiss",L.UPDATE="update",L.CLEAR="clear",L.UPDATE_DEFAULTS="update_defaults";var k="Vue-Toastification",$={type:{type:String,default:R.DEFAULT},classNames:{type:[String,Array],default:()=>[]},trueBoolean:{type:Boolean,default:!0}},H={type:$.type,customIcon:{type:[String,Boolean,Object,Function],default:!0}},M={component:{type:[String,Object,Function,Boolean],default:"button"},classNames:$.classNames,showOnHover:{type:Boolean,default:!1},ariaLabel:{type:String,default:"close"}},F={timeout:{type:[Number,Boolean],default:5e3},hideProgressBar:{type:Boolean,default:!1},isRunning:{type:Boolean,default:!1}},U={transition:{type:[Object,String],default:`${k}__bounce`}},V={CORE_TOAST:{position:{type:String,default:P.TOP_RIGHT},draggable:$.trueBoolean,draggablePercent:{type:Number,default:.6},pauseOnFocusLoss:$.trueBoolean,pauseOnHover:$.trueBoolean,closeOnClick:$.trueBoolean,timeout:F.timeout,hideProgressBar:F.hideProgressBar,toastClassName:$.classNames,bodyClassName:$.classNames,icon:H.customIcon,closeButton:M.component,closeButtonClassName:M.classNames,showCloseButtonOnHover:M.showOnHover,accessibility:{type:Object,default:()=>({toastRole:"alert",closeButtonLabel:"close"})},rtl:{type:Boolean,default:!1},eventBus:{type:Object,required:!1,default:()=>new A}},TOAST:{id:{type:[String,Number],required:!0,default:0},type:$.type,content:{type:[String,Object,Function],required:!0,default:""},onClick:{type:Function,default:void 0},onClose:{type:Function,default:void 0}},CONTAINER:{container:{type:[Object,Function],default:()=>document.body},newestOnTop:$.trueBoolean,maxToasts:{type:Number,default:20},transition:U.transition,toastDefaults:Object,filterBeforeCreate:{type:Function,default:t=>t},filterToasts:{type:Function,default:t=>t},containerClassName:$.classNames,onMounted:Function,shareAppContext:[Boolean,Object]},PROGRESS_BAR:F,ICON:H,TRANSITION:U,CLOSE_BUTTON:M},z=(0,n.aZ)({name:"VtProgressBar",props:V.PROGRESS_BAR,data:()=>({hasClass:!0}),computed:{style(){return{animationDuration:`${this.timeout}ms`,animationPlayState:this.isRunning?"running":"paused",opacity:this.hideProgressBar?0:1}},cpClass(){return this.hasClass?`${k}__progress-bar`:""}},watch:{timeout(){this.hasClass=!1,this.$nextTick((()=>this.hasClass=!0))}},mounted(){this.$el.addEventListener("animationend",this.animationEnded)},beforeUnmount(){this.$el.removeEventListener("animationend",this.animationEnded)},methods:{animationEnded(){this.$emit("close-toast")}}});z.render=function(t,e){return(0,n.wg)(),(0,n.iD)("div",{style:(0,r.j5)(t.style),class:(0,r.C_)(t.cpClass)},null,6)};var G=z,Z=(0,n.aZ)({name:"VtCloseButton",props:V.CLOSE_BUTTON,computed:{buttonComponent(){return!1!==this.component?x(this.component):"button"},classes(){const t=[`${k}__close-button`];return this.showOnHover&&t.push("show-on-hover"),t.concat(this.classNames)}}}),q=(0,n.Uk)(" × ");Z.render=function(t,e){return(0,n.wg)(),(0,n.j4)((0,n.LL)(t.buttonComponent),(0,n.dG)({"aria-label":t.ariaLabel,class:t.classes},t.$attrs),{default:(0,n.w5)((()=>[q])),_:1},16,["aria-label","class"])};var W=Z,Y={},X={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"check-circle",class:"svg-inline--fa fa-check-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},K=[(0,n._)("path",{fill:"currentColor",d:"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"},null,-1)];Y.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",X,K)};var J=Y,Q={},tt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"info-circle",class:"svg-inline--fa fa-info-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},et=[(0,n._)("path",{fill:"currentColor",d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"},null,-1)];Q.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",tt,et)};var st=Q,ot={},nt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-circle",class:"svg-inline--fa fa-exclamation-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},at=[(0,n._)("path",{fill:"currentColor",d:"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1)];ot.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",nt,at)};var it=ot,rt={},ct={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-triangle",class:"svg-inline--fa fa-exclamation-triangle fa-w-18",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},lt=[(0,n._)("path",{fill:"currentColor",d:"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1)];rt.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",ct,lt)};var ut=rt,dt=(0,n.aZ)({name:"VtIcon",props:V.ICON,computed:{customIconChildren(){return w(this.customIcon,"iconChildren")?this.trimValue(this.customIcon.iconChildren):""},customIconClass(){return m(this.customIcon)?this.trimValue(this.customIcon):w(this.customIcon,"iconClass")?this.trimValue(this.customIcon.iconClass):""},customIconTag(){return w(this.customIcon,"iconTag")?this.trimValue(this.customIcon.iconTag,"i"):"i"},hasCustomIcon(){return this.customIconClass.length>0},component(){return this.hasCustomIcon?this.customIconTag:C(this.customIcon)?x(this.customIcon):this.iconTypeComponent},iconTypeComponent(){return{[R.DEFAULT]:st,[R.INFO]:st,[R.SUCCESS]:J,[R.ERROR]:ut,[R.WARNING]:it}[this.type]},iconClasses(){const t=[`${k}__icon`];return this.hasCustomIcon?t.concat(this.customIconClass):t}},methods:{trimValue:(t,e="")=>f(t)?t.trim():e}});dt.render=function(t,e){return(0,n.wg)(),(0,n.j4)((0,n.LL)(t.component),{class:(0,r.C_)(t.iconClasses)},{default:(0,n.w5)((()=>[(0,n.Uk)((0,r.zw)(t.customIconChildren),1)])),_:1},8,["class"])};var ht=dt,pt=(0,n.aZ)({name:"VtToast",components:{ProgressBar:G,CloseButton:W,Icon:ht},inheritAttrs:!1,props:Object.assign({},V.CORE_TOAST,V.TOAST),data:()=>({isRunning:!0,disableTransitions:!1,beingDragged:!1,dragStart:0,dragPos:{x:0,y:0},dragRect:{}}),computed:{classes(){const t=[`${k}__toast`,`${k}__toast--${this.type}`,`${this.position}`].concat(this.toastClassName);return this.disableTransitions&&t.push("disable-transition"),this.rtl&&t.push(`${k}__toast--rtl`),t},bodyClasses(){return[`${k}__toast-${m(this.content)?"body":"component-body"}`].concat(this.bodyClassName)},draggableStyle(){return this.dragStart===this.dragPos.x?{}:this.beingDragged?{transform:`translateX(${this.dragDelta}px)`,opacity:1-Math.abs(this.dragDelta/this.removalDistance)}:{transition:"transform 0.2s, opacity 0.2s",transform:"translateX(0)",opacity:1}},dragDelta(){return this.beingDragged?this.dragPos.x-this.dragStart:0},removalDistance(){return O(this.dragRect)?(this.dragRect.right-this.dragRect.left)*this.draggablePercent:0}},mounted(){this.draggable&&this.draggableSetup(),this.pauseOnFocusLoss&&this.focusSetup()},beforeUnmount(){this.draggable&&this.draggableCleanup(),this.pauseOnFocusLoss&&this.focusCleanup()},methods:{hasProp:w,getVueComponentFromObj:x,closeToast(){this.eventBus.emit(I.DISMISS,this.id)},clickHandler(){this.onClick&&this.onClick(this.closeToast),this.closeOnClick&&(this.beingDragged&&this.dragStart!==this.dragPos.x||this.closeToast())},timeoutHandler(){this.closeToast()},hoverPause(){this.pauseOnHover&&(this.isRunning=!1)},hoverPlay(){this.pauseOnHover&&(this.isRunning=!0)},focusPause(){this.isRunning=!1},focusPlay(){this.isRunning=!0},focusSetup(){addEventListener("blur",this.focusPause),addEventListener("focus",this.focusPlay)},focusCleanup(){removeEventListener("blur",this.focusPause),removeEventListener("focus",this.focusPlay)},draggableSetup(){const t=this.$el;t.addEventListener("touchstart",this.onDragStart,{passive:!0}),t.addEventListener("mousedown",this.onDragStart),addEventListener("touchmove",this.onDragMove,{passive:!1}),addEventListener("mousemove",this.onDragMove),addEventListener("touchend",this.onDragEnd),addEventListener("mouseup",this.onDragEnd)},draggableCleanup(){const t=this.$el;t.removeEventListener("touchstart",this.onDragStart),t.removeEventListener("mousedown",this.onDragStart),removeEventListener("touchmove",this.onDragMove),removeEventListener("mousemove",this.onDragMove),removeEventListener("touchend",this.onDragEnd),removeEventListener("mouseup",this.onDragEnd)},onDragStart(t){this.beingDragged=!0,this.dragPos={x:S(t),y:E(t)},this.dragStart=S(t),this.dragRect=this.$el.getBoundingClientRect()},onDragMove(t){this.beingDragged&&(t.preventDefault(),this.isRunning&&(this.isRunning=!1),this.dragPos={x:S(t),y:E(t)})},onDragEnd(){this.beingDragged&&(Math.abs(this.dragDelta)>=this.removalDistance?(this.disableTransitions=!0,this.$nextTick((()=>this.closeToast()))):setTimeout((()=>{this.beingDragged=!1,O(this.dragRect)&&this.pauseOnHover&&this.dragRect.bottom>=this.dragPos.y&&this.dragPos.y>=this.dragRect.top&&this.dragRect.left<=this.dragPos.x&&this.dragPos.x<=this.dragRect.right?this.isRunning=!1:this.isRunning=!0})))}}}),gt=["role"];pt.render=function(t,e){const s=(0,n.up)("Icon"),o=(0,n.up)("CloseButton"),i=(0,n.up)("ProgressBar");return(0,n.wg)(),(0,n.iD)("div",{class:(0,r.C_)(t.classes),style:(0,r.j5)(t.draggableStyle),onClick:e[0]||(e[0]=(...e)=>t.clickHandler&&t.clickHandler(...e)),onMouseenter:e[1]||(e[1]=(...e)=>t.hoverPause&&t.hoverPause(...e)),onMouseleave:e[2]||(e[2]=(...e)=>t.hoverPlay&&t.hoverPlay(...e))},[t.icon?((0,n.wg)(),(0,n.j4)(s,{key:0,"custom-icon":t.icon,type:t.type},null,8,["custom-icon","type"])):(0,n.kq)("v-if",!0),(0,n._)("div",{role:t.accessibility.toastRole||"alert",class:(0,r.C_)(t.bodyClasses)},["string"==typeof t.content?((0,n.wg)(),(0,n.iD)(n.HY,{key:0},[(0,n.Uk)((0,r.zw)(t.content),1)],2112)):((0,n.wg)(),(0,n.j4)((0,n.LL)(t.getVueComponentFromObj(t.content)),(0,n.dG)({key:1,"toast-id":t.id},t.hasProp(t.content,"props")?t.content.props:{},(0,n.mx)(t.hasProp(t.content,"listeners")?t.content.listeners:{}),{onCloseToast:t.closeToast}),null,16,["toast-id","onCloseToast"]))],10,gt),t.closeButton?((0,n.wg)(),(0,n.j4)(o,{key:1,component:t.closeButton,"class-names":t.closeButtonClassName,"show-on-hover":t.showCloseButtonOnHover,"aria-label":t.accessibility.closeButtonLabel,onClick:(0,a.iM)(t.closeToast,["stop"])},null,8,["component","class-names","show-on-hover","aria-label","onClick"])):(0,n.kq)("v-if",!0),t.timeout?((0,n.wg)(),(0,n.j4)(i,{key:2,"is-running":t.isRunning,"hide-progress-bar":t.hideProgressBar,timeout:t.timeout,onCloseToast:t.timeoutHandler},null,8,["is-running","hide-progress-bar","timeout","onCloseToast"])):(0,n.kq)("v-if",!0)],38)};var mt=pt,ft=(0,n.aZ)({name:"VtTransition",props:V.TRANSITION,emits:["leave"],methods:{hasProp:w,leave(t){t instanceof HTMLElement&&(t.style.left=t.offsetLeft+"px",t.style.top=t.offsetTop+"px",t.style.width=getComputedStyle(t).width,t.style.position="absolute")}}});ft.render=function(t,e){return(0,n.wg)(),(0,n.j4)(a.W3,{tag:"div","enter-active-class":t.transition.enter?t.transition.enter:`${t.transition}-enter-active`,"move-class":t.transition.move?t.transition.move:`${t.transition}-move`,"leave-active-class":t.transition.leave?t.transition.leave:`${t.transition}-leave-active`,onLeave:t.leave},{default:(0,n.w5)((()=>[(0,n.WI)(t.$slots,"default")])),_:3},8,["enter-active-class","move-class","leave-active-class","onLeave"])};var vt=ft,Tt=(0,n.aZ)({name:"VueToastification",devtools:{hide:!0},components:{Toast:mt,VtTransition:vt},props:Object.assign({},V.CORE_TOAST,V.CONTAINER,V.TRANSITION),data:()=>({count:0,positions:Object.values(P),toasts:{},defaults:{}}),computed:{toastArray(){return Object.values(this.toasts)},filteredToasts(){return this.defaults.filterToasts(this.toastArray)}},beforeMount(){const t=this.eventBus;t.on(I.ADD,this.addToast),t.on(I.CLEAR,this.clearToasts),t.on(I.DISMISS,this.dismissToast),t.on(I.UPDATE,this.updateToast),t.on(I.UPDATE_DEFAULTS,this.updateDefaults),this.defaults=this.$props},mounted(){this.setup(this.container)},methods:{async setup(t){var e;g(t)&&(t=await t()),e=this.$el,v(e.remove)?e.parentNode&&e.parentNode.removeChild(e):e.remove(),t.appendChild(this.$el)},setToast(t){v(t.id)||(this.toasts[t.id]=t)},addToast(t){t.content=(t=>{if("string"==typeof t)return t;const e=w(t,"props")&&T(t.props)?t.props:{},s=w(t,"listeners")&&T(t.listeners)?t.listeners:{};return{component:x(t),props:e,listeners:s}})(t.content);const e=Object.assign({},this.defaults,t.type&&this.defaults.toastDefaults&&this.defaults.toastDefaults[t.type],t),s=this.defaults.filterBeforeCreate(e,this.toastArray);s&&this.setToast(s)},dismissToast(t){const e=this.toasts[t];v(e)||v(e.onClose)||e.onClose(),delete this.toasts[t]},clearToasts(){Object.keys(this.toasts).forEach((t=>{this.dismissToast(t)}))},getPositionToasts(t){const e=this.filteredToasts.filter((e=>e.position===t)).slice(0,this.defaults.maxToasts);return this.defaults.newestOnTop?e.reverse():e},updateDefaults(t){v(t.container)||this.setup(t.container),this.defaults=Object.assign({},this.defaults,t)},updateToast({id:t,options:e,create:s}){this.toasts[t]?(e.timeout&&e.timeout===this.toasts[t].timeout&&e.timeout++,this.setToast(Object.assign({},this.toasts[t],e))):s&&this.addToast(Object.assign({},{id:t},e))},getClasses(t){return[`${k}__container`,t].concat(this.defaults.containerClassName)}}});Tt.render=function(t,e){const s=(0,n.up)("Toast"),o=(0,n.up)("VtTransition");return(0,n.wg)(),(0,n.iD)("div",null,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.positions,(e=>((0,n.wg)(),(0,n.iD)("div",{key:e},[(0,n.Wm)(o,{transition:t.defaults.transition,class:(0,r.C_)(t.getClasses(e))},{default:(0,n.w5)((()=>[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.getPositionToasts(e),(t=>((0,n.wg)(),(0,n.j4)(s,(0,n.dG)({key:t.id},t),null,16)))),128))])),_:2},1032,["transition","class"])])))),128))])};var bt=Tt,yt=(t={},e=!0)=>{const s=t.eventBus=t.eventBus||new A;e&&(0,n.Y3)((()=>{const e=(0,a.ri)(bt,p({},t)),s=e.mount(document.createElement("div")),o=t.onMounted;if(v(o)||o(s,e),t.shareAppContext){const s=t.shareAppContext;!0===s?console.warn(`[${k}] App to share context with was not provided.`):(e._context.components=s._context.components,e._context.directives=s._context.directives,e._context.mixins=s._context.mixins,e._context.provides=s._context.provides,e.config.globalProperties=s.config.globalProperties)}}));const o=(t,e)=>{const o=Object.assign({},{id:D(),type:R.DEFAULT},e,{content:t});return s.emit(I.ADD,o),o.id};return o.clear=()=>s.emit(I.CLEAR,void 0),o.updateDefaults=t=>{s.emit(I.UPDATE_DEFAULTS,t)},o.dismiss=t=>{s.emit(I.DISMISS,t)},o.update=function(t,{content:e,options:o},n=!1){const a=Object.assign({},o,{content:e});s.emit(I.UPDATE,{id:t,options:a,create:n})},o.success=(t,e)=>o(t,Object.assign({},e,{type:R.SUCCESS})),o.info=(t,e)=>o(t,Object.assign({},e,{type:R.INFO})),o.error=(t,e)=>o(t,Object.assign({},e,{type:R.ERROR})),o.warning=(t,e)=>o(t,Object.assign({},e,{type:R.WARNING})),o},Ct=()=>{const t=()=>console.warn(`[${k}] This plugin does not support SSR!`);return new Proxy(t,{get:()=>t})};function Ot(t){return N()?j(t)?yt({eventBus:t},!1):yt(t,!0):Ct()}var wt=Symbol("VueToastification"),Dt=new A,St=(t,e)=>{!0===(null==e?void 0:e.shareAppContext)&&(e.shareAppContext=t);const s=Ot(p({eventBus:Dt},e));t.provide(wt,s)}}}]); +//# sourceMappingURL=2.4709de54.js.map \ No newline at end of file diff --git a/_static/kpm/js/2.4709de54.js.map b/_static/kpm/js/2.4709de54.js.map new file mode 100644 index 00000000..7c719ff0 --- /dev/null +++ b/_static/kpm/js/2.4709de54.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/2.4709de54.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/vue-toastification/dist/index.mjs"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// src/index.ts\nimport { provide, inject, getCurrentInstance } from \"vue\";\n\n// src/ts/interface.ts\nimport { createApp, nextTick } from \"vue\";\n\n// src/ts/utils.ts\nimport { defineComponent, toRaw, unref } from \"vue\";\nvar isFunction = (value) => typeof value === \"function\";\nvar isString = (value) => typeof value === \"string\";\nvar isNonEmptyString = (value) => isString(value) && value.trim().length > 0;\nvar isNumber = (value) => typeof value === \"number\";\nvar isUndefined = (value) => typeof value === \"undefined\";\nvar isObject = (value) => typeof value === \"object\" && value !== null;\nvar isJSX = (obj) => hasProp(obj, \"tag\") && isNonEmptyString(obj.tag);\nvar isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;\nvar isToastComponent = (obj) => hasProp(obj, \"component\") && isToastContent(obj.component);\nvar isVueComponent = (c) => isFunction(c) || isObject(c);\nvar isToastContent = (obj) => !isUndefined(obj) && (isString(obj) || isVueComponent(obj) || isToastComponent(obj));\nvar isDOMRect = (obj) => isObject(obj) && [\"height\", \"width\", \"right\", \"left\", \"top\", \"bottom\"].every((p) => isNumber(obj[p]));\nvar hasProp = (obj, propKey) => (isObject(obj) || isFunction(obj)) && propKey in obj;\nvar getId = ((i) => () => i++)(0);\nfunction getX(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;\n}\nfunction getY(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;\n}\nvar removeElement = (el) => {\n if (!isUndefined(el.remove)) {\n el.remove();\n } else if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n};\nvar getVueComponentFromObj = (obj) => {\n if (isToastComponent(obj)) {\n return getVueComponentFromObj(obj.component);\n }\n if (isJSX(obj)) {\n return defineComponent({\n render() {\n return obj;\n }\n });\n }\n return typeof obj === \"string\" ? obj : toRaw(unref(obj));\n};\nvar normalizeToastComponent = (obj) => {\n if (typeof obj === \"string\") {\n return obj;\n }\n const props = hasProp(obj, \"props\") && isObject(obj.props) ? obj.props : {};\n const listeners = hasProp(obj, \"listeners\") && isObject(obj.listeners) ? obj.listeners : {};\n return { component: getVueComponentFromObj(obj), props, listeners };\n};\nvar isBrowser = () => typeof window !== \"undefined\";\n\n// src/ts/eventBus.ts\nvar EventBus = class {\n constructor() {\n this.allHandlers = {};\n }\n getHandlers(eventType) {\n return this.allHandlers[eventType] || [];\n }\n on(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.push(handler);\n this.allHandlers[eventType] = handlers;\n }\n off(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n emit(eventType, event) {\n const handlers = this.getHandlers(eventType);\n handlers.forEach((handler) => handler(event));\n }\n};\nvar isEventBusInterface = (e) => [\"on\", \"off\", \"emit\"].every((f) => hasProp(e, f) && isFunction(e[f]));\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nimport { defineComponent as defineComponent7 } from \"vue\";\n\n// src/ts/constants.ts\nvar TYPE;\n(function(TYPE2) {\n TYPE2[\"SUCCESS\"] = \"success\";\n TYPE2[\"ERROR\"] = \"error\";\n TYPE2[\"WARNING\"] = \"warning\";\n TYPE2[\"INFO\"] = \"info\";\n TYPE2[\"DEFAULT\"] = \"default\";\n})(TYPE || (TYPE = {}));\nvar POSITION;\n(function(POSITION2) {\n POSITION2[\"TOP_LEFT\"] = \"top-left\";\n POSITION2[\"TOP_CENTER\"] = \"top-center\";\n POSITION2[\"TOP_RIGHT\"] = \"top-right\";\n POSITION2[\"BOTTOM_LEFT\"] = \"bottom-left\";\n POSITION2[\"BOTTOM_CENTER\"] = \"bottom-center\";\n POSITION2[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n})(POSITION || (POSITION = {}));\nvar EVENTS;\n(function(EVENTS2) {\n EVENTS2[\"ADD\"] = \"add\";\n EVENTS2[\"DISMISS\"] = \"dismiss\";\n EVENTS2[\"UPDATE\"] = \"update\";\n EVENTS2[\"CLEAR\"] = \"clear\";\n EVENTS2[\"UPDATE_DEFAULTS\"] = \"update_defaults\";\n})(EVENTS || (EVENTS = {}));\nvar VT_NAMESPACE = \"Vue-Toastification\";\n\n// src/ts/propValidators.ts\nvar COMMON = {\n type: {\n type: String,\n default: TYPE.DEFAULT\n },\n classNames: {\n type: [String, Array],\n default: () => []\n },\n trueBoolean: {\n type: Boolean,\n default: true\n }\n};\nvar ICON = {\n type: COMMON.type,\n customIcon: {\n type: [String, Boolean, Object, Function],\n default: true\n }\n};\nvar CLOSE_BUTTON = {\n component: {\n type: [String, Object, Function, Boolean],\n default: \"button\"\n },\n classNames: COMMON.classNames,\n showOnHover: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: \"close\"\n }\n};\nvar PROGRESS_BAR = {\n timeout: {\n type: [Number, Boolean],\n default: 5e3\n },\n hideProgressBar: {\n type: Boolean,\n default: false\n },\n isRunning: {\n type: Boolean,\n default: false\n }\n};\nvar TRANSITION = {\n transition: {\n type: [Object, String],\n default: `${VT_NAMESPACE}__bounce`\n }\n};\nvar CORE_TOAST = {\n position: {\n type: String,\n default: POSITION.TOP_RIGHT\n },\n draggable: COMMON.trueBoolean,\n draggablePercent: {\n type: Number,\n default: 0.6\n },\n pauseOnFocusLoss: COMMON.trueBoolean,\n pauseOnHover: COMMON.trueBoolean,\n closeOnClick: COMMON.trueBoolean,\n timeout: PROGRESS_BAR.timeout,\n hideProgressBar: PROGRESS_BAR.hideProgressBar,\n toastClassName: COMMON.classNames,\n bodyClassName: COMMON.classNames,\n icon: ICON.customIcon,\n closeButton: CLOSE_BUTTON.component,\n closeButtonClassName: CLOSE_BUTTON.classNames,\n showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,\n accessibility: {\n type: Object,\n default: () => ({\n toastRole: \"alert\",\n closeButtonLabel: \"close\"\n })\n },\n rtl: {\n type: Boolean,\n default: false\n },\n eventBus: {\n type: Object,\n required: false,\n default: () => new EventBus()\n }\n};\nvar TOAST = {\n id: {\n type: [String, Number],\n required: true,\n default: 0\n },\n type: COMMON.type,\n content: {\n type: [String, Object, Function],\n required: true,\n default: \"\"\n },\n onClick: {\n type: Function,\n default: void 0\n },\n onClose: {\n type: Function,\n default: void 0\n }\n};\nvar CONTAINER = {\n container: {\n type: [\n Object,\n Function\n ],\n default: () => document.body\n },\n newestOnTop: COMMON.trueBoolean,\n maxToasts: {\n type: Number,\n default: 20\n },\n transition: TRANSITION.transition,\n toastDefaults: Object,\n filterBeforeCreate: {\n type: Function,\n default: (toast) => toast\n },\n filterToasts: {\n type: Function,\n default: (toasts) => toasts\n },\n containerClassName: COMMON.classNames,\n onMounted: Function,\n shareAppContext: [Boolean, Object]\n};\nvar propValidators_default = {\n CORE_TOAST,\n TOAST,\n CONTAINER,\n PROGRESS_BAR,\n ICON,\n TRANSITION,\n CLOSE_BUTTON\n};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nimport { defineComponent as defineComponent5 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=script\nimport { defineComponent as defineComponent2 } from \"vue\";\nvar VtProgressBar_default = defineComponent2({\n name: \"VtProgressBar\",\n props: propValidators_default.PROGRESS_BAR,\n data() {\n return {\n hasClass: true\n };\n },\n computed: {\n style() {\n return {\n animationDuration: `${this.timeout}ms`,\n animationPlayState: this.isRunning ? \"running\" : \"paused\",\n opacity: this.hideProgressBar ? 0 : 1\n };\n },\n cpClass() {\n return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : \"\";\n }\n },\n watch: {\n timeout() {\n this.hasClass = false;\n this.$nextTick(() => this.hasClass = true);\n }\n },\n mounted() {\n this.$el.addEventListener(\"animationend\", this.animationEnded);\n },\n beforeUnmount() {\n this.$el.removeEventListener(\"animationend\", this.animationEnded);\n },\n methods: {\n animationEnded() {\n this.$emit(\"close-toast\");\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=template\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nfunction render(_ctx, _cache) {\n return _openBlock(), _createElementBlock(\"div\", {\n style: _normalizeStyle(_ctx.style),\n class: _normalizeClass(_ctx.cpClass)\n }, null, 6);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue\nVtProgressBar_default.render = render;\nvar VtProgressBar_default2 = VtProgressBar_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=script\nimport { defineComponent as defineComponent3 } from \"vue\";\nvar VtCloseButton_default = defineComponent3({\n name: \"VtCloseButton\",\n props: propValidators_default.CLOSE_BUTTON,\n computed: {\n buttonComponent() {\n if (this.component !== false) {\n return getVueComponentFromObj(this.component);\n }\n return \"button\";\n },\n classes() {\n const classes = [`${VT_NAMESPACE}__close-button`];\n if (this.showOnHover) {\n classes.push(\"show-on-hover\");\n }\n return classes.concat(this.classNames);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=template\nimport { createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, withCtx as _withCtx, openBlock as _openBlock2, createBlock as _createBlock } from \"vue\";\nvar _hoisted_1 = /* @__PURE__ */ _createTextVNode(\" \\xD7 \");\nfunction render2(_ctx, _cache) {\n return _openBlock2(), _createBlock(_resolveDynamicComponent(_ctx.buttonComponent), _mergeProps({\n \"aria-label\": _ctx.ariaLabel,\n class: _ctx.classes\n }, _ctx.$attrs), {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 16, [\"aria-label\", \"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue\nVtCloseButton_default.render = render2;\nvar VtCloseButton_default2 = VtCloseButton_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nimport { defineComponent as defineComponent4 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=script\nvar VtSuccessIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock3, createElementBlock as _createElementBlock2 } from \"vue\";\nvar _hoisted_12 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"check-circle\",\n class: \"svg-inline--fa fa-check-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_2 = /* @__PURE__ */ _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n}, null, -1);\nvar _hoisted_3 = [\n _hoisted_2\n];\nfunction render3(_ctx, _cache) {\n return _openBlock3(), _createElementBlock2(\"svg\", _hoisted_12, _hoisted_3);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue\nVtSuccessIcon_default.render = render3;\nvar VtSuccessIcon_default2 = VtSuccessIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=script\nvar VtInfoIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode2, openBlock as _openBlock4, createElementBlock as _createElementBlock3 } from \"vue\";\nvar _hoisted_13 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"info-circle\",\n class: \"svg-inline--fa fa-info-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_22 = /* @__PURE__ */ _createElementVNode2(\"path\", {\n fill: \"currentColor\",\n d: \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"\n}, null, -1);\nvar _hoisted_32 = [\n _hoisted_22\n];\nfunction render4(_ctx, _cache) {\n return _openBlock4(), _createElementBlock3(\"svg\", _hoisted_13, _hoisted_32);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue\nVtInfoIcon_default.render = render4;\nvar VtInfoIcon_default2 = VtInfoIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=script\nvar VtWarningIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode3, openBlock as _openBlock5, createElementBlock as _createElementBlock4 } from \"vue\";\nvar _hoisted_14 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-circle\",\n class: \"svg-inline--fa fa-exclamation-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_23 = /* @__PURE__ */ _createElementVNode3(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_33 = [\n _hoisted_23\n];\nfunction render5(_ctx, _cache) {\n return _openBlock5(), _createElementBlock4(\"svg\", _hoisted_14, _hoisted_33);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue\nVtWarningIcon_default.render = render5;\nvar VtWarningIcon_default2 = VtWarningIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=script\nvar VtErrorIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode4, openBlock as _openBlock6, createElementBlock as _createElementBlock5 } from \"vue\";\nvar _hoisted_15 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-triangle\",\n class: \"svg-inline--fa fa-exclamation-triangle fa-w-18\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\"\n};\nvar _hoisted_24 = /* @__PURE__ */ _createElementVNode4(\"path\", {\n fill: \"currentColor\",\n d: \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_34 = [\n _hoisted_24\n];\nfunction render6(_ctx, _cache) {\n return _openBlock6(), _createElementBlock5(\"svg\", _hoisted_15, _hoisted_34);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue\nVtErrorIcon_default.render = render6;\nvar VtErrorIcon_default2 = VtErrorIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nvar VtIcon_default = defineComponent4({\n name: \"VtIcon\",\n props: propValidators_default.ICON,\n computed: {\n customIconChildren() {\n return hasProp(this.customIcon, \"iconChildren\") ? this.trimValue(this.customIcon.iconChildren) : \"\";\n },\n customIconClass() {\n if (isString(this.customIcon)) {\n return this.trimValue(this.customIcon);\n } else if (hasProp(this.customIcon, \"iconClass\")) {\n return this.trimValue(this.customIcon.iconClass);\n }\n return \"\";\n },\n customIconTag() {\n if (hasProp(this.customIcon, \"iconTag\")) {\n return this.trimValue(this.customIcon.iconTag, \"i\");\n }\n return \"i\";\n },\n hasCustomIcon() {\n return this.customIconClass.length > 0;\n },\n component() {\n if (this.hasCustomIcon) {\n return this.customIconTag;\n }\n if (isToastContent(this.customIcon)) {\n return getVueComponentFromObj(this.customIcon);\n }\n return this.iconTypeComponent;\n },\n iconTypeComponent() {\n const types = {\n [TYPE.DEFAULT]: VtInfoIcon_default2,\n [TYPE.INFO]: VtInfoIcon_default2,\n [TYPE.SUCCESS]: VtSuccessIcon_default2,\n [TYPE.ERROR]: VtErrorIcon_default2,\n [TYPE.WARNING]: VtWarningIcon_default2\n };\n return types[this.type];\n },\n iconClasses() {\n const classes = [`${VT_NAMESPACE}__icon`];\n if (this.hasCustomIcon) {\n return classes.concat(this.customIconClass);\n }\n return classes;\n }\n },\n methods: {\n trimValue(value, empty = \"\") {\n return isNonEmptyString(value) ? value.trim() : empty;\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=template\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode2, resolveDynamicComponent as _resolveDynamicComponent2, normalizeClass as _normalizeClass2, withCtx as _withCtx2, openBlock as _openBlock7, createBlock as _createBlock2 } from \"vue\";\nfunction render7(_ctx, _cache) {\n return _openBlock7(), _createBlock2(_resolveDynamicComponent2(_ctx.component), {\n class: _normalizeClass2(_ctx.iconClasses)\n }, {\n default: _withCtx2(() => [\n _createTextVNode2(_toDisplayString(_ctx.customIconChildren), 1)\n ]),\n _: 1\n }, 8, [\"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue\nVtIcon_default.render = render7;\nvar VtIcon_default2 = VtIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nvar VtToast_default = defineComponent5({\n name: \"VtToast\",\n components: { ProgressBar: VtProgressBar_default2, CloseButton: VtCloseButton_default2, Icon: VtIcon_default2 },\n inheritAttrs: false,\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.TOAST),\n data() {\n const data = {\n isRunning: true,\n disableTransitions: false,\n beingDragged: false,\n dragStart: 0,\n dragPos: { x: 0, y: 0 },\n dragRect: {}\n };\n return data;\n },\n computed: {\n classes() {\n const classes = [\n `${VT_NAMESPACE}__toast`,\n `${VT_NAMESPACE}__toast--${this.type}`,\n `${this.position}`\n ].concat(this.toastClassName);\n if (this.disableTransitions) {\n classes.push(\"disable-transition\");\n }\n if (this.rtl) {\n classes.push(`${VT_NAMESPACE}__toast--rtl`);\n }\n return classes;\n },\n bodyClasses() {\n const classes = [\n `${VT_NAMESPACE}__toast-${isString(this.content) ? \"body\" : \"component-body\"}`\n ].concat(this.bodyClassName);\n return classes;\n },\n draggableStyle() {\n if (this.dragStart === this.dragPos.x) {\n return {};\n } else if (this.beingDragged) {\n return {\n transform: `translateX(${this.dragDelta}px)`,\n opacity: 1 - Math.abs(this.dragDelta / this.removalDistance)\n };\n } else {\n return {\n transition: \"transform 0.2s, opacity 0.2s\",\n transform: \"translateX(0)\",\n opacity: 1\n };\n }\n },\n dragDelta() {\n return this.beingDragged ? this.dragPos.x - this.dragStart : 0;\n },\n removalDistance() {\n if (isDOMRect(this.dragRect)) {\n return (this.dragRect.right - this.dragRect.left) * this.draggablePercent;\n }\n return 0;\n }\n },\n mounted() {\n if (this.draggable) {\n this.draggableSetup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusSetup();\n }\n },\n beforeUnmount() {\n if (this.draggable) {\n this.draggableCleanup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusCleanup();\n }\n },\n methods: {\n hasProp,\n getVueComponentFromObj,\n closeToast() {\n this.eventBus.emit(EVENTS.DISMISS, this.id);\n },\n clickHandler() {\n if (this.onClick) {\n this.onClick(this.closeToast);\n }\n if (this.closeOnClick) {\n if (!this.beingDragged || this.dragStart === this.dragPos.x) {\n this.closeToast();\n }\n }\n },\n timeoutHandler() {\n this.closeToast();\n },\n hoverPause() {\n if (this.pauseOnHover) {\n this.isRunning = false;\n }\n },\n hoverPlay() {\n if (this.pauseOnHover) {\n this.isRunning = true;\n }\n },\n focusPause() {\n this.isRunning = false;\n },\n focusPlay() {\n this.isRunning = true;\n },\n focusSetup() {\n addEventListener(\"blur\", this.focusPause);\n addEventListener(\"focus\", this.focusPlay);\n },\n focusCleanup() {\n removeEventListener(\"blur\", this.focusPause);\n removeEventListener(\"focus\", this.focusPlay);\n },\n draggableSetup() {\n const element = this.$el;\n element.addEventListener(\"touchstart\", this.onDragStart, {\n passive: true\n });\n element.addEventListener(\"mousedown\", this.onDragStart);\n addEventListener(\"touchmove\", this.onDragMove, { passive: false });\n addEventListener(\"mousemove\", this.onDragMove);\n addEventListener(\"touchend\", this.onDragEnd);\n addEventListener(\"mouseup\", this.onDragEnd);\n },\n draggableCleanup() {\n const element = this.$el;\n element.removeEventListener(\"touchstart\", this.onDragStart);\n element.removeEventListener(\"mousedown\", this.onDragStart);\n removeEventListener(\"touchmove\", this.onDragMove);\n removeEventListener(\"mousemove\", this.onDragMove);\n removeEventListener(\"touchend\", this.onDragEnd);\n removeEventListener(\"mouseup\", this.onDragEnd);\n },\n onDragStart(event) {\n this.beingDragged = true;\n this.dragPos = { x: getX(event), y: getY(event) };\n this.dragStart = getX(event);\n this.dragRect = this.$el.getBoundingClientRect();\n },\n onDragMove(event) {\n if (this.beingDragged) {\n event.preventDefault();\n if (this.isRunning) {\n this.isRunning = false;\n }\n this.dragPos = { x: getX(event), y: getY(event) };\n }\n },\n onDragEnd() {\n if (this.beingDragged) {\n if (Math.abs(this.dragDelta) >= this.removalDistance) {\n this.disableTransitions = true;\n this.$nextTick(() => this.closeToast());\n } else {\n setTimeout(() => {\n this.beingDragged = false;\n if (isDOMRect(this.dragRect) && this.pauseOnHover && this.dragRect.bottom >= this.dragPos.y && this.dragPos.y >= this.dragRect.top && this.dragRect.left <= this.dragPos.x && this.dragPos.x <= this.dragRect.right) {\n this.isRunning = false;\n } else {\n this.isRunning = true;\n }\n });\n }\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=template\nimport { resolveComponent as _resolveComponent, openBlock as _openBlock8, createBlock as _createBlock3, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString2, createTextVNode as _createTextVNode3, Fragment as _Fragment, createElementBlock as _createElementBlock6, resolveDynamicComponent as _resolveDynamicComponent3, toHandlers as _toHandlers, mergeProps as _mergeProps2, normalizeClass as _normalizeClass3, createElementVNode as _createElementVNode5, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle2 } from \"vue\";\nvar _hoisted_16 = [\"role\"];\nfunction render8(_ctx, _cache) {\n const _component_Icon = _resolveComponent(\"Icon\");\n const _component_CloseButton = _resolveComponent(\"CloseButton\");\n const _component_ProgressBar = _resolveComponent(\"ProgressBar\");\n return _openBlock8(), _createElementBlock6(\"div\", {\n class: _normalizeClass3(_ctx.classes),\n style: _normalizeStyle2(_ctx.draggableStyle),\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.clickHandler && _ctx.clickHandler(...args)),\n onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.hoverPause && _ctx.hoverPause(...args)),\n onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.hoverPlay && _ctx.hoverPlay(...args))\n }, [\n _ctx.icon ? (_openBlock8(), _createBlock3(_component_Icon, {\n key: 0,\n \"custom-icon\": _ctx.icon,\n type: _ctx.type\n }, null, 8, [\"custom-icon\", \"type\"])) : _createCommentVNode(\"v-if\", true),\n _createElementVNode5(\"div\", {\n role: _ctx.accessibility.toastRole || \"alert\",\n class: _normalizeClass3(_ctx.bodyClasses)\n }, [\n typeof _ctx.content === \"string\" ? (_openBlock8(), _createElementBlock6(_Fragment, { key: 0 }, [\n _createTextVNode3(_toDisplayString2(_ctx.content), 1)\n ], 2112)) : (_openBlock8(), _createBlock3(_resolveDynamicComponent3(_ctx.getVueComponentFromObj(_ctx.content)), _mergeProps2({\n key: 1,\n \"toast-id\": _ctx.id\n }, _ctx.hasProp(_ctx.content, \"props\") ? _ctx.content.props : {}, _toHandlers(_ctx.hasProp(_ctx.content, \"listeners\") ? _ctx.content.listeners : {}), { onCloseToast: _ctx.closeToast }), null, 16, [\"toast-id\", \"onCloseToast\"]))\n ], 10, _hoisted_16),\n !!_ctx.closeButton ? (_openBlock8(), _createBlock3(_component_CloseButton, {\n key: 1,\n component: _ctx.closeButton,\n \"class-names\": _ctx.closeButtonClassName,\n \"show-on-hover\": _ctx.showCloseButtonOnHover,\n \"aria-label\": _ctx.accessibility.closeButtonLabel,\n onClick: _withModifiers(_ctx.closeToast, [\"stop\"])\n }, null, 8, [\"component\", \"class-names\", \"show-on-hover\", \"aria-label\", \"onClick\"])) : _createCommentVNode(\"v-if\", true),\n _ctx.timeout ? (_openBlock8(), _createBlock3(_component_ProgressBar, {\n key: 2,\n \"is-running\": _ctx.isRunning,\n \"hide-progress-bar\": _ctx.hideProgressBar,\n timeout: _ctx.timeout,\n onCloseToast: _ctx.timeoutHandler\n }, null, 8, [\"is-running\", \"hide-progress-bar\", \"timeout\", \"onCloseToast\"])) : _createCommentVNode(\"v-if\", true)\n ], 38);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue\nVtToast_default.render = render8;\nvar VtToast_default2 = VtToast_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=script\nimport { defineComponent as defineComponent6 } from \"vue\";\nvar VtTransition_default = defineComponent6({\n name: \"VtTransition\",\n props: propValidators_default.TRANSITION,\n emits: [\"leave\"],\n methods: {\n hasProp,\n leave(el) {\n if (el instanceof HTMLElement) {\n el.style.left = el.offsetLeft + \"px\";\n el.style.top = el.offsetTop + \"px\";\n el.style.width = getComputedStyle(el).width;\n el.style.position = \"absolute\";\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=template\nimport { renderSlot as _renderSlot, TransitionGroup as _TransitionGroup, withCtx as _withCtx3, openBlock as _openBlock9, createBlock as _createBlock4 } from \"vue\";\nfunction render9(_ctx, _cache) {\n return _openBlock9(), _createBlock4(_TransitionGroup, {\n tag: \"div\",\n \"enter-active-class\": _ctx.transition.enter ? _ctx.transition.enter : `${_ctx.transition}-enter-active`,\n \"move-class\": _ctx.transition.move ? _ctx.transition.move : `${_ctx.transition}-move`,\n \"leave-active-class\": _ctx.transition.leave ? _ctx.transition.leave : `${_ctx.transition}-leave-active`,\n onLeave: _ctx.leave\n }, {\n default: _withCtx3(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"enter-active-class\", \"move-class\", \"leave-active-class\", \"onLeave\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue\nVtTransition_default.render = render9;\nvar VtTransition_default2 = VtTransition_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nvar VtToastContainer_default = defineComponent7({\n name: \"VueToastification\",\n devtools: {\n hide: true\n },\n components: { Toast: VtToast_default2, VtTransition: VtTransition_default2 },\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.CONTAINER, propValidators_default.TRANSITION),\n data() {\n const data = {\n count: 0,\n positions: Object.values(POSITION),\n toasts: {},\n defaults: {}\n };\n return data;\n },\n computed: {\n toastArray() {\n return Object.values(this.toasts);\n },\n filteredToasts() {\n return this.defaults.filterToasts(this.toastArray);\n }\n },\n beforeMount() {\n const events = this.eventBus;\n events.on(EVENTS.ADD, this.addToast);\n events.on(EVENTS.CLEAR, this.clearToasts);\n events.on(EVENTS.DISMISS, this.dismissToast);\n events.on(EVENTS.UPDATE, this.updateToast);\n events.on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);\n this.defaults = this.$props;\n },\n mounted() {\n this.setup(this.container);\n },\n methods: {\n async setup(container) {\n if (isFunction(container)) {\n container = await container();\n }\n removeElement(this.$el);\n container.appendChild(this.$el);\n },\n setToast(props) {\n if (!isUndefined(props.id)) {\n this.toasts[props.id] = props;\n }\n },\n addToast(params) {\n params.content = normalizeToastComponent(params.content);\n const props = Object.assign({}, this.defaults, params.type && this.defaults.toastDefaults && this.defaults.toastDefaults[params.type], params);\n const toast = this.defaults.filterBeforeCreate(props, this.toastArray);\n toast && this.setToast(toast);\n },\n dismissToast(id) {\n const toast = this.toasts[id];\n if (!isUndefined(toast) && !isUndefined(toast.onClose)) {\n toast.onClose();\n }\n delete this.toasts[id];\n },\n clearToasts() {\n Object.keys(this.toasts).forEach((id) => {\n this.dismissToast(id);\n });\n },\n getPositionToasts(position) {\n const toasts = this.filteredToasts.filter((toast) => toast.position === position).slice(0, this.defaults.maxToasts);\n return this.defaults.newestOnTop ? toasts.reverse() : toasts;\n },\n updateDefaults(update) {\n if (!isUndefined(update.container)) {\n this.setup(update.container);\n }\n this.defaults = Object.assign({}, this.defaults, update);\n },\n updateToast({\n id,\n options,\n create\n }) {\n if (this.toasts[id]) {\n if (options.timeout && options.timeout === this.toasts[id].timeout) {\n options.timeout++;\n }\n this.setToast(Object.assign({}, this.toasts[id], options));\n } else if (create) {\n this.addToast(Object.assign({}, { id }, options));\n }\n },\n getClasses(position) {\n const classes = [`${VT_NAMESPACE}__container`, position];\n return classes.concat(this.defaults.containerClassName);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=template\nimport { renderList as _renderList, Fragment as _Fragment2, openBlock as _openBlock10, createElementBlock as _createElementBlock7, resolveComponent as _resolveComponent2, mergeProps as _mergeProps3, createBlock as _createBlock5, normalizeClass as _normalizeClass4, withCtx as _withCtx4, createVNode as _createVNode } from \"vue\";\nfunction render10(_ctx, _cache) {\n const _component_Toast = _resolveComponent2(\"Toast\");\n const _component_VtTransition = _resolveComponent2(\"VtTransition\");\n return _openBlock10(), _createElementBlock7(\"div\", null, [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.positions, (pos) => {\n return _openBlock10(), _createElementBlock7(\"div\", { key: pos }, [\n _createVNode(_component_VtTransition, {\n transition: _ctx.defaults.transition,\n class: _normalizeClass4(_ctx.getClasses(pos))\n }, {\n default: _withCtx4(() => [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.getPositionToasts(pos), (toast) => {\n return _openBlock10(), _createBlock5(_component_Toast, _mergeProps3({\n key: toast.id\n }, toast), null, 16);\n }), 128))\n ]),\n _: 2\n }, 1032, [\"transition\", \"class\"])\n ]);\n }), 128))\n ]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue\nVtToastContainer_default.render = render10;\nvar VtToastContainer_default2 = VtToastContainer_default;\n\n// src/ts/interface.ts\nvar buildInterface = (globalOptions = {}, mountContainer = true) => {\n const events = globalOptions.eventBus = globalOptions.eventBus || new EventBus();\n if (mountContainer) {\n nextTick(() => {\n const app = createApp(VtToastContainer_default2, __spreadValues({}, globalOptions));\n const component = app.mount(document.createElement(\"div\"));\n const onMounted = globalOptions.onMounted;\n if (!isUndefined(onMounted)) {\n onMounted(component, app);\n }\n if (globalOptions.shareAppContext) {\n const baseApp = globalOptions.shareAppContext;\n if (baseApp === true) {\n console.warn(`[${VT_NAMESPACE}] App to share context with was not provided.`);\n } else {\n app._context.components = baseApp._context.components;\n app._context.directives = baseApp._context.directives;\n app._context.mixins = baseApp._context.mixins;\n app._context.provides = baseApp._context.provides;\n app.config.globalProperties = baseApp.config.globalProperties;\n }\n }\n });\n }\n const toast = (content, options) => {\n const props = Object.assign({}, { id: getId(), type: TYPE.DEFAULT }, options, {\n content\n });\n events.emit(EVENTS.ADD, props);\n return props.id;\n };\n toast.clear = () => events.emit(EVENTS.CLEAR, void 0);\n toast.updateDefaults = (update) => {\n events.emit(EVENTS.UPDATE_DEFAULTS, update);\n };\n toast.dismiss = (id) => {\n events.emit(EVENTS.DISMISS, id);\n };\n function updateToast(id, { content, options }, create = false) {\n const opt = Object.assign({}, options, { content });\n events.emit(EVENTS.UPDATE, {\n id,\n options: opt,\n create\n });\n }\n toast.update = updateToast;\n toast.success = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.SUCCESS }));\n toast.info = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.INFO }));\n toast.error = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.ERROR }));\n toast.warning = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.WARNING }));\n return toast;\n};\n\n// src/index.ts\nvar createMockToastInterface = () => {\n const toast = () => console.warn(`[${VT_NAMESPACE}] This plugin does not support SSR!`);\n return new Proxy(toast, {\n get() {\n return toast;\n }\n });\n};\nfunction createToastInterface(optionsOrEventBus) {\n if (!isBrowser()) {\n return createMockToastInterface();\n }\n if (isEventBusInterface(optionsOrEventBus)) {\n return buildInterface({ eventBus: optionsOrEventBus }, false);\n }\n return buildInterface(optionsOrEventBus, true);\n}\nvar toastInjectionKey = Symbol(\"VueToastification\");\nvar globalEventBus = new EventBus();\nvar VueToastificationPlugin = (App, options) => {\n if ((options == null ? void 0 : options.shareAppContext) === true) {\n options.shareAppContext = App;\n }\n const inter = createToastInterface(__spreadValues({\n eventBus: globalEventBus\n }, options));\n App.provide(toastInjectionKey, inter);\n};\nvar provideToast = (options) => {\n const toast = createToastInterface(options);\n if (getCurrentInstance()) {\n provide(toastInjectionKey, toast);\n }\n};\nvar useToast = (eventBus) => {\n if (eventBus) {\n return createToastInterface(eventBus);\n }\n const toast = getCurrentInstance() ? inject(toastInjectionKey, void 0) : void 0;\n return toast ? toast : createToastInterface(globalEventBus);\n};\nvar src_default = VueToastificationPlugin;\nexport {\n EventBus,\n POSITION,\n TYPE,\n createToastInterface,\n src_default as default,\n globalEventBus,\n provideToast,\n toastInjectionKey,\n useToast\n};\n"],"names":["i","__defProp","Object","defineProperty","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","prototype","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","key","value","enumerable","configurable","writable","__spreadValues","a","b","prop","call","isFunction","isString","isNonEmptyString","trim","length","isUndefined","isObject","isTouchEvent","event","window","TouchEvent","isToastComponent","hasProp","isToastContent","component","c","isDOMRect","every","p","propKey","getId","getX","targetTouches","clientX","getY","clientY","TYPE","TYPE2","POSITION","POSITION2","EVENTS","EVENTS2","getVueComponentFromObj","tag","isJSX","render","isBrowser","EventBus","constructor","this","allHandlers","getHandlers","eventType","on","handler","handlers","push","off","splice","indexOf","emit","forEach","isEventBusInterface","e","f","VT_NAMESPACE","COMMON","type","String","default","DEFAULT","classNames","Array","trueBoolean","Boolean","ICON","customIcon","Function","CLOSE_BUTTON","showOnHover","ariaLabel","PROGRESS_BAR","timeout","Number","hideProgressBar","isRunning","TRANSITION","transition","propValidators_default","CORE_TOAST","position","TOP_RIGHT","draggable","draggablePercent","pauseOnFocusLoss","pauseOnHover","closeOnClick","toastClassName","bodyClassName","icon","closeButton","closeButtonClassName","showCloseButtonOnHover","accessibility","toastRole","closeButtonLabel","rtl","eventBus","required","TOAST","id","content","onClick","onClose","CONTAINER","container","document","body","newestOnTop","maxToasts","toastDefaults","filterBeforeCreate","toast","filterToasts","toasts","containerClassName","onMounted","shareAppContext","VtProgressBar_default","name","props","data","hasClass","computed","style","animationDuration","animationPlayState","opacity","cpClass","watch","$nextTick","mounted","$el","addEventListener","animationEnded","beforeUnmount","removeEventListener","methods","$emit","_ctx","_cache","class","VtProgressBar_default2","VtCloseButton_default","buttonComponent","classes","concat","_hoisted_1","$attrs","_","VtCloseButton_default2","VtSuccessIcon_default","_hoisted_12","focusable","role","xmlns","viewBox","_hoisted_3","fill","d","VtSuccessIcon_default2","VtInfoIcon_default","_hoisted_13","_hoisted_32","VtInfoIcon_default2","VtWarningIcon_default","_hoisted_14","_hoisted_33","VtWarningIcon_default2","VtErrorIcon_default","_hoisted_15","_hoisted_34","VtErrorIcon_default2","VtIcon_default","customIconChildren","trimValue","iconChildren","customIconClass","iconClass","customIconTag","iconTag","hasCustomIcon","iconTypeComponent","INFO","SUCCESS","ERROR","WARNING","iconClasses","empty","VtIcon_default2","VtToast_default","components","ProgressBar","CloseButton","Icon","inheritAttrs","assign","disableTransitions","beingDragged","dragStart","dragPos","x","y","dragRect","bodyClasses","draggableStyle","transform","dragDelta","Math","abs","removalDistance","right","left","draggableSetup","focusSetup","draggableCleanup","focusCleanup","closeToast","DISMISS","clickHandler","timeoutHandler","hoverPause","hoverPlay","focusPause","focusPlay","element","onDragStart","passive","onDragMove","onDragEnd","getBoundingClientRect","preventDefault","setTimeout","bottom","top","_hoisted_16","_component_Icon","_component_CloseButton","_component_ProgressBar","args","onMouseenter","onMouseleave","listeners","onCloseToast","VtToast_default2","VtTransition_default","emits","leave","el","HTMLElement","offsetLeft","offsetTop","width","getComputedStyle","enter","move","onLeave","$slots","VtTransition_default2","VtToastContainer_default","devtools","hide","Toast","VtTransition","count","positions","values","defaults","toastArray","filteredToasts","beforeMount","events","ADD","addToast","CLEAR","clearToasts","dismissToast","UPDATE","updateToast","UPDATE_DEFAULTS","updateDefaults","$props","setup","async","remove","parentNode","removeChild","appendChild","setToast","params","normalizeToastComponent","keys","getPositionToasts","filter","slice","reverse","update","options","create","getClasses","_component_Toast","_component_VtTransition","pos","VtToastContainer_default2","buildInterface","globalOptions","mountContainer","app","mount","createElement","baseApp","console","warn","_context","directives","mixins","provides","config","globalProperties","clear","dismiss","opt","success","info","error","warning","createMockToastInterface","Proxy","get","createToastInterface","optionsOrEventBus","toastInjectionKey","Symbol","globalEventBus","src_default","App","inter","provide"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/218.3f34b833.js b/_static/kpm/js/218.3f34b833.js new file mode 100644 index 00000000..31f4ed7c --- /dev/null +++ b/_static/kpm/js/218.3f34b833.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[218],{41218:(e,t,r)=>{r.d(t,{yR:()=>c,C5:()=>n,HD:()=>y,ZT:()=>O,zr:()=>s,Ly:()=>b,BK:()=>m,IY:()=>i});var o,p=r(2262);Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const n="undefined"!=typeof window,y=(Object.prototype.toString,e=>"string"==typeof e),O=()=>{};function b(e){return"function"==typeof e?e():(0,p.SU)(e)}function c(e){return e}function s(e,t,r=!1){return t.reduce(((t,o)=>(o in e&&(r&&void 0===e[o]||(t[o]=e[o])),t)),{})}function i(e){return!!(0,p.nZ)()&&((0,p.EB)(e),!0)}n&&(null==(o=null==window?void 0:window.navigator)?void 0:o.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent),Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var j=Object.defineProperty,a=Object.defineProperties,l=Object.getOwnPropertyDescriptors,P=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,w=Object.prototype.propertyIsEnumerable,f=(e,t,r)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,d=(e,t)=>{for(var r in t||(t={}))u.call(t,r)&&f(e,r,t[r]);if(P)for(var r of P(t))w.call(t,r)&&f(e,r,t[r]);return e},g=(e,t)=>a(e,l(t));function m(e){if(!(0,p.dq)(e))return(0,p.BK)(e);const t=Array.isArray(e.value)?new Array(e.value.length):{};for(const r in e.value)t[r]=(0,p.ZM)((()=>({get:()=>e.value[r],set(t){if(Array.isArray(e.value)){const o=[...e.value];o[r]=t,e.value=o}else{const o=g(d({},e.value),{[r]:t});Object.setPrototypeOf(o,e.value),e.value=o}}})));return t}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable}}]); +//# sourceMappingURL=218.3f34b833.js.map \ No newline at end of file diff --git a/_static/kpm/js/218.3f34b833.js.map b/_static/kpm/js/218.3f34b833.js.map new file mode 100644 index 00000000..85bd7357 --- /dev/null +++ b/_static/kpm/js/218.3f34b833.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/218.3f34b833.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/@vueuse/shared/index.mjs"],"sourcesContent":["import { shallowRef, watchEffect, readonly, unref, ref, isVue3, version, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isRef, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$6(__spreadValues$9({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\n\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = resolveUnref(ms);\n const maxDuration = resolveUnref(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = resolveUnref(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction __onlyVue3(name = \"this function\") {\n if (isVue3)\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nfunction __onlyVue27Plus(name = \"this function\") {\n if (isVue3 || version.startsWith(\"2.7.\"))\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 2.7 or above.`);\n}\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = isFunction(fn) ? fn : fn.get;\n const set = isFunction(fn) ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = [];\n const off = (fn) => {\n const index = fns.indexOf(fn);\n if (index !== -1)\n fns.splice(index, 1);\n };\n const on = (fn) => {\n fns.push(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n fns.forEach((fn) => fn(param));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return () => {\n if (!initialized) {\n state = scope.run(stateFactory);\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n __onlyVue27Plus();\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$8({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : resolveUnref;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n }));\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactive(Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, resolveUnref(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(ref, {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n }, { enumerable: true });\n}\nconst controlledRef = refWithControl;\n\nfunction resolveRef(r) {\n return typeof r === \"function\" ? computed(r) : ref(r);\n}\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(left, (newValue) => right.value = transformLTR(newValue), { flush, deep, immediate });\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(right, (newValue) => left.value = transformRTL(newValue), { flush, deep, immediate });\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(r, (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => stop == null ? void 0 : stop()));\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch([r, value], ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => {\n stop == null ? void 0 : stop();\n return resolveUnref(r);\n }));\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(resolveUnref(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(resolveUnref(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => resolveUnref(list).every((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => resolveUnref(resolveUnref(list).find((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => resolveUnref(list).findIndex((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => resolveUnref(!Array.prototype.findLast ? findLast(resolveUnref(list), (element, index, array) => fn(resolveUnref(element), index, array)) : resolveUnref(list).findLast((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).join(resolveUnref(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(resolveUnref(sum), resolveUnref(value), index);\n return computed(() => {\n const resolved = resolveUnref(list);\n return args.length ? resolved.reduce(reduceCallback, resolveUnref(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => resolveUnref(list).some((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayUnique(list) {\n return computed(() => [...new Set(resolveUnref(list).map((element) => resolveUnref(element)))]);\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -Infinity\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = initialValue) => {\n initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n};\nconst formatDate = (date, formatStr, options = {}) => {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]());\n};\nconst normalizeDate = (date) => {\n if (date === null)\n return new Date(NaN);\n if (date === void 0)\n return new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n};\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(resolveUnref(date)), resolveUnref(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = resolveUnref(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || isFunction(interval)) {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(callback ? () => {\n update();\n callback(counter.value);\n } : update, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$6({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(source, () => ms.value = timestamp(), options);\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, resolveUnref(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(callback != null ? callback : noop, interval, options);\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$5({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = resolveUnref(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${resolveUnref(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = resolveUnref(truthyValue);\n _value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : unref(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = new Array(oldList.length);\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(source, (...args) => {\n current.value += 1;\n if (current.value >= resolveUnref(count))\n nextTick(() => stop());\n cb(...args);\n }, watchOptions);\n return { count: current, stop };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n }));\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(eventFilter, cb);\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(source, (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n }, watchOptions);\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(watch(source, () => {\n syncCounter.value++;\n }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: \"sync\" })));\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(watch(source, (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n }, watchOptions));\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n }));\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n }));\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => getOneWatchSource(item));\n return getOneWatchSource(sources);\n}\nfunction getOneWatchSource(source) {\n return typeof source === \"function\" ? source() : unref(source);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(source, (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n }, options);\n}\n\nexport { __onlyVue27Plus, __onlyVue3, assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, makeDestructurable, noop, normalizeDate, now, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n"],"names":["_a","Object","defineProperty","defineProperties","getOwnPropertyDescriptors","getOwnPropertySymbols","prototype","hasOwnProperty","propertyIsEnumerable","isClient","window","isString","toString","val","noop","resolveUnref","r","identity","arg","objectPick","obj","keys","omitUndefined","reduce","n","k","tryOnScopeDispose","fn","navigator","userAgent","test","__defProp$7","__defProps$5","__getOwnPropDescs$5","__getOwnPropSymbols$9","__hasOwnProp$9","__propIsEnum$9","__defNormalProp$7","key","value","enumerable","configurable","writable","__spreadValues$7","a","b","prop","call","__spreadProps$5","toRefs","objectRef","result","Array","isArray","length","get","set","v","copy","newObject","setPrototypeOf"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/252.2482d7ce.js b/_static/kpm/js/252.2482d7ce.js new file mode 100644 index 00000000..c49f6430 --- /dev/null +++ b/_static/kpm/js/252.2482d7ce.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[252],{66252:(e,n,t)=>{t.d(n,{$d:()=>s,Cn:()=>J,FN:()=>Zn,Fl:()=>lt,HY:()=>vn,JJ:()=>$,Jd:()=>he,Ko:()=>Se,LL:()=>Te,P$:()=>Z,Q2:()=>we,Q6:()=>ee,U2:()=>X,Uk:()=>Ln,Us:()=>hn,WI:()=>Ae,Wm:()=>Un,Y3:()=>v,Y8:()=>N,YP:()=>K,_:()=>En,aZ:()=>ne,bv:()=>fe,dD:()=>A,dG:()=>Vn,f3:()=>D,h:()=>rt,iD:()=>wn,ic:()=>de,j4:()=>Rn,kq:()=>Dn,mx:()=>je,nK:()=>z,uE:()=>$n,up:()=>Fe,w5:()=>j,wg:()=>Cn,wy:()=>be});var o=t(2262),l=t(3577);function r(e,n,t,o){let l;try{l=o?e(...o):e()}catch(e){i(e,n,t)}return l}function s(e,n,t,o){if((0,l.mf)(e)){const s=r(e,n,t,o);return s&&(0,l.tI)(s)&&s.catch((e=>{i(e,n,t)})),s}const c=[];for(let l=0;l>>1;x(a[o])x(e)-x(n))),h=0;hnull==e.id?1/0:e.id,C=(e,n)=>{const t=x(e)-x(n);if(0===t){if(e.pre&&!n.pre)return-1;if(n.pre&&!e.pre)return 1}return t};function F(e){u=!1,c=!0,a.sort(C),l.dG;try{for(f=0;f(0,l.HD)(e)?e.trim():e))),n&&(r=t.map(l.h5))}let u,a=o[u=(0,l.hR)(n)]||o[u=(0,l.hR)((0,l._A)(n))];!a&&i&&(a=o[u=(0,l.hR)((0,l.rs)(n))]),a&&s(a,e,6,r);const f=o[u+"Once"];if(f){if(e.emitted){if(e.emitted[u])return}else e.emitted={};e.emitted[u]=!0,s(f,e,6,r)}}function T(e,n,t=!1){const o=n.emitsCache,r=o.get(e);if(void 0!==r)return r;const s=e.emits;let i={},c=!1;if(!(0,l.mf)(e)){const o=e=>{const t=T(e,n,!0);t&&(c=!0,(0,l.l7)(i,t))};!t&&n.mixins.length&&n.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return s||c?((0,l.kJ)(s)?s.forEach((e=>i[e]=null)):(0,l.l7)(i,s),(0,l.Kn)(e)&&o.set(e,i),i):((0,l.Kn)(e)&&o.set(e,null),null)}function w(e,n){return!(!e||!(0,l.F7)(n))&&(n=n.slice(2).replace(/Once$/,""),(0,l.RI)(e,n[0].toLowerCase()+n.slice(1))||(0,l.RI)(e,(0,l.rs)(n))||(0,l.RI)(e,n))}new Set,new Map;let R=null,O=null;function S(e){const n=R;return R=e,O=e&&e.type.__scopeId||null,n}function A(e){O=e}function J(){O=null}function j(e,n=R,t){if(!n)return e;if(e._n)return e;const o=(...t)=>{o._d&&In(-1);const l=S(n);let r;try{r=e(...t)}finally{S(l),o._d&&In(1)}return r};return o._n=!0,o._c=!0,o._d=!0,o}function E(e){const{type:n,vnode:t,proxy:o,withProxy:r,props:s,propsOptions:[c],slots:u,attrs:a,emit:f,render:p,renderCache:d,data:h,setupState:m,ctx:g,inheritAttrs:v}=e;let y,_;const b=S(e);try{if(4&t.shapeFlag){const e=r||o;y=Mn(p.call(e,e,d,s,m,h,g)),_=a}else{const e=n;y=Mn(e.length>1?e(s,{attrs:a,slots:u,emit:f}):e(s,null)),_=n.props?a:U(a)}}catch(n){kn.length=0,i(n,e,1),y=Un(_n)}let k=y;if(_&&!1!==v){const e=Object.keys(_),{shapeFlag:n}=k;e.length&&7&n&&(c&&e.some(l.tR)&&(_=P(_,c)),k=Pn(k,_))}return t.dirs&&(k=Pn(k),k.dirs=k.dirs?k.dirs.concat(t.dirs):t.dirs),t.transition&&(k.transition=t.transition),y=k,S(b),y}const U=e=>{let n;for(const t in e)("class"===t||"style"===t||(0,l.F7)(t))&&((n||(n={}))[t]=e[t]);return n},P=(e,n)=>{const t={};for(const o in e)(0,l.tR)(o)&&o.slice(9)in n||(t[o]=e[o]);return t};function L(e,n,t){const o=Object.keys(n);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l1)return t&&(0,l.mf)(n)?n.call(o.proxy):n}}const M={};function K(e,n,t){return B(e,n,t)}function B(e,n,{immediate:t,deep:i,flush:c,onTrack:u,onTrigger:a}=l.kT){const f=(0,o.nZ)()===(null==qn?void 0:qn.scope)?qn:null;let p,d,h=!1,m=!1;if((0,o.dq)(e)?(p=()=>e.value,h=(0,o.yT)(e)):(0,o.PG)(e)?(p=()=>e,i=!0):(0,l.kJ)(e)?(m=!0,h=e.some((e=>(0,o.PG)(e)||(0,o.yT)(e))),p=()=>e.map((e=>(0,o.dq)(e)?e.value:(0,o.PG)(e)?H(e):(0,l.mf)(e)?r(e,f,2):void 0))):p=(0,l.mf)(e)?n?()=>r(e,f,2):()=>{if(!f||!f.isUnmounted)return d&&d(),s(e,f,3,[v])}:l.dG,n&&i){const e=p;p=()=>H(e())}let g,v=e=>{d=x.onStop=()=>{r(e,f,4)}};if(et){if(v=l.dG,n?t&&s(n,f,3,[p(),m?[]:void 0,v]):p(),"sync"!==c)return l.dG;{const e=it();g=e.__watcherHandles||(e.__watcherHandles=[])}}let _=m?new Array(e.length).fill(M):M;const b=()=>{if(x.active)if(n){const e=x.run();(i||h||(m?e.some(((e,n)=>(0,l.aU)(e,_[n]))):(0,l.aU)(e,_)))&&(d&&d(),s(n,f,3,[e,_===M?void 0:m&&_[0]===M?[]:_,v]),_=e)}else x.run()};let k;b.allowRecurse=!!n,"sync"===c?k=b:"post"===c?k=()=>dn(b,f&&f.suspense):(b.pre=!0,f&&(b.id=f.uid),k=()=>y(b));const x=new o.qq(p,k);n?t?b():_=x.run():"post"===c?dn(x.run.bind(x),f&&f.suspense):x.run();const C=()=>{x.stop(),f&&f.scope&&(0,l.Od)(f.scope.effects,x)};return g&&g.push(C),C}function V(e,n,t){const o=this.proxy,r=(0,l.HD)(e)?e.includes(".")?G(o,e):()=>o[e]:e.bind(o,o);let s;(0,l.mf)(n)?s=n:(s=n.handler,t=n);const i=qn;Wn(this);const c=B(r,s.bind(o),t);return i?Wn(i):Xn(),c}function G(e,n){const t=n.split(".");return()=>{let n=e;for(let e=0;e{H(e,n)}));else if((0,l.PO)(e))for(const t in e)H(e[t],n);return e}function N(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fe((()=>{e.isMounted=!0})),he((()=>{e.isUnmounting=!0})),e}const q=[Function,Array],Z={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:q,onEnter:q,onAfterEnter:q,onEnterCancelled:q,onBeforeLeave:q,onLeave:q,onAfterLeave:q,onLeaveCancelled:q,onBeforeAppear:q,onAppear:q,onAfterAppear:q,onAppearCancelled:q},setup(e,{slots:n}){const t=Zn(),l=N();let r;return()=>{const s=n.default&&ee(n.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){let e=!1;for(const n of s)if(n.type!==_n){i=n,e=!0;break}}const c=(0,o.IU)(e),{mode:u}=c;if(l.isLeaving)return Y(i);const a=Q(i);if(!a)return Y(i);const f=X(a,c,l,t);z(a,f);const p=t.subTree,d=p&&Q(p);let h=!1;const{getTransitionKey:m}=a.type;if(m){const e=m();void 0===r?r=e:e!==r&&(r=e,h=!0)}if(d&&d.type!==_n&&(!Sn(a,d)||h)){const e=X(d,c,l,t);if(z(d,e),"out-in"===u)return l.isLeaving=!0,e.afterLeave=()=>{l.isLeaving=!1,!1!==t.update.active&&t.update()},Y(i);"in-out"===u&&a.type!==_n&&(e.delayLeave=(e,n,t)=>{W(l,d)[String(d.key)]=d,e._leaveCb=()=>{n(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=t})}return i}}};function W(e,n){const{leavingVNodes:t}=e;let o=t.get(n.type);return o||(o=Object.create(null),t.set(n.type,o)),o}function X(e,n,t,o){const{appear:r,mode:i,persisted:c=!1,onBeforeEnter:u,onEnter:a,onAfterEnter:f,onEnterCancelled:p,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:v,onAppear:y,onAfterAppear:_,onAppearCancelled:b}=n,k=String(e.key),x=W(t,e),C=(e,n)=>{e&&s(e,o,9,n)},F=(e,n)=>{const t=n[1];C(e,n),(0,l.kJ)(e)?e.every((e=>e.length<=1))&&t():e.length<=1&&t()},I={mode:i,persisted:c,beforeEnter(n){let o=u;if(!t.isMounted){if(!r)return;o=v||u}n._leaveCb&&n._leaveCb(!0);const l=x[k];l&&Sn(e,l)&&l.el._leaveCb&&l.el._leaveCb(),C(o,[n])},enter(e){let n=a,o=f,l=p;if(!t.isMounted){if(!r)return;n=y||a,o=_||f,l=b||p}let s=!1;const i=e._enterCb=n=>{s||(s=!0,C(n?l:o,[e]),I.delayedLeave&&I.delayedLeave(),e._enterCb=void 0)};n?F(n,[e,i]):i()},leave(n,o){const l=String(e.key);if(n._enterCb&&n._enterCb(!0),t.isUnmounting)return o();C(d,[n]);let r=!1;const s=n._leaveCb=t=>{r||(r=!0,o(),C(t?g:m,[n]),n._leaveCb=void 0,x[l]===e&&delete x[l])};x[l]=e,h?F(h,[n,s]):s()},clone:e=>X(e,n,t,o)};return I}function Y(e){if(oe(e))return(e=Pn(e)).children=null,e}function Q(e){return oe(e)?e.children?e.children[0]:void 0:e}function z(e,n){6&e.shapeFlag&&e.component?z(e.component.subTree,n):128&e.shapeFlag?(e.ssContent.transition=n.clone(e.ssContent),e.ssFallback.transition=n.clone(e.ssFallback)):e.transition=n}function ee(e,n=!1,t){let o=[],l=0;for(let r=0;r1)for(let e=0;e!!e.type.__asyncLoader,oe=e=>e.type.__isKeepAlive;function le(e,n){se(e,"a",n)}function re(e,n){se(e,"da",n)}function se(e,n,t=qn){const o=e.__wdc||(e.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(ce(n,o,t),t){let e=t.parent;for(;e&&e.parent;)oe(e.parent.vnode)&&ie(o,n,t,e),e=e.parent}}function ie(e,n,t,o){const r=ce(n,e,o,!0);me((()=>{(0,l.Od)(o[n],r)}),t)}function ce(e,n,t=qn,l=!1){if(t){const r=t[e]||(t[e]=[]),i=n.__weh||(n.__weh=(...l)=>{if(t.isUnmounted)return;(0,o.Jd)(),Wn(t);const r=s(n,t,e,l);return Xn(),(0,o.lk)(),r});return l?r.unshift(i):r.push(i),i}}RegExp,RegExp;const ue=e=>(n,t=qn)=>(!et||"sp"===e)&&ce(e,((...e)=>n(...e)),t),ae=ue("bm"),fe=ue("m"),pe=ue("bu"),de=ue("u"),he=ue("bum"),me=ue("um"),ge=ue("sp"),ve=ue("rtg"),ye=ue("rtc");function _e(e,n=qn){ce("ec",e,n)}function be(e,n){const t=R;if(null===t)return e;const o=ot(t)||t.proxy,r=e.dirs||(e.dirs=[]);for(let e=0;en(e,t,void 0,s&&s[t])));else{const t=Object.keys(e);r=new Array(t.length);for(let o=0,l=t.length;o!On(e)||e.type!==_n&&!(e.type===vn&&!Je(e.children))))?e:null}function je(e,n){const t={};for(const o in e)t[n&&/[A-Z]/.test(o)?`on:${o}`:(0,l.hR)(o)]=e[o];return t}const Ee=e=>e?Yn(e)?ot(e)||e.proxy:Ee(e.parent):null,Ue=(0,l.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ee(e.parent),$root:e=>Ee(e.root),$emit:e=>e.emit,$options:e=>Ke(e),$forceUpdate:e=>e.f||(e.f=()=>y(e.update)),$nextTick:e=>e.n||(e.n=v.bind(e.proxy)),$watch:e=>V.bind(e)}),Pe=(e,n)=>e!==l.kT&&!e.__isScriptSetup&&(0,l.RI)(e,n),Le={get({_:e},n){const{ctx:t,setupState:r,data:s,props:i,accessCache:c,type:u,appContext:a}=e;let f;if("$"!==n[0]){const o=c[n];if(void 0!==o)switch(o){case 1:return r[n];case 2:return s[n];case 4:return t[n];case 3:return i[n]}else{if(Pe(r,n))return c[n]=1,r[n];if(s!==l.kT&&(0,l.RI)(s,n))return c[n]=2,s[n];if((f=e.propsOptions[0])&&(0,l.RI)(f,n))return c[n]=3,i[n];if(t!==l.kT&&(0,l.RI)(t,n))return c[n]=4,t[n];$e&&(c[n]=0)}}const p=Ue[n];let d,h;return p?("$attrs"===n&&(0,o.j)(e,"get",n),p(e)):(d=u.__cssModules)&&(d=d[n])?d:t!==l.kT&&(0,l.RI)(t,n)?(c[n]=4,t[n]):(h=a.config.globalProperties,(0,l.RI)(h,n)?h[n]:void 0)},set({_:e},n,t){const{data:o,setupState:r,ctx:s}=e;return Pe(r,n)?(r[n]=t,!0):o!==l.kT&&(0,l.RI)(o,n)?(o[n]=t,!0):!((0,l.RI)(e.props,n)||"$"===n[0]&&n.slice(1)in e||(s[n]=t,0))},has({_:{data:e,setupState:n,accessCache:t,ctx:o,appContext:r,propsOptions:s}},i){let c;return!!t[i]||e!==l.kT&&(0,l.RI)(e,i)||Pe(n,i)||(c=s[0])&&(0,l.RI)(c,i)||(0,l.RI)(o,i)||(0,l.RI)(Ue,i)||(0,l.RI)(r.config.globalProperties,i)},defineProperty(e,n,t){return null!=t.get?e._.accessCache[n]=0:(0,l.RI)(t,"value")&&this.set(e,n,t.value,null),Reflect.defineProperty(e,n,t)}};let $e=!0;function De(e,n,t){s((0,l.kJ)(e)?e.map((e=>e.bind(n.proxy))):e.bind(n.proxy),n,t)}function Me(e,n,t,o){const r=o.includes(".")?G(t,o):()=>t[o];if((0,l.HD)(e)){const t=n[e];(0,l.mf)(t)&&K(r,t)}else if((0,l.mf)(e))K(r,e.bind(t));else if((0,l.Kn)(e))if((0,l.kJ)(e))e.forEach((e=>Me(e,n,t,o)));else{const o=(0,l.mf)(e.handler)?e.handler.bind(t):n[e.handler];(0,l.mf)(o)&&K(r,o,e)}}function Ke(e){const n=e.type,{mixins:t,extends:o}=n,{mixins:r,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,c=s.get(n);let u;return c?u=c:r.length||t||o?(u={},r.length&&r.forEach((e=>Be(u,e,i,!0))),Be(u,n,i)):u=n,(0,l.Kn)(n)&&s.set(n,u),u}function Be(e,n,t,o=!1){const{mixins:l,extends:r}=n;r&&Be(e,r,t,!0),l&&l.forEach((n=>Be(e,n,t,!0)));for(const l in n)if(o&&"expose"===l);else{const o=Ve[l]||t&&t[l];e[l]=o?o(e[l],n[l]):n[l]}return e}const Ve={data:Ge,props:qe,emits:qe,methods:qe,computed:qe,beforeCreate:Ne,created:Ne,beforeMount:Ne,mounted:Ne,beforeUpdate:Ne,updated:Ne,beforeDestroy:Ne,beforeUnmount:Ne,destroyed:Ne,unmounted:Ne,activated:Ne,deactivated:Ne,errorCaptured:Ne,serverPrefetch:Ne,components:qe,directives:qe,watch:function(e,n){if(!e)return n;if(!n)return e;const t=(0,l.l7)(Object.create(null),e);for(const o in n)t[o]=Ne(e[o],n[o]);return t},provide:Ge,inject:function(e,n){return qe(He(e),He(n))}};function Ge(e,n){return n?e?function(){return(0,l.l7)((0,l.mf)(e)?e.call(this,this):e,(0,l.mf)(n)?n.call(this,this):n)}:n:e}function He(e){if((0,l.kJ)(e)){const n={};for(let t=0;t{u=!0;const[t,o]=Xe(e,n,!0);(0,l.l7)(i,t),o&&c.push(...o)};!t&&n.mixins.length&&n.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!s&&!u)return(0,l.Kn)(e)&&o.set(e,l.Z6),l.Z6;if((0,l.kJ)(s))for(let e=0;e-1,o[1]=t<0||e-1||(0,l.RI)(o,"default"))&&c.push(n)}}}const a=[i,c];return(0,l.Kn)(e)&&o.set(e,a),a}function Ye(e){return"$"!==e[0]}function Qe(e){const n=e&&e.toString().match(/^\s*(function|class) (\w+)/);return n?n[2]:null===e?"null":""}function ze(e,n){return Qe(e)===Qe(n)}function en(e,n){return(0,l.kJ)(n)?n.findIndex((n=>ze(n,e))):(0,l.mf)(n)&&ze(n,e)?0:-1}const nn=e=>"_"===e[0]||"$stable"===e,tn=e=>(0,l.kJ)(e)?e.map(Mn):[Mn(e)],on=(e,n,t)=>{if(n._n)return n;const o=j(((...e)=>tn(n(...e))),t);return o._c=!1,o},ln=(e,n,t)=>{const o=e._ctx;for(const t in e){if(nn(t))continue;const r=e[t];if((0,l.mf)(r))n[t]=on(0,r,o);else if(null!=r){const e=tn(r);n[t]=()=>e}}},rn=(e,n)=>{const t=tn(n);e.slots.default=()=>t},sn=(e,n)=>{if(32&e.vnode.shapeFlag){const t=n._;t?(e.slots=(0,o.IU)(n),(0,l.Nj)(n,"_",t)):ln(n,e.slots={})}else e.slots={},n&&rn(e,n);(0,l.Nj)(e.slots,An,1)},cn=(e,n,t)=>{const{vnode:o,slots:r}=e;let s=!0,i=l.kT;if(32&o.shapeFlag){const e=n._;e?t&&1===e?s=!1:((0,l.l7)(r,n),t||1!==e||delete r._):(s=!n.$stable,ln(n,r)),i=n}else n&&(rn(e,n),i={default:1});if(s)for(const e in r)nn(e)||e in i||delete r[e]};function un(){return{app:null,config:{isNativeTag:l.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let an=0;function fn(e,n){return function(t,o=null){(0,l.mf)(t)||(t=Object.assign({},t)),null==o||(0,l.Kn)(o)||(o=null);const r=un(),s=new Set;let i=!1;const c=r.app={_uid:an++,_component:t,_props:o,_container:null,_context:r,_instance:null,version:ct,get config(){return r.config},set config(e){},use:(e,...n)=>(s.has(e)||(e&&(0,l.mf)(e.install)?(s.add(e),e.install(c,...n)):(0,l.mf)(e)&&(s.add(e),e(c,...n))),c),mixin:e=>(r.mixins.includes(e)||r.mixins.push(e),c),component:(e,n)=>n?(r.components[e]=n,c):r.components[e],directive:(e,n)=>n?(r.directives[e]=n,c):r.directives[e],mount(l,s,u){if(!i){const a=Un(t,o);return a.appContext=r,s&&n?n(a,l):e(a,l,u),i=!0,c._container=l,l.__vue_app__=c,ot(a.component)||a.component.proxy}},unmount(){i&&(e(null,c._container),delete c._container.__vue_app__)},provide:(e,n)=>(r.provides[e]=n,c)};return c}}function pn(e,n,t,s,i=!1){if((0,l.kJ)(e))return void e.forEach(((e,o)=>pn(e,n&&((0,l.kJ)(n)?n[o]:n),t,s,i)));if(te(s)&&!i)return;const c=4&s.shapeFlag?ot(s.component)||s.component.proxy:s.el,u=i?null:c,{i:a,r:f}=e,p=n&&n.r,d=a.refs===l.kT?a.refs={}:a.refs,h=a.setupState;if(null!=p&&p!==f&&((0,l.HD)(p)?(d[p]=null,(0,l.RI)(h,p)&&(h[p]=null)):(0,o.dq)(p)&&(p.value=null)),(0,l.mf)(f))r(f,a,12,[u,d]);else{const n=(0,l.HD)(f),r=(0,o.dq)(f);if(n||r){const o=()=>{if(e.f){const t=n?(0,l.RI)(h,f)?h[f]:d[f]:f.value;i?(0,l.kJ)(t)&&(0,l.Od)(t,c):(0,l.kJ)(t)?t.includes(c)||t.push(c):n?(d[f]=[c],(0,l.RI)(h,f)&&(h[f]=d[f])):(f.value=[c],e.k&&(d[e.k]=f.value))}else n?(d[f]=u,(0,l.RI)(h,f)&&(h[f]=u)):r&&(f.value=u,e.k&&(d[e.k]=u))};u?(o.id=-1,dn(o,t)):o()}}}const dn=function(e,n){var t;n&&n.pendingBranch?(0,l.kJ)(e)?n.effects.push(...e):n.effects.push(e):(t=e,(0,l.kJ)(t)?p.push(...t):d&&d.includes(t,t.allowRecurse?h+1:h)||p.push(t),_())};function hn(e){return function(e,n){(0,l.E9)().__VUE__=!0;const{insert:t,remove:s,patchProp:c,createElement:u,createText:p,createComment:d,setText:h,setElementText:m,parentNode:g,nextSibling:v,setScopeId:_=l.dG,insertStaticContent:x}=e,C=(e,n,t,o=null,l=null,r=null,s=!1,i=null,c=!!n.dynamicChildren)=>{if(e===n)return;e&&!Sn(e,n)&&(o=ne(e),X(e,l,r,!0),e=null),-2===n.patchFlag&&(c=!1,n.dynamicChildren=null);const{type:u,ref:a,shapeFlag:f}=n;switch(u){case yn:F(e,n,t,o);break;case _n:R(e,n,t,o);break;case bn:null==e&&O(n,t,o,s);break;case vn:M(e,n,t,o,l,r,s,i,c);break;default:1&f?A(e,n,t,o,l,r,s,i,c):6&f?K(e,n,t,o,l,r,s,i,c):(64&f||128&f)&&u.process(e,n,t,o,l,r,s,i,c,re)}null!=a&&l&&pn(a,e&&e.ref,r,n||e,!n)},F=(e,n,o,l)=>{if(null==e)t(n.el=p(n.children),o,l);else{const t=n.el=e.el;n.children!==e.children&&h(t,n.children)}},R=(e,n,o,l)=>{null==e?t(n.el=d(n.children||""),o,l):n.el=e.el},O=(e,n,t,o)=>{[e.el,e.anchor]=x(e.children,n,t,o,e.el,e.anchor)},S=({el:e,anchor:n})=>{let t;for(;e&&e!==n;)t=v(e),s(e),e=t;s(n)},A=(e,n,t,o,l,r,s,i,c)=>{s=s||"svg"===n.type,null==e?J(n,t,o,l,r,s,i,c):P(e,n,l,r,s,i,c)},J=(e,n,o,r,s,i,a,f)=>{let p,d;const{type:h,props:g,shapeFlag:v,transition:y,dirs:_}=e;if(p=e.el=u(e.type,i,g&&g.is,g),8&v?m(p,e.children):16&v&&U(e.children,p,null,r,s,i&&"foreignObject"!==h,a,f),_&&ke(e,null,r,"created"),j(p,e,e.scopeId,a,r),g){for(const n in g)"value"===n||(0,l.Gg)(n)||c(p,n,null,g[n],i,e.children,r,s,ee);"value"in g&&c(p,"value",null,g.value),(d=g.onVnodeBeforeMount)&&Gn(d,r,e)}_&&ke(e,null,r,"beforeMount");const b=(!s||s&&!s.pendingBranch)&&y&&!y.persisted;b&&y.beforeEnter(p),t(p,n,o),((d=g&&g.onVnodeMounted)||b||_)&&dn((()=>{d&&Gn(d,r,e),b&&y.enter(p),_&&ke(e,null,r,"mounted")}),s)},j=(e,n,t,o,l)=>{if(t&&_(e,t),o)for(let n=0;n{for(let u=c;u{const u=n.el=e.el;let{patchFlag:a,dynamicChildren:f,dirs:p}=n;a|=16&e.patchFlag;const d=e.props||l.kT,h=n.props||l.kT;let g;t&&mn(t,!1),(g=h.onVnodeBeforeUpdate)&&Gn(g,t,n,e),p&&ke(n,e,t,"beforeUpdate"),t&&mn(t,!0);const v=r&&"foreignObject"!==n.type;if(f?$(e.dynamicChildren,f,u,t,o,v,s):i||N(e,n,u,null,t,o,v,s,!1),a>0){if(16&a)D(u,n,d,h,t,o,r);else if(2&a&&d.class!==h.class&&c(u,"class",null,h.class,r),4&a&&c(u,"style",d.style,h.style,r),8&a){const l=n.dynamicProps;for(let n=0;n{g&&Gn(g,t,n,e),p&&ke(n,e,t,"updated")}),o)},$=(e,n,t,o,l,r,s)=>{for(let i=0;i{if(t!==o){if(t!==l.kT)for(const u in t)(0,l.Gg)(u)||u in o||c(e,u,t[u],null,i,n.children,r,s,ee);for(const u in o){if((0,l.Gg)(u))continue;const a=o[u],f=t[u];a!==f&&"value"!==u&&c(e,u,f,a,i,n.children,r,s,ee)}"value"in o&&c(e,"value",t.value,o.value)}},M=(e,n,o,l,r,s,i,c,u)=>{const a=n.el=e?e.el:p(""),f=n.anchor=e?e.anchor:p("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:m}=n;m&&(c=c?c.concat(m):m),null==e?(t(a,o,l),t(f,o,l),U(n.children,o,f,r,s,i,c,u)):d>0&&64&d&&h&&e.dynamicChildren?($(e.dynamicChildren,h,o,r,s,i,c),(null!=n.key||r&&n===r.subTree)&&gn(e,n,!0)):N(e,n,o,f,r,s,i,c,u)},K=(e,n,t,o,l,r,s,i,c)=>{n.slotScopeIds=i,null==e?512&n.shapeFlag?l.ctx.activate(n,t,o,s,c):B(n,t,o,l,r,s,c):V(e,n,c)},B=(e,n,t,s,c,u,a)=>{const f=e.component=function(e,n,t){const r=e.type,s=(n?n.appContext:e.appContext)||Hn,i={uid:Nn++,vnode:e,type:r,parent:n,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new o.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Xe(r,s),emitsOptions:T(r,s),emit:null,emitted:null,propsDefaults:l.kT,inheritAttrs:r.inheritAttrs,ctx:l.kT,data:l.kT,props:l.kT,attrs:l.kT,slots:l.kT,refs:l.kT,setupState:l.kT,setupContext:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=n?n.root:i,i.emit=I.bind(null,i),e.ce&&e.ce(i),i}(e,s,c);if(oe(e)&&(f.ctx.renderer=re),function(e,n=!1){et=n;const{props:t,children:s}=e.vnode,c=Yn(e);!function(e,n,t,r=!1){const s={},i={};(0,l.Nj)(i,An,1),e.propsDefaults=Object.create(null),Ze(e,n,s,i);for(const n in e.propsOptions[0])n in s||(s[n]=void 0);t?e.props=r?s:(0,o.Um)(s):e.type.props?e.props=s:e.props=i,e.attrs=i}(e,t,c,n),sn(e,s);const u=c?function(e,n){const t=e.type;e.accessCache=Object.create(null),e.proxy=(0,o.Xl)(new Proxy(e.ctx,Le));const{setup:s}=t;if(s){const t=e.setupContext=s.length>1?function(e){const n=n=>{e.exposed=n||{}};let t;return{get attrs(){return t||(t=function(e){return new Proxy(e.attrs,{get:(n,t)=>((0,o.j)(e,"get","$attrs"),n[t])})}(e))},slots:e.slots,emit:e.emit,expose:n}}(e):null;Wn(e),(0,o.Jd)();const c=r(s,e,0,[e.props,t]);if((0,o.lk)(),Xn(),(0,l.tI)(c)){if(c.then(Xn,Xn),n)return c.then((t=>{nt(e,t,n)})).catch((n=>{i(n,e,0)}));e.asyncDep=c}else nt(e,c,n)}else tt(e,n)}(e,n):void 0;et=!1}(f),f.asyncDep){if(c&&c.registerDep(f,G),!e.el){const e=f.subTree=Un(_n);R(null,e,n,t)}}else G(f,e,n,t,c,u,a)},V=(e,n,t)=>{const o=n.component=e.component;if(function(e,n,t){const{props:o,children:l,component:r}=e,{props:s,children:i,patchFlag:c}=n,u=r.emitsOptions;if(n.dirs||n.transition)return!0;if(!(t&&c>=0))return!(!l&&!i||i&&i.$stable)||o!==s&&(o?!s||L(o,s,u):!!s);if(1024&c)return!0;if(16&c)return o?L(o,s,u):!!s;if(8&c){const e=n.dynamicProps;for(let n=0;nf&&a.splice(n,1)}(o.update),o.update()}else n.el=e.el,o.vnode=n},G=(e,n,t,r,s,i,c)=>{const u=e.effect=new o.qq((()=>{if(e.isMounted){let n,{next:t,bu:o,u:r,parent:u,vnode:a}=e,f=t;mn(e,!1),t?(t.el=a.el,H(e,t,c)):t=a,o&&(0,l.ir)(o),(n=t.props&&t.props.onVnodeBeforeUpdate)&&Gn(n,u,t,a),mn(e,!0);const p=E(e),d=e.subTree;e.subTree=p,C(d,p,g(d.el),ne(d),e,s,i),t.el=p.el,null===f&&function({vnode:e,parent:n},t){for(;n&&n.subTree===e;)(e=n.vnode).el=t,n=n.parent}(e,p.el),r&&dn(r,s),(n=t.props&&t.props.onVnodeUpdated)&&dn((()=>Gn(n,u,t,a)),s)}else{let o;const{el:c,props:u}=n,{bm:a,m:f,parent:p}=e,d=te(n);if(mn(e,!1),a&&(0,l.ir)(a),!d&&(o=u&&u.onVnodeBeforeMount)&&Gn(o,p,n),mn(e,!0),c&&ie){const t=()=>{e.subTree=E(e),ie(c,e.subTree,e,s,null)};d?n.type.__asyncLoader().then((()=>!e.isUnmounted&&t())):t()}else{const o=e.subTree=E(e);C(null,o,t,r,e,s,i),n.el=o.el}if(f&&dn(f,s),!d&&(o=u&&u.onVnodeMounted)){const e=n;dn((()=>Gn(o,p,e)),s)}(256&n.shapeFlag||p&&te(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&dn(e.a,s),e.isMounted=!0,n=t=r=null}}),(()=>y(a)),e.scope),a=e.update=()=>u.run();a.id=e.uid,mn(e,!0),a()},H=(e,n,t)=>{n.component=e;const r=e.vnode.props;e.vnode=n,e.next=null,function(e,n,t,r){const{props:s,attrs:i,vnode:{patchFlag:c}}=e,u=(0,o.IU)(s),[a]=e.propsOptions;let f=!1;if(!(r||c>0)||16&c){let o;Ze(e,n,s,i)&&(f=!0);for(const r in u)n&&((0,l.RI)(n,r)||(o=(0,l.rs)(r))!==r&&(0,l.RI)(n,o))||(a?!t||void 0===t[r]&&void 0===t[o]||(s[r]=We(a,u,r,void 0,e,!0)):delete s[r]);if(i!==u)for(const e in i)n&&(0,l.RI)(n,e)||(delete i[e],f=!0)}else if(8&c){const t=e.vnode.dynamicProps;for(let o=0;o{const u=e&&e.children,a=e?e.shapeFlag:0,f=n.children,{patchFlag:p,shapeFlag:d}=n;if(p>0){if(128&p)return void Z(u,f,t,o,l,r,s,i,c);if(256&p)return void q(u,f,t,o,l,r,s,i,c)}8&d?(16&a&&ee(u,l,r),f!==u&&m(t,f)):16&a?16&d?Z(u,f,t,o,l,r,s,i,c):ee(u,l,r,!0):(8&a&&m(t,""),16&d&&U(f,t,o,l,r,s,i,c))},q=(e,n,t,o,r,s,i,c,u)=>{e=e||l.Z6,n=n||l.Z6;const a=e.length,f=n.length,p=Math.min(a,f);let d;for(d=0;df?ee(e,r,s,!0,!1,p):U(n,t,o,r,s,i,c,u,p)},Z=(e,n,t,o,r,s,i,c,u)=>{let a=0;const f=n.length;let p=e.length-1,d=f-1;for(;a<=p&&a<=d;){const o=e[a],l=n[a]=u?Kn(n[a]):Mn(n[a]);if(!Sn(o,l))break;C(o,l,t,null,r,s,i,c,u),a++}for(;a<=p&&a<=d;){const o=e[p],l=n[d]=u?Kn(n[d]):Mn(n[d]);if(!Sn(o,l))break;C(o,l,t,null,r,s,i,c,u),p--,d--}if(a>p){if(a<=d){const e=d+1,l=ed)for(;a<=p;)X(e[a],r,s,!0),a++;else{const h=a,m=a,g=new Map;for(a=m;a<=d;a++){const e=n[a]=u?Kn(n[a]):Mn(n[a]);null!=e.key&&g.set(e.key,a)}let v,y=0;const _=d-m+1;let b=!1,k=0;const x=new Array(_);for(a=0;a<_;a++)x[a]=0;for(a=h;a<=p;a++){const o=e[a];if(y>=_){X(o,r,s,!0);continue}let l;if(null!=o.key)l=g.get(o.key);else for(v=m;v<=d;v++)if(0===x[v-m]&&Sn(o,n[v])){l=v;break}void 0===l?X(o,r,s,!0):(x[l-m]=a+1,l>=k?k=l:b=!0,C(o,n[l],t,null,r,s,i,c,u),y++)}const F=b?function(e){const n=e.slice(),t=[0];let o,l,r,s,i;const c=e.length;for(o=0;o>1,e[t[i]]0&&(n[o]=t[r-1]),t[r]=o)}}for(r=t.length,s=t[r-1];r-- >0;)t[r]=s,s=n[s];return t}(x):l.Z6;for(v=F.length-1,a=_-1;a>=0;a--){const e=m+a,l=n[e],p=e+1{const{el:s,type:i,transition:c,children:u,shapeFlag:a}=e;if(6&a)W(e.component.subTree,n,o,l);else if(128&a)e.suspense.move(n,o,l);else if(64&a)i.move(e,n,o,re);else if(i!==vn)if(i!==bn)if(2!==l&&1&a&&c)if(0===l)c.beforeEnter(s),t(s,n,o),dn((()=>c.enter(s)),r);else{const{leave:e,delayLeave:l,afterLeave:r}=c,i=()=>t(s,n,o),u=()=>{e(s,(()=>{i(),r&&r()}))};l?l(s,i,u):u()}else t(s,n,o);else(({el:e,anchor:n},o,l)=>{let r;for(;e&&e!==n;)r=v(e),t(e,o,l),e=r;t(n,o,l)})(e,n,o);else{t(s,n,o);for(let e=0;e{const{type:r,props:s,ref:i,children:c,dynamicChildren:u,shapeFlag:a,patchFlag:f,dirs:p}=e;if(null!=i&&pn(i,null,t,e,!0),256&a)return void n.ctx.deactivate(e);const d=1&a&&p,h=!te(e);let m;if(h&&(m=s&&s.onVnodeBeforeUnmount)&&Gn(m,n,e),6&a)z(e.component,t,o);else{if(128&a)return void e.suspense.unmount(t,o);d&&ke(e,null,n,"beforeUnmount"),64&a?e.type.remove(e,n,t,l,re,o):u&&(r!==vn||f>0&&64&f)?ee(u,n,t,!1,!0):(r===vn&&384&f||!l&&16&a)&&ee(c,n,t),o&&Y(e)}(h&&(m=s&&s.onVnodeUnmounted)||d)&&dn((()=>{m&&Gn(m,n,e),d&&ke(e,null,n,"unmounted")}),t)},Y=e=>{const{type:n,el:t,anchor:o,transition:l}=e;if(n===vn)return void Q(t,o);if(n===bn)return void S(e);const r=()=>{s(t),l&&!l.persisted&&l.afterLeave&&l.afterLeave()};if(1&e.shapeFlag&&l&&!l.persisted){const{leave:n,delayLeave:o}=l,s=()=>n(t,r);o?o(e.el,r,s):s()}else r()},Q=(e,n)=>{let t;for(;e!==n;)t=v(e),s(e),e=t;s(n)},z=(e,n,t)=>{const{bum:o,scope:r,update:s,subTree:i,um:c}=e;o&&(0,l.ir)(o),r.stop(),s&&(s.active=!1,X(i,e,n,t)),c&&dn(c,n),dn((()=>{e.isUnmounted=!0}),n),n&&n.pendingBranch&&!n.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===n.pendingId&&(n.deps--,0===n.deps&&n.resolve())},ee=(e,n,t,o=!1,l=!1,r=0)=>{for(let s=r;s6&e.shapeFlag?ne(e.component.subTree):128&e.shapeFlag?e.suspense.next():v(e.anchor||e.el),le=(e,n,t)=>{null==e?n._vnode&&X(n._vnode,null,null,!0):C(n._vnode||null,e,n,null,null,null,t),b(),k(),n._vnode=e},re={p:C,um:X,m:W,r:Y,mt:B,mc:U,pc:N,pbc:$,n:ne,o:e};let se,ie;return n&&([se,ie]=n(re)),{render:le,hydrate:se,createApp:fn(le,se)}}(e)}function mn({effect:e,update:n},t){e.allowRecurse=n.allowRecurse=t}function gn(e,n,t=!1){const o=e.children,r=n.children;if((0,l.kJ)(o)&&(0,l.kJ)(r))for(let e=0;e0?xn||l.Z6:null,kn.pop(),xn=kn[kn.length-1]||null,Fn>0&&xn&&xn.push(e),e}function wn(e,n,t,o,l,r){return Tn(En(e,n,t,o,l,r,!0))}function Rn(e,n,t,o,l){return Tn(Un(e,n,t,o,l,!0))}function On(e){return!!e&&!0===e.__v_isVNode}function Sn(e,n){return e.type===n.type&&e.key===n.key}const An="__vInternal",Jn=({key:e})=>null!=e?e:null,jn=({ref:e,ref_key:n,ref_for:t})=>null!=e?(0,l.HD)(e)||(0,o.dq)(e)||(0,l.mf)(e)?{i:R,r:e,k:n,f:!!t}:e:null;function En(e,n=null,t=null,o=0,r=null,s=(e===vn?0:1),i=!1,c=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:n,key:n&&Jn(n),ref:n&&jn(n),scopeId:O,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:R};return c?(Bn(u,t),128&s&&e.normalize(u)):t&&(u.shapeFlag|=(0,l.HD)(t)?8:16),Fn>0&&!i&&xn&&(u.patchFlag>0||6&s)&&32!==u.patchFlag&&xn.push(u),u}const Un=function(e,n=null,t=null,r=0,s=null,i=!1){if(e&&e!==Ie||(e=_n),On(e)){const o=Pn(e,n,!0);return t&&Bn(o,t),Fn>0&&!i&&xn&&(6&o.shapeFlag?xn[xn.indexOf(e)]=o:xn.push(o)),o.patchFlag|=-2,o}if(c=e,(0,l.mf)(c)&&"__vccOpts"in c&&(e=e.__vccOpts),n){n=function(e){return e?(0,o.X3)(e)||An in e?(0,l.l7)({},e):e:null}(n);let{class:e,style:t}=n;e&&!(0,l.HD)(e)&&(n.class=(0,l.C_)(e)),(0,l.Kn)(t)&&((0,o.X3)(t)&&!(0,l.kJ)(t)&&(t=(0,l.l7)({},t)),n.style=(0,l.j5)(t))}var c;return En(e,n,t,r,s,(0,l.HD)(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:(0,l.Kn)(e)?4:(0,l.mf)(e)?2:0,i,!0)};function Pn(e,n,t=!1){const{props:o,ref:r,patchFlag:s,children:i}=e,c=n?Vn(o||{},n):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Jn(c),ref:n&&n.ref?t&&r?(0,l.kJ)(r)?r.concat(jn(n)):[r,jn(n)]:jn(n):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:n&&e.type!==vn?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Pn(e.ssContent),ssFallback:e.ssFallback&&Pn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ln(e=" ",n=0){return Un(yn,null,e,n)}function $n(e,n){const t=Un(bn,null,e);return t.staticCount=n,t}function Dn(e="",n=!1){return n?(Cn(),Rn(_n,null,e)):Un(_n,null,e)}function Mn(e){return null==e||"boolean"==typeof e?Un(_n):(0,l.kJ)(e)?Un(vn,null,e.slice()):"object"==typeof e?Kn(e):Un(yn,null,String(e))}function Kn(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Pn(e)}function Bn(e,n){let t=0;const{shapeFlag:o}=e;if(null==n)n=null;else if((0,l.kJ)(n))t=16;else if("object"==typeof n){if(65&o){const t=n.default;return void(t&&(t._c&&(t._d=!1),Bn(e,t()),t._c&&(t._d=!0)))}{t=32;const o=n._;o||An in n?3===o&&R&&(1===R.slots._?n._=1:(n._=2,e.patchFlag|=1024)):n._ctx=R}}else(0,l.mf)(n)?(n={default:n,_ctx:R},t=32):(n=String(n),64&o?(t=16,n=[Ln(n)]):t=8);e.children=n,e.shapeFlag|=t}function Vn(...e){const n={};for(let t=0;tqn||R,Wn=e=>{qn=e,e.scope.on()},Xn=()=>{qn&&qn.scope.off(),qn=null};function Yn(e){return 4&e.vnode.shapeFlag}let Qn,zn,et=!1;function nt(e,n,t){(0,l.mf)(n)?e.type.__ssrInlineRender?e.ssrRender=n:e.render=n:(0,l.Kn)(n)&&(e.setupState=(0,o.WL)(n)),tt(e,t)}function tt(e,n,t){const r=e.type;if(!e.render){if(!n&&Qn&&!r.render){const n=r.template||Ke(e).template;if(n){const{isCustomElement:t,compilerOptions:o}=e.appContext.config,{delimiters:s,compilerOptions:i}=r,c=(0,l.l7)((0,l.l7)({isCustomElement:t,delimiters:s},o),i);r.render=Qn(n,c)}}e.render=r.render||l.dG,zn&&zn(e)}Wn(e),(0,o.Jd)(),function(e){const n=Ke(e),t=e.proxy,r=e.ctx;$e=!1,n.beforeCreate&&De(n.beforeCreate,e,"bc");const{data:s,computed:i,methods:c,watch:u,provide:a,inject:f,created:p,beforeMount:d,mounted:h,beforeUpdate:m,updated:g,activated:v,deactivated:y,beforeDestroy:_,beforeUnmount:b,destroyed:k,unmounted:x,render:C,renderTracked:F,renderTriggered:I,errorCaptured:T,serverPrefetch:w,expose:R,inheritAttrs:O,components:S,directives:A,filters:J}=n;if(f&&function(e,n,t=l.dG,r=!1){(0,l.kJ)(e)&&(e=He(e));for(const t in e){const s=e[t];let i;i=(0,l.Kn)(s)?"default"in s?D(s.from||t,s.default,!0):D(s.from||t):D(s),(0,o.dq)(i)&&r?Object.defineProperty(n,t,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):n[t]=i}}(f,r,null,e.appContext.config.unwrapInjectedRef),c)for(const e in c){const n=c[e];(0,l.mf)(n)&&(r[e]=n.bind(t))}if(s){const n=s.call(t,t);(0,l.Kn)(n)&&(e.data=(0,o.qj)(n))}if($e=!0,i)for(const e in i){const n=i[e],o=(0,l.mf)(n)?n.bind(t,t):(0,l.mf)(n.get)?n.get.bind(t,t):l.dG,s=!(0,l.mf)(n)&&(0,l.mf)(n.set)?n.set.bind(t):l.dG,c=lt({get:o,set:s});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(u)for(const e in u)Me(u[e],r,t,e);if(a){const e=(0,l.mf)(a)?a.call(t):a;Reflect.ownKeys(e).forEach((n=>{$(n,e[n])}))}function j(e,n){(0,l.kJ)(n)?n.forEach((n=>e(n.bind(t)))):n&&e(n.bind(t))}if(p&&De(p,e,"c"),j(ae,d),j(fe,h),j(pe,m),j(de,g),j(le,v),j(re,y),j(_e,T),j(ye,F),j(ve,I),j(he,b),j(me,x),j(ge,w),(0,l.kJ)(R))if(R.length){const n=e.exposed||(e.exposed={});R.forEach((e=>{Object.defineProperty(n,e,{get:()=>t[e],set:n=>t[e]=n})}))}else e.exposed||(e.exposed={});C&&e.render===l.dG&&(e.render=C),null!=O&&(e.inheritAttrs=O),S&&(e.components=S),A&&(e.directives=A)}(e),(0,o.lk)(),Xn()}function ot(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,o.WL)((0,o.Xl)(e.exposed)),{get:(n,t)=>t in n?n[t]:t in Ue?Ue[t](e):void 0,has:(e,n)=>n in e||n in Ue}))}const lt=(e,n)=>(0,o.Fl)(e,n,et);function rt(e,n,t){const o=arguments.length;return 2===o?(0,l.Kn)(n)&&!(0,l.kJ)(n)?On(n)?Un(e,null,[n]):Un(e,n):Un(e,null,n):(o>3?t=Array.prototype.slice.call(arguments,2):3===o&&On(t)&&(t=[t]),Un(e,n,t))}const st=Symbol(""),it=()=>D(st),ct="3.2.47"}}]); +//# sourceMappingURL=252.2482d7ce.js.map \ No newline at end of file diff --git a/_static/kpm/js/252.2482d7ce.js.map b/_static/kpm/js/252.2482d7ce.js.map new file mode 100644 index 00000000..bc5eb052 --- /dev/null +++ b/_static/kpm/js/252.2482d7ce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/252.2482d7ce.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js"],"sourcesContent":["import { pauseTracking, resetTracking, isRef, toRaw, getCurrentScope, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isRegExp, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n/**\n * @internal\n */\nfunction assertNumber(val, type) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n if (val === undefined) {\n return;\n }\n else if (typeof val !== 'number') {\n warn(`${type} is not a valid number - ` + `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`${type} is NaN - ` + 'the duration expression might be incorrect.');\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled ``, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : undefined;\n if ((process.env.NODE_ENV !== 'production')) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production') ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' });\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production') ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' });\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = getCurrentScope() === (currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope) ? currentInstance : null;\n // const instance = currentInstance\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn(' can only be used on a single element or component. ' +\n 'Use for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of , we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of