diff --git a/Makefile b/Makefile index 3356855c1..7ba4fdb04 100644 --- a/Makefile +++ b/Makefile @@ -6,156 +6,189 @@ SHELL := /bin/bash TOPDIR := . INCDIRROOT := $(TOPDIR)/rtl/include SCRIPTROOT := $(TOPDIR)/scripts -WAVEROOT := $(TOPDIR)/waves +WAVEROOT := $(TOPDIR)/waves MODROOT := $(TOPDIR)/rtl/modules TBROOT := $(TOPDIR)/tb UVMTESTROOT := $(TBROOT)/uvm UNITTESTROOT := $(TBROOT)/unit SCRATCH := work +# Include directory setup INCFLAGS := $(shell find $(INCDIRROOT) -type d -print0 2>/dev/null | xargs -0 -I{} echo +incdir+{}) -PKG_SRCS := $(shell find $(TOPDIR)/rtl -type f \( -name "*_pkg.sv" -o -name "pkg_*.sv" \) 2>/dev/null | sort) - -RTL_SRCS := $(shell \ - find $(INCDIRROOT) $(MODROOT) -type f -name "*.sv" \ - ! -name "*_pkg.sv" ! -name "pkg_*.sv" 2>/dev/null | sort) - VLIB ?= vlib VLOG ?= vlog VSIM ?= vsim GUI ?= OFF -.PHONY: setup lint test clean_lib +# --- Coverage Controls --- +COVERAGE ?= OFF # set to ON to enable coverage +VLOG_FLAGS ?= + +ifeq ($(COVERAGE),ON) + # Questa coverage switches + VLOG_FLAGS += -cover bcesft +endif + +# --- Target-Specific Variable Mappings --- +# Define specific DUT files for specific tests here +lane_sequencer.sim lane_sequencer.wav: dut := lane_sequencer.sv,lane.sv +veggie.sim veggie.wav: dut := veggie.sv + +# For lane, only list "roots"; siblings will be auto-included +lane.sim lane.wav: dut := lane.sv,lane_fu_pt.sv,sqrt_bf16.sv,mul_bf16.sv,add_bf16.sv + +# --- Pattern Rules for Module Testing --- +.PHONY: %.sim %.wav + +%.sim: + @$(MAKE) test tb_file=$*_tb.sv GUI=OFF dut=$(dut) + +%.wav: + @$(MAKE) test tb_file=$*_tb.sv GUI=ON dut=$(dut) + +# --- Custom Test Shortcuts --- +.PHONY: test_lane_sequencer test_veggie test_lane cov_gsau + +test_lane_sequencer: + @$(MAKE) lane_sequencer.sim + +test_veggie: + @$(MAKE) veggie.sim + +test_lane: + @$(MAKE) lane.sim + +# Example dedicated coverage compile for another design tree +cov_gsau: + $(VLOG) $(VLOG_FLAGS) \ + ./src/modules/simple_systolic_model.sv \ + ./src/include/gsau_control_unit_if.vh \ + ./src/testbench/gsau_control_unit_tb.sv \ + ./src/modules/gsau_control_unit.sv \ + ./src/modules/sync_fifo.sv + +# --- Targets --- + +.PHONY: setup lint test clean setup: mkdir -p $(SCRATCH) python3 scripts/setup.py @echo "[setup] done" -# Usage: make lint folder=/sub/dir [file=name.sv[,name2.sv,...]] [include=/foo/bar,/baz/qux ...] -## Example: -## make lint folder=/memory/scratchpad -### -> `vlogs` all the files under rtl/include/memory/scratchpad and rtl/modules/memory/scratchpad -## make lint folder=/memory/scratchpad include=/network/xbar -### -> `vlogs` all the files under rtl/include/memory/scratchpad and rtl/modules/memory/scratchpad, and adds all the include paths under rtl/modules/network/xbar and rtl/include/network/xbar -## make lint folder=/memory/scratchpad file=scpad_cntrl.sv,tail.sv -### -> `vlogs` the files under rtl/include/memory/scratchpad and only the specified files under it lint: - @if [ -z "$(folder)" ]; then - echo "Usage: make lint folder=/sub/dir [file=name.sv[,name2.sv,...]] [include=/foo/bar,/baz/qux ...]"; exit 1; - fi; - - SEARCH_FIRST_IN_INCLUDE="$(INCDIRROOT)$(folder)"; - [ -d "$$SEARCH_FIRST_IN_INCLUDE" ] || { echo "[lint] SEARCH_FIRST_IN_INCLUDE not found: $$SEARCH_FIRST_IN_INCLUDE"; exit 2; }; - - SRCS=$$(find "$$SEARCH_FIRST_IN_INCLUDE" -type f -name '*.sv' -print 2>/dev/null | sort); - [ -n "$$SRCS" ] || { echo "[lint] No .sv files under $$SEARCH_FIRST_IN_INCLUDE"; exit 4; }; - - NOW_SEARCH_IN_MODULES="$(MODROOT)$(folder)"; - - [ -d "$$NOW_SEARCH_IN_MODULES" ] || { echo "[lint] NOW_SEARCH_IN_MODULES not found: $$NOW_SEARCH_IN_MODULES"; exit 2; }; - - if [ -n "$(file)" ]; then - for f in $$(echo "$(file)" | tr ',' ' '); do - P="$$NOW_SEARCH_IN_MODULES/$$f"; - [ -f "$$P" ] || { echo "[lint] Not found: $$P"; exit 3; }; - SRCS="$$SRCS $$P"; - done; - else - SRCS=$$(find "$$NOW_SEARCH_IN_MODULES" -type f -name '*.sv' -print 2>/dev/null | sort); - [ -n "$$SRCS" ] || { echo "[lint] No .sv files under $$NOW_SEARCH_IN_MODULES"; exit 4; }; - fi; - - PKGS=$$(printf '%s\n' $$SRCS | grep -E '_pkg\.sv$$' || true); - OTHERS=$$(printf '%s\n' $$SRCS | grep -Ev '_pkg\.sv$$' || true); - - BASE_INCS="+incdir+$(INCDIRROOT)"; - MOD_INCS=$$(find "$$NOW_SEARCH_IN_MODULES" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); - INC_INCS=$$(find "$(INCDIRROOT)$(folder)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); - - EXTRA_INCS=""; - if [ -n "$(include)" ]; then - for p in $$(echo "$(include)" | tr ',' ' '); do - [ -d "$(MODROOT)$$p" ] && EXTRA_INCS="$$EXTRA_INCS $$(find "$(MODROOT)$$p" -type d -print 2>/dev/null | sed 's/^/+incdir+/')"; - [ -d "$(INCDIRROOT)$$p" ] && EXTRA_INCS="$$EXTRA_INCS $$(find "$(INCDIRROOT)$$p" -type d -print 2>/dev/null | sed 's/^/+incdir+/')"; - done; - fi; - - ORDERED_SRCS="$$PKGS $$OTHERS"; - INCFLAGS="$$BASE_INCS $$MOD_INCS $$INC_INCS $$EXTRA_INCS"; - - echo "[lint] compiling (in-order):"; - printf ' %s\n' $$ORDERED_SRCS; - - $(VLOG) -sv -mfcu -work work +acc $$INCFLAGS $$ORDERED_SRCS; + @if [ -z "$(folder)" ]; then \ + echo "Usage: make lint folder=/sub/dir [file=name.sv] [include=/foo]"; exit 1; \ + fi; \ + SEARCH_FIRST_IN_INCLUDE="$(INCDIRROOT)$(folder)"; \ + SRCS=$$(find "$$SEARCH_FIRST_IN_INCLUDE" -type f -name '*.sv' -print 2>/dev/null | sort); \ + NOW_SEARCH_IN_MODULES="$(MODROOT)$(folder)"; \ + if [ -n "$(file)" ]; then \ + for f in $$(echo "$(file)" | tr ',' ' '); do \ + P="$$NOW_SEARCH_IN_MODULES/$$f"; \ + [ -f "$$P" ] && SRCS="$$SRCS $$P"; \ + done; \ + else \ + SRCS=$$(find "$$NOW_SEARCH_IN_MODULES" -type f -name '*.sv' -print 2>/dev/null | sort); \ + fi; \ + PKGS=$$(printf '%s\n' $$SRCS | grep -E '_pkg\.sv$$' || true); \ + OTHERS=$$(printf '%s\n' $$SRCS | grep -Ev '_pkg\.sv$$' || true); \ + BASE_INCS="+incdir+$(INCDIRROOT)"; \ + MOD_INCS=$$(find "$$NOW_SEARCH_IN_MODULES" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ + INC_INCS=$$(find "$(INCDIRROOT)$(folder)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ + echo "[lint] compiling..."; \ + $(VLOG) $(VLOG_FLAGS) -sv -mfcu -work work +acc $$BASE_INCS $$MOD_INCS $$INC_INCS $$PKGS $$OTHERS; \ echo "[lint] done" -# Similar to above! -## Example: -## make test folder=/common/xbar tb_file=batcher_xbar_tb.sv test: - @if [ -z "$(folder)" ] || [ -z "$(tb_file)" ]; then \ - echo "Usage: make $@ folder=/sub/dir tb_file=tb_top.sv [include=/foo,/bar]"; exit 1; \ + @if [ -z "$(tb_file)" ]; then \ + echo "Usage: make $@ tb_file=tb_top.sv [folder=/sub/dir] [dut=file1.sv,file2.sv] [GUI=ON/OFF]"; exit 1; \ fi; \ - - [ -d "$(INCDIRROOT)$(folder)" ] || { echo "[$@] Not found: $(INCDIRROOT)$(folder)"; exit 2; }; \ - [ -d "$(MODROOT)$(folder)" ] || { echo "[$@] Not found: $(MODROOT)$(folder)"; exit 2; }; \ - [ -d "$(UNITTESTROOT)$(folder)" ] || { echo "[$@] Not found: $(UNITTESTROOT)$(folder)"; exit 2; }; \ - \ - INCSRCS=$$(find "$(INCDIRROOT)$(folder)" -type f -name '*.sv' -print 2>/dev/null | sort); \ - - MODSRCS=$$(if [ -n "$(file)" ]; then \ - SR=""; \ - for f in $$(echo "$(file)" | tr ',' ' '); do \ - P="$(MODROOT)$(folder)/$$f"; [ -f "$$P" ] || { echo "[$@] Not found: $$P"; exit 3; }; SR="$$SR $$P"; \ - done; echo "$$SR"; \ - else \ - find "$(MODROOT)$(folder)" -type f -name '*.sv' -print 2>/dev/null | sort; \ - fi); \ - TBSRCS=$$(find "$(UNITTESTROOT)$(folder)" -type f -name '*.sv' -print 2>/dev/null | sort); \ - [ -n "$$INCSRCS" ] || { echo "[$@] No .sv under $(INCDIRROOT)$(folder)"; exit 4; }; \ - [ -n "$$MODSRCS" ] || { echo "[$@] No .sv under $(MODROOT)$(folder)"; exit 4; }; \ - [ -n "$$TBSRCS" ] || { echo "[$@] No .sv under $(UNITTESTROOT)$(folder)"; exit 4; }; \ \ - - ALLSRCS="$$INCSRCS $$MODSRCS $$TBSRCS"; \ - PKGS=$$(printf '%s\n' $$ALLSRCS | grep -E '_pkg\.sv$$' || true); \ - OTHERS=$$(printf '%s\n' $$ALLSRCS | grep -Ev '_pkg\.sv$$' || true); \ - ORDERED_SRCS="$$PKGS $$OTHERS"; \ - - BASE_INCS="+incdir+$(INCDIRROOT) +incdir+$(MODROOT) +incdir+$(UNITTESTROOT)"; \ - INCDIRS_INC=$$(find "$(INCDIRROOT)$(folder)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ - INCDIRS_MOD=$$(find "$(MODROOT)$(folder)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ - INCDIRS_TB=$$(find "$(UNITTESTROOT)$(folder)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ - - EXTRA_INCS=""; \ - if [ -n "$(include)" ]; then \ - for p in $$(echo "$(include)" | tr ',' ' '); do \ - [ -d "$(INCDIRROOT)$$p" ] && EXTRA_INCS="$$EXTRA_INCS $$(find "$(INCDIRROOT)$$p" -type d -print 2>/dev/null | sed 's/^/+incdir+/')"; \ - [ -d "$(MODROOT)$$p" ] && EXTRA_INCS="$$EXTRA_INCS $$(find "$(MODROOT)$$p" -type d -print 2>/dev/null | sed 's/^/+incdir+/')"; \ - [ -d "$(UNITTESTROOT)$$p" ] && EXTRA_INCS="$$EXTRA_INCS $$(find "$(UNITTESTROOT)$$p" -type d -print 2>/dev/null | sed 's/^/+incdir+/')"; \ - done; \ + # 1. Locate Testbench File \ + TB_CAND=""; \ + if [ -n "$(folder)" ]; then \ + TB_CAND="$(UNITTESTROOT)$(folder)/$(tb_file)"; \ + [ -f "$$TB_CAND" ] || TB_CAND=""; \ fi; \ - INCFLAGS="$$BASE_INCS $$INCDIRS_INC $$INCDIRS_MOD $$INCDIRS_TB $$EXTRA_INCS"; \ - - TB_CAND="$(UNITTESTROOT)$(folder)/$(tb_file)"; \ - [ -f "$$TB_CAND" ] || { echo "[$@] tb_file not found: $$TB_CAND"; exit 3; }; \ + if [ -z "$$TB_CAND" ]; then \ + TB_CAND=$$(find "$(UNITTESTROOT)" -name "$(tb_file)" -type f | head -1); \ + [ -f "$$TB_CAND" ] || { echo "[$@] tb_file not found: $(tb_file)"; exit 3; }; \ + fi; \ + TB_DIR=$$(dirname "$$TB_CAND"); \ TB_BASENAME=$$(basename "$$TB_CAND"); \ TB_TOP="$${TB_BASENAME%.*}"; \ - - [ -d work ] || $(VLIB) work; \ - echo "[$@] compiling (in-order):"; printf ' %s\n' $$ORDERED_SRCS; \ - $(VLOG) -sv -mfcu -work work +acc $$INCFLAGS $$ORDERED_SRCS; \ - - @if [ "$(GUI)" = "ON" ]; then \ - echo "[$@] launching vsim GUI on work.$$TB_TOP"; \ - $(VSIM) -coverage -voptargs="+acc" work.$$TB_TOP -do "view objects; do $$WAVEROOT/$$TB_TOP.do; run -all;" -onfinish stop; \ + TB_RELPATH=$$(echo "$$TB_DIR" | sed "s|$(UNITTESTROOT)||"); \ + \ + # 2. Identify Include Sources and PACKAGES \ + INCSRCS=""; \ + if [ -n "$$TB_RELPATH" ] && [ "$$TB_RELPATH" != "/" ]; then \ + INCSRCS=$$(find "$(INCDIRROOT)/common" "$(INCDIRROOT)$$TB_RELPATH" -type f \( -name '*.sv' -o -name '*_pkg.sv' -o -name '*_pkg.vh' \) -print 2>/dev/null | sort); \ else \ - echo "[$@] launching vsim on work.$$TB_TOP"; \ - $(VSIM) -coverage -c -voptargs="+acc" work.$$TB_TOP -do "run -all"; \ - fi - + INCSRCS=$$(find "$(INCDIRROOT)" -type f \( -name '*.sv' -o -name '*_pkg.sv' -o -name '*_pkg.vh' \) -print 2>/dev/null | sort); \ + fi; \ + PKGS=$$(printf '%s\n' $$INCSRCS | grep -E '_pkg\.(sv|vh)$$' || true); \ + INC_OTHERS=$$(printf '%s\n' $$INCSRCS | grep -Ev '_pkg\.(sv|vh)$$' || true); \ + \ + # 3. Identify Module Sources \ + MODSRCS=""; \ + MOD_SEARCH_PATH="$(MODROOT)$$TB_RELPATH"; \ + \ + # For vector unit tests (tb/unit/vector/*), compile the whole vector + sqrt + adders + multipliers + dividers + general subsystem \ + if [ "$$TB_RELPATH" = "/vector" ]; then \ + echo "[$@] vector TB detected -> compiling all vector + sqrt + adders + multipliers + dividers + general modules"; \ + MOD_SEARCH_PATH="$(MODROOT)/vector \ + $(MODROOT)/common/arithmetic/sqrt \ + $(MODROOT)/common/arithmetic/adders \ + $(MODROOT)/common/arithmetic/mutlipliers \ + $(MODROOT)/common/arithmetic/dividers \ + $(MODROOT)/common/general"; \ + MODSRCS=$$(find $$MOD_SEARCH_PATH -type f -name '*.sv' ! -name '*_pkg.sv' -print 2>/dev/null | sort); \ + else \ + if [ -n "$(dut)" ]; then \ + echo "[$@] compiling specific DUT files: $(dut)"; \ + for f in $$(echo "$(dut)" | tr ',' ' '); do \ + FOUND=$$(find $$MOD_SEARCH_PATH -name "$$f" -print); \ + [ -n "$$FOUND" ] || { echo "Error: DUT file $$f not found in $$MOD_SEARCH_PATH"; exit 1; }; \ + MODSRCS="$$MODSRCS $$FOUND"; \ + done; \ + MODSRCS=$$(printf '%s\n' $$MODSRCS | sed '/^$$/d' | sort -u); \ + else \ + echo "[$@] compiling all modules in: $$MOD_SEARCH_PATH"; \ + MODSRCS=$$(find $$MOD_SEARCH_PATH -type f -name '*.sv' ! -name '*_pkg.sv' -print 2>/dev/null | sort); \ + fi; \ + fi; \ + \ + # 4. Testbench Sources \ + TBSRCS="$$TB_CAND"; \ + \ + # 5. Build final compilation order \ + ORDERED_SRCS="$$PKGS $$INC_OTHERS $$MODSRCS $$TBSRCS"; \ + \ + # 6. Setup Includes \ + BASE_INCS="+incdir+$(INCDIRROOT) +incdir+$(MODROOT) +incdir+$(UNITTESTROOT)"; \ + INCDIRS_ALL=$$(find "$(INCDIRROOT)" "$(MODROOT)" "$(UNITTESTROOT)" -type d -print 2>/dev/null | sed 's/^/+incdir+/'); \ + ALL_INCS="$$BASE_INCS $$INCDIRS_ALL"; \ + \ + echo "[$@] Running generic simulation script..."; \ + if [ "$(GUI)" = "ON" ]; then \ + $(VSIM) -do "set batch_mode 0; \ + set WAVE_ROOT $(WAVEROOT); \ + set TB_NAME $$TB_TOP; \ + set SRCS {$$ORDERED_SRCS}; \ + set INCS {$$ALL_INCS}; \ + set VLOG_FLAGS {$(VLOG_FLAGS)}; \ + do $(SCRIPTROOT)/run_sim.tcl"; \ + else \ + $(VSIM) -c -do "set batch_mode 1; \ + set WAVE_ROOT $(WAVEROOT); \ + set TB_NAME $$TB_TOP; \ + set SRCS {$$ORDERED_SRCS}; \ + set INCS {$$ALL_INCS}; \ + set VLOG_FLAGS {$(VLOG_FLAGS)}; \ + do $(SCRIPTROOT)/run_sim.tcl"; \ + fi + clean: rm -rf $(SCRATCH) transcript vsim.wlf work modelsim.ini - diff --git a/covhtmlreport/assertionsDirectives.html b/covhtmlreport/assertionsDirectives.html new file mode 100644 index 000000000..98784ef09 --- /dev/null +++ b/covhtmlreport/assertionsDirectives.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/blockCoverage.html b/covhtmlreport/blockCoverage.html new file mode 100644 index 000000000..568332627 --- /dev/null +++ b/covhtmlreport/blockCoverage.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/branches.html b/covhtmlreport/branches.html new file mode 100644 index 000000000..b0b5ea493 --- /dev/null +++ b/covhtmlreport/branches.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/condExp.html b/covhtmlreport/condExp.html new file mode 100644 index 000000000..14b3cd20b --- /dev/null +++ b/covhtmlreport/condExp.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/covSummary.html b/covhtmlreport/covSummary.html new file mode 100644 index 000000000..95ce66658 --- /dev/null +++ b/covhtmlreport/covSummary.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/css/ag-grid-theme.css b/covhtmlreport/css/ag-grid-theme.css new file mode 100644 index 000000000..90e15ebb5 --- /dev/null +++ b/covhtmlreport/css/ag-grid-theme.css @@ -0,0 +1,479 @@ +/* +- todo { +- loading overlay colors { +- rich select colors { + */ + .ag-icon:not(.ag-faded) { + opacity: 0.8; } + + .ag-questa { + line-height: 1.4; + font-family: Calibri, "Segoe UI", Thonburi, Arial, Verdana, sans-serif; + font-size: 10pt; + color: #222; + /* this is for the rowGroupPanel, that appears along the top of the grid */ + /* this is for the column drops that appear in the toolPanel */ } + .ag-questa .ag-numeric-cell { + text-align: right; } + .ag-questa .ag-header-cell-label { + display: flex; } + .ag-questa .ag-header-cell-label > span { + float: left; } + .ag-questa .ag-header-cell-label .ag-header-icon { + margin-top: 2px; + margin-left: 4px; } + .ag-questa .ag-header-cell-label .ag-header-cell-text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + .ag-questa .ag-numeric-header .ag-header-cell-label { + flex-direction: row-reverse; } + .ag-questa .ag-numeric-header .ag-header-cell-menu-button { + float: left; } + .ag-questa .ag-numeric-header .ag-header-cell-label { + width: calc(100% - 12px); + float: right; } + .ag-questa .ag-numeric-header .ag-header-cell-label > span { + float: right; } + .ag-questa .ag-header-cell-resize { + position: absolute; + right: 0; } + .ag-questa .ag-rtl .ag-header-cell-resize { + position: absolute; + left: 0; + right: auto; } + .ag-questa img { + vertical-align: middle; + border: 0; } + .ag-questa .ag-root { + border: 1px solid #2b6da5; } + .ag-questa .ag-cell-data-changed { + background-color: #cec; } + .ag-questa .ag-cell-data-changed-animation { + background-color: transparent; + transition: background-color 1s; } + .ag-questa .ag-cell-not-inline-editing { + padding: 2px; + /* compensate for the transparent borders; */ + padding-left: 4px; } + .ag-questa .ag-cell-range-selected-1:not(.ag-cell-focus) { + background-color: rgba(120, 120, 120, 0.4); } + .ag-questa .ag-cell-range-selected-2:not(.ag-cell-focus) { + background-color: rgba(80, 80, 80, 0.4); } + .ag-questa .ag-cell-range-selected-3:not(.ag-cell-focus) { + background-color: rgba(40, 40, 40, 0.4); } + .ag-questa .ag-cell-range-selected-4:not(.ag-cell-focus) { + background-color: rgba(0, 0, 0, 0.4); } + .ag-questa .ag-cell-focus { + border: 2px solid #217346; } + /* .ag-questa .ag-cell-no-focus { + border-top: 2px solid transparent; + border-bottom: 1px dotted #9bc2e6; } + .ag-questa .ag-ltr .ag-cell-no-focus { + border-right: 1px dotted #9bc2e6; + border-left: 2px solid transparent; } + .ag-questa .ag-rtl .ag-cell-no-focus { + border-right: 2px solid transparent; + border-left: 1px dotted #9bc2e6; } */ + .ag-questa .ag-rtl .ag-cell-first-right-pinned { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-ltr .ag-cell-first-right-pinned { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-rtl .ag-cell-last-left-pinned { + border-right: 1px solid #9bc2e6; } + .ag-questa .ag-ltr .ag-cell-last-left-pinned { + border-right: 1px solid #9bc2e6; } + .ag-questa .ag-cell-highlight { + border: 1px solid darkgreen; } + .ag-questa .ag-cell-highlight-animation { + transition: border 1s; } + .ag-questa .ag-value-change-delta { + padding-right: 2px; } + .ag-questa .ag-value-change-delta-up { + color: darkgreen; } + .ag-questa .ag-value-change-delta-down { + color: darkred; } + .ag-questa .ag-value-change-value { + background-color: transparent; + border-radius: 1px; + padding-left: 1px; + padding-right: 1px; + transition: background-color 1s; } + .ag-questa .ag-value-change-value-highlight { + background-color: #cec; + transition: background-color 0.1s; } + .ag-questa .ag-rich-select { + font-size: 14px; + border: 1px solid #9bc2e6; + background-color: white; } + .ag-questa .ag-rich-select-value { + padding: 2px; } + .ag-questa .ag-rich-select-list { + border-top: 1px solid #d3d3d3; } + .ag-questa .ag-rich-select-row { + padding: 2px; } + .ag-questa .ag-rich-select-row-selected { + background-color: #c7c7c7; } + .ag-questa .ag-large-text { + border: 1px solid #9bc2e6; } + .ag-questa .ag-header-select-all, .ag-questa .ag-header-cell-menu-button { + margin-top: 3px; + line-height: 1rem; } + .ag-questa .ag-header-select-all { + padding-right: 4px; } + .ag-questa .ag-filter-header-container > label { + margin-bottom: 0; } + .ag-questa .ag-header-cell { + padding: 2px; + padding-top: 4px; } + .ag-questa .ag-header { + color: #e0e0e0; + background: #2e6da4; + border-bottom: 1px solid black; + font-weight: normal; + } + .ag-questa .ag-header-icon { + color: #fff; + stroke: none; + fill: #fff; } + .ag-questa .ag-filter-icon { + display: inline-block; } + .ag-questa .ag-sort-ascending-icon:empty { + display: inline-block; + width: 12px; + height: 12px; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik01IDNoMnY5SDV6Ii8+PHBhdGggZD0iTTguOTkzIDUuMlYzLjQ5M2gtNnY2SDQuN1Y1LjJoNC4yOTN6IiBpZD0iYiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iI0Q4RDhEOCIgeGxpbms6aHJlZj0iI2EiLz48cGF0aCBzdHJva2U9IiMwMDAiIGQ9Ik01LjUgMy41aDF2OGgtMXoiLz48ZyB0cmFuc2Zvcm09InJvdGF0ZSg0NSA1Ljk5MyA2LjQ5MykiPjx1c2UgZmlsbD0iI0Q4RDhEOCIgeGxpbms6aHJlZj0iI2IiLz48cGF0aCBzdHJva2U9IiMwMDAiIGQ9Ik04LjQ5MyA0Ljd2LS43MDdoLTV2NUg0LjJWNC43aDQuMjkzeiIvPjwvZz48L2c+PC9zdmc+) center no-repeat; + background-size: 12px 12px; + filter: "initial"; } + .ag-questa .ag-sort-descending-icon:empty { + display: inline-block; + width: 12px; + height: 12px; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik01IDJoMnY5SDV6Ii8+PHBhdGggZD0iTTguOTkzIDYuMVY0LjM5M2gtNnY2SDQuN1Y2LjFoNC4yOTN6IiBpZD0iYiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iI0Q4RDhEOCIgeGxpbms6aHJlZj0iI2EiLz48cGF0aCBzdHJva2U9IiMwMDAiIGQ9Ik01LjUgMi41aDF2OGgtMXoiLz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgtMTM1IDUuOTkzIDcuMzkzKSI+PHVzZSBmaWxsPSIjRDhEOEQ4IiB4bGluazpocmVmPSIjYiIvPjxwYXRoIHN0cm9rZT0iIzAwMCIgZD0iTTguNDkzIDUuNnYtLjcwN2gtNXY1SDQuMlY1LjZoNC4yOTN6Ii8+PC9nPjwvZz48L3N2Zz4=) center no-repeat; + background-size: 12px 12px; + filter: "initial"; } + .ag-questa .ag-sort-none-icon:empty { + display: inline-block; + width: 12px; + height: 12px; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik01IDNoMnY2SDV6Ii8+PHBhdGggZD0iTTguMTQ2IDguMTgyVjYuNDc1aC01djVoMS43MDhWOC4xODJoMy4yOTJ6IiBpZD0iYiIvPjxwYXRoIGQ9Ik04LjUgMi45MTRWMS4yMDdoLTV2NWgxLjcwN1YyLjkxNEg4LjV6IiBpZD0iYyIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjx1c2UgZmlsbD0iI0Q4RDhEOCIgeGxpbms6aHJlZj0iI2EiLz48cGF0aCBzdHJva2U9IiMwMDAiIGQ9Ik01LjUgMy41aDF2NWgtMXoiLz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgtMTM1IDUuNjQ2IDguNDc1KSI+PHVzZSBmaWxsPSIjRDhEOEQ4IiB4bGluazpocmVmPSIjYiIvPjxwYXRoIHN0cm9rZT0iIzAwMCIgZD0iTTcuNjQ2IDcuNjgydi0uNzA3aC00djRoLjcwOFY3LjY4MmgzLjI5MnoiLz48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNiAzLjcwNykiPjx1c2UgZmlsbD0iI0Q4RDhEOCIgeGxpbms6aHJlZj0iI2MiLz48cGF0aCBzdHJva2U9IiMwMDAiIGQ9Ik04IDIuNDE0di0uNzA3SDR2NGguNzA3VjIuNDE0SDh6Ii8+PC9nPjwvZz48L3N2Zz4=) center no-repeat; + background-size: 12px 12px; + filter: "initial"; } + .ag-questa .ag-layout-for-print .ag-header-container { + background: #5B9BD5; + border-bottom: 1px solid #9bc2e6; } + .ag-questa .ag-ltr .ag-header-cell { + border-right: 1px solid #4585ba; } + .ag-questa .ag-rtl .ag-header-cell { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-header-cell-moving .ag-header-cell-label { + opacity: 0.5; } + .ag-questa .ag-header-cell-moving { + background-color: #bebebe; } + .ag-questa .ag-ltr .ag-header-group-cell { + border-right: 1px solid #9bc2e6; } + .ag-questa .ag-rtl .ag-header-group-cell { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-header-group-cell-with-group { + border-bottom: 1px solid #9bc2e6; } + .ag-questa .ag-header-group-cell-label { + padding: 2px; + padding-top: 4px; } + .ag-questa .ag-rtl .ag-header-group-text { + margin-left: 2px; } + .ag-questa .ag-ltr .ag-header-group-text { + margin-right: 2px; } + .ag-questa .ag-header-cell-menu-button:empty { + width: 12px; + height: 12px; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMSAxaDEwdjJIMXptMCA0aDEwdjJIMXptMCA0aDEwdjJIMXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==) center no-repeat; + background-size: 12px 12px; + filter: "initial"; } + .ag-questa .ag-ltr .ag-pinned-right-header { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-rtl .ag-pinned-left-header { + border-right: 1px solid #9bc2e6; } + .ag-questa .ag-body { + background-color: #f6f6f6; } + .ag-questa .ag-row-odd { + background-color: white; } + .ag-questa .ag-row-even { + background-color: rgba(234, 247, 255, 0.24); } + .ag-questa .ag-row-selected.ag-row-focus { + background-color: #d0d1d4; } + .ag-questa .ag-row-selected.ag-row-no-focus { + /* background-color: transparent; */ + } + .ag-questa .ag-row-stub { + background-color: #f0f0f0; } + .ag-questa .ag-stub-cell { + padding: 2px 2px 2px 10px; } + .ag-questa .ag-floating-top { + background-color: #f0f0f0; } + .ag-questa .ag-floating-top .ag-row { + background-color: #f0f0f0; } + .ag-questa .ag-floating-bottom { + background-color: #f0f0f0; } + .ag-questa .ag-floating-bottom .ag-row { + background-color: #f0f0f0; } + .ag-questa .ag-overlay-loading-wrapper { + background-color: rgba(255, 255, 255, 0.5); } + .ag-questa .ag-overlay-loading-center { + background-color: #ffffff; + border: 1px solid #9bc2e6; + border-radius: 10px; + padding: 10px; + color: black; } + .ag-questa .ag-overlay-no-rows-center { + background-color: #ffffff; + border: 1px solid #9bc2e6; + border-radius: 10px; + padding: 10px; } + .ag-questa .ag-group-cell-entire-row { + background-color: #f6f6f6; + padding: 2px; } + .ag-questa .ag-footer-cell-entire-row { + background-color: #f6f6f6; + padding: 2px; } + .ag-questa .ag-group-cell { + font-style: italic; } + .ag-questa .ag-ltr .ag-group-expanded { + padding-right: 4px; } + .ag-questa .ag-rtl .ag-group-expanded { + padding-left: 4px; } + .ag-questa .ag-ltr .ag-group-contracted { + padding-right: 4px; } + .ag-questa .ag-rtl .ag-group-contracted { + padding-left: 4px; } + .ag-questa .ag-ltr .ag-group-loading { + padding-right: 4px; } + .ag-questa .ag-rtl .ag-group-loading { + padding-left: 4px; } + .ag-questa .ag-ltr .ag-group-value { + padding-right: 2px; } + .ag-questa .ag-rtl .ag-group-value { + padding-left: 2px; } + .ag-questa .ag-ltr .ag-group-checkbox { + padding-right: 2px; } + .ag-questa .ag-rtl .ag-group-checkbox { + padding-left: 2px; } + .ag-questa .ag-group-child-count { + display: inline-block; } + .ag-questa .ag-footer-cell { + font-style: italic; } + .ag-questa .ag-menu { + border: 1px solid #808080; + background-color: #f6f6f6; + cursor: default; + font-family: Calibri, "Segoe UI", Thonburi, Arial, Verdana, sans-serif; + font-size: 10pt; } + .ag-questa .ag-menu .ag-tab-header { + background-color: #5B9BD5; } + .ag-questa .ag-menu .ag-tab { + padding: 6px 8px 6px 8px; + margin: 2px 2px 0px 2px; + display: inline-block; + border-right: 1px solid transparent; + border-left: 1px solid transparent; + border-top: 1px solid transparent; + border-top-right-radius: 2px; + border-top-left-radius: 2px; } + .ag-questa .ag-menu .ag-tab-selected { + background-color: #9bc2e6; + border-right: 1px solid #d3d3d3; + border-left: 1px solid #d3d3d3; + border-top: 1px solid #d3d3d3; } + .ag-questa .ag-menu-separator { + border-top: 1px solid #d3d3d3; } + .ag-questa .ag-menu-option-active { + background-color: #c7c7c7; } + .ag-questa .ag-menu-option-icon { + padding: 2px 4px 2px 4px; + vertical-align: middle; } + .ag-questa .ag-menu-option-text { + padding: 2px 4px 2px 4px; + vertical-align: middle; } + .ag-questa .ag-menu-option-shortcut { + padding: 2px 2px 2px 2px; + vertical-align: middle; } + .ag-questa .ag-menu-option-popup-pointer { + padding: 2px 4px 2px 4px; + vertical-align: middle; + display: table-cell; } + .ag-questa .ag-menu-option-disabled { + opacity: 0.5; } + .ag-questa .ag-menu-column-select-wrapper { + margin: 2px; } + .ag-questa .ag-filter-checkbox { + margin-right: 4px; + margin-bottom: 0; + display: inline-block; } + .ag-questa .ag-filter-header-container { + padding: 2px 4px 2px 4px; + border-bottom: 1px solid #d3d3d3; } + .ag-questa .ag-filter-apply-panel { + border-top: 1px solid #d3d3d3; + padding: 2px 0px 2px 4px; } + .ag-questa .ag-virtual-list-container { + padding: 4px 4px 10px 4px; } + .ag-questa .ag-ltr .ag-selection-checkbox { + padding-right: 4px; } + .ag-questa .ag-rtl .ag-selection-checkbox { + padding-left: 4px; } + .ag-questa .ag-paging-panel { + padding: 4px; } + .ag-questa .ag-paging-button { + margin-left: 4px; + margin-right: 4px; + border: 1px solid black; + background: white; + color: #2361a0;} + .ag-questa .ag-paging-row-summary-panel { + display: inline-block; + /* width: 300px; */ + float: left; + color: black;} + .ag-questa .ag-paging-page-summary-panel { + float: right; + color: black; + } + .ag-questa .ag-tool-panel { + background-color: #f6f6f6; + border-bottom: 1px solid #9bc2e6; + border-top: 1px solid #9bc2e6; + color: #222; } + .ag-questa .ltr .ag-tool-panel { + border-right: 1px solid #9bc2e6; } + .ag-questa .rtl .ag-tool-panel { + border-left: 1px solid #9bc2e6; } + .ag-questa .ag-status-bar { + color: #222; + background-color: #f6f6f6; + font-size: 10pt; + height: 22px; + border-bottom: 1px solid #9bc2e6; + border-left: 1px solid #9bc2e6; + border-right: 1px solid #9bc2e6; + padding: 2px; } + .ag-questa .ag-status-bar-aggregations { + float: right; } + .ag-questa .ag-status-bar-item { + padding-left: 10px; } + .ag-questa .ag-column-drop-cell { + background: #ddebf7; + color: #000; + border: 1px solid #808080; } + .ag-questa .ag-column-drop-cell-ghost { + opacity: 0.5; } + .ag-questa .ag-column-drop-cell-text { + padding-left: 2px; + padding-right: 2px; } + .ag-questa .ag-column-drop-cell-button { + border: 1px solid transparent; + padding-left: 2px; + padding-right: 2px; + border-radius: 3px; } + .ag-questa .ag-column-drop-cell-button:hover { + border: 1px solid #9bc2e6; } + .ag-questa .ag-column-drop-empty-message { + padding-left: 2px; + padding-right: 2px; + color: grey; } + .ag-questa .ag-column-drop-icon { + margin: 6px 3px 0px 3px; } + .ag-questa .ag-column-drop { + background-color: #f6f6f6; } + .ag-questa .ag-column-drop-horizontal { + padding: 2px; + border-top: 1px solid #9bc2e6; + border-left: 1px solid #9bc2e6; + border-right: 1px solid #9bc2e6; } + .ag-questa .ag-column-drop-vertical { + padding: 4px 4px 10px 4px; + border-bottom: 1px solid #9bc2e6; + overflow: auto; } + .ag-questa .ag-column-drop-vertical .ag-column-drop-cell { + margin-top: 2px; } + .ag-questa .ag-column-drop-vertical .ag-column-drop-empty-message { + padding: 5px; } + .ag-questa .ag-pivot-mode { + border-bottom: 1px solid #9bc2e6; + padding: 2px 4px 3px 4px; + background-color: #f6f6f6; } + .ag-questa .ag-tool-panel .ag-column-select-panel { + padding: 4px 4px 10px 4px; + padding-left: 0; + border-bottom: 1px solid #9bc2e6; + overflow: auto; } + .ag-questa .ag-select-agg-func-popup { + cursor: default; + position: absolute; + font-size: 14px; + background-color: white; + border: 1px solid #9bc2e6; } + .ag-questa .ag-select-agg-func-item { + padding-left: 2px; + padding-right: 2px; } + .ag-questa .ag-select-agg-func-item:hover { + background-color: #c7c7c7; } + .ag-questa .ag-floating-filter-body { + margin-right: 20px; + width: calc(100% - 20px); } + .ag-questa .ag-floating-filter-button { + margin-top: -20px; + display: inline-block; + float: right; } + .ag-questa .ag-floating-filter-button button { + width: 12px; + height: 12px; + background: transparent url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMSAyaDEwTDcgNnY1TDUgOVY2TDEgMnptNCA0djFoMlY2SDV6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=) center no-repeat; + background-size: 12px 12px; + filter: "initial"; + height: 20px; + width: 20px; + background-position-y: 2px; + border: 0; + text-indent: 10000px; + overflow: hidden; } + .ag-questa .ag-rtl .ag-floating-filter-body { + margin-right: 0; + margin-left: 20px; + float: right; } + .ag-questa .ag-rtl .ag-floating-filter-button { + float: left; } + .ag-questa .ag-sort-order { + margin-left: .5em; + font-size: 0.80em; } + .ag-questa .ag-sort-order::before { + content: '('; } + .ag-questa .ag-sort-order::after { + content: ')'; } + + .ag-questa .ag-floating-filter-body input { + background-color: white; + color: #1781e0; + border: none; + padding-left: 8px; } + .ag-questa .ag-floating-filter-body input[readonly] { + background: rgba(255, 255, 255, 0.3); } + + .ag-questa .ag-floating-filter-button { + -webkit-filter: invert(100%); + filter: invert(100%); } + + .ag-questa .ag-header .ag-icon-asc, .ag-questa .ag-header .ag-icon-desc, .ag-questa .ag-header .ag-icon-expanded, .ag-questa .ag-header .ag-icon-contracted, .ag-questa .ag-header .ag-icon-menu { + -webkit-filter: invert(100%); + filter: invert(100%); } + + .ag-questa .ag-tab-header .ag-icon { + -webkit-filter: invert(100%); + filter: invert(100%); } + + .ag-questa input { + background-color: white; + color: #1781e0; + } + +/* .ag-questa .ag-row-focus { + background: #d0d1d4; +} */ diff --git a/covhtmlreport/css/codemirror.css b/covhtmlreport/css/codemirror.css new file mode 100644 index 000000000..47eac5961 --- /dev/null +++ b/covhtmlreport/css/codemirror.css @@ -0,0 +1,106 @@ +.cm-s-questa.CodeMirror { background: #ffffff; color: #d6d5d4; font-size: 15px;} +.cm-s-questa div.CodeMirror-selected { background: #3a3432; } +.cm-s-questa .CodeMirror-line::selection, .cm-s-questa .CodeMirror-line > span::selection, .cm-s-questa .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); } +.cm-s-questa .CodeMirror-line::-moz-selection, .cm-s-questa .CodeMirror-line > span::-moz-selection, .cm-s-questa .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); } +.cm-s-questa .CodeMirror-gutters { background: transparent;; border-right: 0px; } +.cm-s-questa .CodeMirror-guttermarker { color: #db2d20; } +.cm-s-questa .CodeMirror-guttermarker-subtle { color: #5c5855; } +.cm-s-questa .CodeMirror-linenumber { color: black; } +.cm-s-questa .CodeMirror-linenumbers { background:rgb(223, 223, 223); } + +.cm-s-questa .CodeMirror-cursor { border-left: 1px solid #807d7c; } + +.cm-s-questa span.cm-comment { color: #cdab53; } +.cm-s-questa span.cm-atom { color: #a16a94; } +.cm-s-questa span.cm-number { color: #a16a94; } + +.cm-s-questa span.cm-property, .cm-s-questa span.cm-attribute { color: #01a252; } +.cm-s-questa span.cm-keyword { color: #db2d20; } +.cm-s-questa span.cm-string { color: #fded02; } + +.cm-s-questa span.cm-variable { color: #01a252; } +.cm-s-questa span.cm-variable-2 { color: #01a0e4; } +.cm-s-questa span.cm-def { color: #e8bbd0; } +.cm-s-questa span.cm-bracket { color: #d6d5d4; } +.cm-s-questa span.cm-tag { color: #db2d20; } +.cm-s-questa span.cm-link { color: #a16a94; } +.cm-s-questa span.cm-error { background: #db2d20; color: #807d7c; } + +.cm-s-questa .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } + +.cm-s-questa .CodeMirror-line:hover { background: rgb(193, 155, 155) !important; } +.cm-s-questa .CodeMirror-activeline-gutter { color: black !important; background: rgb(193, 155, 155) !important; } +.cm-s-questa .CodeMirror-activeline-background { background: rgb(193, 155, 155) !important; } + +.CodeMirror-activeline-background { background: #abcef8 !important; } +/* .CodeMirror-activeline-gutter { background: #abcef8 !important; } */ +.CodeMirror-line:hover { background: rgba(170, 207, 248, 0.19) !important; } + +.CodeMirror { + border: 1px solid #eee; + height: auto; + font-size: 13px; + line-height: 21px; +} + +.CodeMirror-search-match { + background: gold; + border-top: 1px solid orange; + border-bottom: 1px solid orange; + -moz-box-sizing: border-box; + box-sizing: border-box; + opacity: .5; +} + +.CodeMirror-dialog { + position: absolute; + left: 0; right: 0; + background: inherit; + z-index: 15; + padding: .1em .8em; + overflow: hidden; + color: inherit; +} + +.CodeMirror-dialog-top { + border-bottom: 1px solid #eee; + top: 0; +} + +.CodeMirror-dialog-bottom { + border-top: 1px solid #eee; + bottom: 0; +} + +.CodeMirror-dialog input { + border: none; + outline: none; + background: transparent; + width: 20em; + color: inherit; + font-family: monospace; +} + +.CodeMirror-dialog button { + font-size: 70%; +} + +.CodeMirror-foldmarker { + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; +} +.CodeMirror-foldgutter { + width: .7em; +} +.CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { + cursor: pointer; +} +.CodeMirror-foldgutter-open:after { + content: "\25BE"; +} +.CodeMirror-foldgutter-folded:after { + content: "\25B8"; +} diff --git a/covhtmlreport/css/style.css b/covhtmlreport/css/style.css new file mode 100644 index 000000000..d3a0c38dc --- /dev/null +++ b/covhtmlreport/css/style.css @@ -0,0 +1,1472 @@ +body { + height: 100%; + background: /*#e8e8e8*/ rgb(233, 233, 233); + background: /*rgba(244, 250, 254, 0.65)*/ rgba(241, 241, 241, 0.47); + color: #545555; + font: 400 1em/1.25 "Source Sans Pro", "Helvetica", "Arial", sans-serif; + overflow-x: hidden; +} +#page-header-container { + top: 0px; + /* position: fixed; */ + padding: 0.01em 16px; + width: 100%; + z-index: 100; + min-height: 75px; + display: block; + color: #fff !important; + background-color: /*#2d2d30*/ #2361a0 !important; + left: 50%; + text-align: center; + /* transform: translate(-50%); */ +} +#page-header-text { + font-size: 20pt; + font-family: sans-serif; + letter-spacing: 1px; + opacity: 0.9; + margin-top: 30px; + margin-bottom: 5px; + display: inline-block; + font-weight: lighter; + font-stretch: ultra-expanded; +} +.text-center { + word-break: break-all; +} +#page-body { + /* position: absolute; */ + /* top: 70px; */ + width: 100%; + margin-top: 16px; + margin-bottom: 50px; +} +.card-desc { + /*box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);*/ + /* margin-top: 16px; */ + margin-bottom: 16px; + padding: 0.01em 16px; + background-color: /*rgba(1, 2, 2, 0.17)*/ /*rgba(65, 136, 196, 0.17)*/ white; + /*border-radius: 15px;*/ + border: 1px solid black; +} +.card-descI { + /*box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);*/ + /* margin-top: 16px; */ + margin-bottom: 16px; + padding: 0.01em 0px; + background-color: /*rgba(1, 2, 2, 0.17)*/ /*rgba(65, 136, 196, 0.17)*/ white; + /*border-radius: 15px;*/ + border: 0px solid black; +} + +#cvg { + height: 100% +} +.home-logo { + position: absolute; + top: 10px; + right: 10px; +} + +/* Datagrid */ +.dropdown-menu { + min-width: 300px; +} +.ag-dropdown-menu { + top: calc(100% - 7px) !important; +} +.dropdown-menu>li:focus, +.dropdown-menu>li:hover { + background-color: #efefef; +} +.btn-questa { + background-color: white; +} +.menu-checkbox { + margin-left: 20px !important; +} +.menu-text { + margin-left: 5px !important; +} +.menu-header { + margin-left: 10px !important; + color: darkgrey; +} +.menu-button { + text-align: left; + padding-left: 20px; + padding-top: 1px; + padding-bottom: 1px; +} +.menu-filter { + /* color: #fff; */ + /* border-radius: 2px; */ + background-color: #1f60a1 !important; + border-color: #1f60a1 !important; + margin-top: 10px; + padding: 6px 5px 6px 5px; +} +.dropdown-toggle { + background: white; + border: 1px solid black; + border-radius: 0px; + box-shadow: none; + color: #2361a0; + margin-bottom: 4px; +} +.menu-button:hover { + background-color: #efefef; +} +.grid-container { + padding-right: 6px; + padding-left: 6px; +} + +/* cells style*/ +.danger { + /* color: #ff5e50; */ + color: #a90d00; + background-color: #ffe2e2; +} +.warning { + /* color: #ff5e00; */ + color: #b54300; + background-color: #fbf2e6; +} +.success { + /* color: #23a034; */ + color: #165d1f; + background-color: #e1ebe2; +} +.undefined { + color: lightslategray; +} +.ignore-illegal-bin { + color: #999fa5; +} +.fg-danger { + color: red; +} +.fg-disabled { + color: #b7b7b7; +} + +/*table 28*/ +table { + margin-top: 10px; + margin-bottom: 10px; +} +tr th , .table-cell-th { + font-family: "Segoe UI", Arial, sans-serif; + color: #3c3838; + background: #ecf0f1; + float: left; + font-size: 14px; + margin-right: 10px; + padding: 5px; + min-width: 170px; + word-break: break-all; + border: 1px solid white; +} +tr td , .table-cell-td { + margin: 2px 0; + font-size: 14px; + padding: 5px 0; + cursor: default; + word-break: break-all; +} +.table-hover>tbody>tr:hover { + background-color: rgba(0, 0, 0, 0.02); +} + +.table-popover { + width: 100%; + margin: 0 !important; +} + +.tableEx-popover { + width: 170px; + margin: 0 !important; +} +.th-popover { + min-width: 50px !important; + font-size: 12px !important; + word-wrap: normal; + word-break: keep-all; + float: none !important; +} + +.td-opt-popover { + min-width: 50px !important; + font-size: 12px !important; + word-wrap: normal; + word-break: keep-all; +} + +.td-val-popover { + min-width: 50px !important; + font-size: 12px !important; +} + +/* Tables*/ +.table-bordered>tbody>tr>td, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>td, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>thead>tr>th { + border: 1px solid #665252; +} +.table-striped>tbody>tr:nth-of-type(odd) { + background-color: #ffffff; +} +.table-striped>tbody>tr:nth-of-type(even) { + background-color:rgb(226, 238, 255); +} + +/* Panel */ +.panel-title a:hover { + color: skyblue; +} + +.panel-body{ + background: white; +} +.panel-group .panel { + border-radius: 0px; +} +.panel-text { + font-size: 25px; + font-weight: bolder; + color: green; +} +.panel-default { + border-color: #383637; + border-radius: 0px; + margin-top: 15px; + /*box-shadow: 1.5px 1.5px 1.5px #c7c9cc;*/ + /*box-shadow: 3px 3px 3px rgba(0,0,0,.05);*/ + box-shadow: 3px 3px 3px rgb(199, 201, 204); +} +.panel-default-danger { + border-color: #ff5e50; +} +.panel-default-warning { + border-color: #ffc150; +} +.panel-default-success { + border-color: #23a034; +} +.panel-default-undefined { + border-color: rgb(199, 201, 204); + /*border-color: rgba(0,0,0,.05);;*/ + /*border-color: #2361a0;*/ +} +.panel-default>.panel-heading { + max-height: 40px; + background: #fff; + color: black; + padding: 0px; + height: 40px; + position: relative; + border-radius: 0px; + border-bottom: 1px solid #ffc150; +} +.panel-default>.panel-heading-danger { + border-bottom: 1px solid #ff5e50; +} +.panel-default>.panel-heading-warning { + border-bottom: 1px solid #ffc150; +} +.panel-default>.panel-heading-success { + border-bottom: 1px solid #23a034; +} +.panel-default>.panel-heading-undefined { + border-bottom: 1px solid #c7c9cc; + /*border-bottom: 1px solid #2361a0;*/ +} +.panel-default>.panel-heading a { + display: block; +} +.panel-default>.panel-heading a:after { + font-family: 'Glyphicons Halflings'; + float: right; + -webkit-transition: -webkit-transform .25s linear; + -moz-transition: -webkit-transform .25s linear; + -ms-transition: -webkit-transform .25s linear; + -o-transition: -webkit-transform .25s linear; + transition: transform .25s linear; +} +.panel-default>.panel-heading a[aria-expanded="false"]:after { + content: "\f054"; + font-family: FontAwesome; + color: #074f96; + font-size: 17px; + font-weight: bolder; + /* -webkit-transform: rotate(-180deg); + -moz-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + -o-transform: rotate(-180deg); + transform: rotate(-180deg); */ + float: right; + margin-right: 10px; + position: absolute; + top: 10px; + right: 0; +} + +.panel-default>.panel-heading a[aria-expanded="true"]:after { + content: "\f054"; + font-family: FontAwesome; + color: #074f96; + font-size: 17px; + font-weight: bolder; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + float: right; + margin-right: 10px; + position: absolute; + top: 10px; + right: 0; +} +.ratio { + text-shadow: 1px 0px #999; + font-size: 14px; + right: 0; + position: absolute; + padding: 2px 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + top: -25px; +} +.ratio-left { + right: unset; + left: 0; +} +.ratio-danger { + /*background: #ff5e50;*/ + /*color: #000aff;*/ + color: #000; +} +.ratio-warning { + /*background: #ffc34f;*/ + /*color: #007eff;*/ + color: #000; +} +.ratio-success { + /*background: #23a034;*/ + color: white; +} + +/* progress-bar */ +.progress { + background: #fff !important; + height: 40px; + border-radius: 0; + max-height: 40px; + overflow: visible; +} +.progress-danger{ + /*border-bottom: 1px solid #ff5e50;*/ + /*border-bottom: 1px solid #2361a0;*/ + border-bottom: 1px solid #c7c9cc; + +} +.progress-warning{ + /*border-bottom: 1px solid #ffc150;*/ + /*border-bottom: 1px solid #2361a0;*/ + border-bottom: 1px solid #c7c9cc; +} +.progress-success{ + /*border-bottom: 1px solid #23a034;*/ + /*border-bottom: 1px solid #2361a0;*/ + border-bottom: 1px solid #c7c9cc; +} +.progress-bar { + white-space: nowrap; + box-shadow: none; +} +.progress-bar-danger { + /* background: #ff5e50; */ + background: #b5372d; +} +.progress-bar-warning { + background: #ffc150; +} +.progress-bar-success { + background: #23a034; +} + +.popover { + position: absolute; +} +.progress-bar-loader { + display: none; +} +#progress-bar-loading { + margin: 0 auto; + width: 150px; + height: 20px; + border: 1px solid #2b6da5; + background-color: transparent; +} +#loading-data { + display: none; + font-size: inherit; +} + +@media (min-width: 768px) { + #progress-bar-loading { + width: 230px; + } + #loading-data { + display: initial; + font-size: small; + } +} +@media (min-width: 992px) { + #progress-bar-loading { + width: 450px; + } + #loading-data { + display: initial; + } +} +@media (min-width: 1200px) { + #progress-bar-loading { + width: 650px; + } + #loading-data { + display: initial; + } +} +#progress-bar-loading div { + height: 100%; + text-align: right; + line-height: 20px; /* same as #progressBar height if we want text middle aligned */ + width: 0; + background-color: #2aad0b; + text-align: center; +} + +#progress-bar-loading span { + height: 100%; + /* color: #fff; */ + font-size: small; + text-align: center; + line-height: 20px; + width: 100%; + display: block; + position: absolute; +} + +.ag-questa .ag-paging-button[disabled] { + background: #eae9e9 !important; + color: #b9b9b9 !important; + cursor: not-allowed !important; + border-color: #b9b9b9 !important; +} + +/* arrow */ +.arrow-up { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + + border-bottom: 5px solid black; +} + +.arrowEx-up { + width: 0; + height: 0; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + + border-bottom: 10px solid black; + margin-left: 105px; + margin-top: -10px; + transform: translateY(-70%); +} + +.arrow-down { + width: 0; + height: 0; + border-left: 20px solid transparent; + border-right: 20px solid transparent; + + border-top: 20px solid #f00; +} + +.arrow-right { + width: 0; + height: 0; + border-top: 60px solid transparent; + border-bottom: 60px solid transparent; + + border-left: 60px solid green; +} + +.arrow-left { + width: 0; + height: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + border-right:10px solid #2361a0; + position: absolute; + left: -10px; +} + +/* well */ +.well { + padding: 8px; + background: white; + border-radius: 5px; + border: 1px solid #2361a0 !important; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); + /* display: block !important; */ +} +.wellEx { + padding: 8px; + background: white; + border-radius: 5px; + border: 1px solid #2361a0 !important; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); + margin-left: -155px; + margin-top: 40px; + + /* display: block !important; */ +} + +.well:hover{ + display: block !important; +} + +.wellEx:hover{ + display: block !important; +} + +a:hover { + cursor: pointer; +} + +.full-width-panel { + position: relative; + background: #e9e4e4; + height: 100%; + width: 100%; + padding: 5px; + box-sizing: border-box; + border-left: 2px solid grey; + border-bottom: 2px solid lightgray; + border-right: 2px solid lightgray; +} + +.full-width-grid { + /* margin-left: 150px; */ + padding-top: 25px; + box-sizing: border-box; + display: block; + height: 100%; +} + +.full-width-grid .ag-root { + height: 150px !important; +} + +.full-width-grid .ag-header { + position: inherit; +} + +#details-container { + /*border: 2px solid black;*/ + background: #ffffff; + /*border: 1px solid rgba(0,0,0,.05) !important;*/ + border: 1px solid rgb(199, 201, 204) !important; + box-shadow: 3px 3px 3px rgb(199, 201, 204) !important;; +} + +/* menu */ +.menu-container { + background: white !important; + /* height: 100px; */ +} +.menu-input { + /* margin:0em auto 1em auto; */ + display:block; + width: 100%; + padding: 4px; + margin:10px 0px 20px 0px; + border-radius:4px; + border:1px solid silver; + height: 28px; + font-size: medium; +} +input[type="search"] { + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; + -webkit-appearance: searchfield; +} + +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: searchfield-cancel-button; + font-size: 5px; + padding: 5px 5px 5px 5px; +} + +input[type="search"]::--webkit-search-decoration { + -webkit-appearance: searchfield-decoration; +} + +input[type="search"]::-ms-clear { + -webkit-appearance: searchfield-cancel-button; + /* padding: 5px 5px 5px 5px; */ + content: "\f054"; + font-family: FontAwesome; + height: 25px; + width: 25px; + /* padding-right: -30px; */ + margin-right: -10px; + /* background: red !important; */ + color: #3c5e9b !important; + display: fixed; +} +/* .jstree-wholerow-ul { + max-width: 100% +} +.jstree-default>.jstree-container-ul>.jstree-node{ + position: relative; +} +.jstree-default .jstree-wholerow { + height: 100%; + opacity: 0; +} + .jstree-anchor{ + white-space: initial !important; + word-break: break-all !important; + max-width: calc(100% - 24px); + height: initial !important; + position: relative !important; + padding-left: 30px; + transition: background-color 0.2s ease-in-out; +} +.jstree-anchor:hover{ + background-color: rgba(64, 159, 255, 0.65) !important; + color: black; +} +.jstree-anchor > .jstree-icon { + position: absolute !important; + left: 0; +} */ + +.icon-color { + /* color: #2361a0; */ + color: /*rgba(121, 233, 183, 0.85)*/ #2361a0 ;; + text-shadow: 2px 2px 1px #ccc; +} + +.icon-color-danger { + /* color: #2361a0; */ + color: /*rgba(121, 233, 183, 0.85)*/#ff5e50; + text-shadow: 2px 2px 1px #ccc; +} +.icon-color-warning { + /* color: #2361a0; */ + color: /*rgba(121, 233, 183, 0.85)*/ #ffb552; + text-shadow: 2px 2px 1px #ccc; +} +.icon-color-success { + /* color: #2361a0; */ + color: /*rgba(121, 233, 183, 0.85)*/ #02cc1d; + text-shadow: 2px 2px 1px #ccc; +} +.icon-color-exclude { + /* color: #2361a0; */ + color: /*rgba(121, 233, 183, 0.85)*/ #a0a1a2; + text-shadow: 2px 2px 1px #ccc; +} + +.nav-tabs { + /* border-bottom: 2px solid #DDD; */ +} +.nav-tabs > li.active > button, .nav-tabs > li.active > button:focus, .nav-tabs > li.active > button:hover { + /*border-width: 0; */ +} +.nav-tabs > li > button { + border: none; + color: #2361a0; + background: #fff; + font-size: 13px; + border: 1px solid; + height:35px; + width:100%; +} +.nav-tabs > li.active > button, .nav-tabs > li > button:hover { + border: none; + color: #fff !important; + background: #2361a0 ; + border: 1px solid; +} +.nav-tabs > li > button::after { + content: ""; + background: #2361a0; + height: 2px; + position: absolute; + width: 100%; + left: 0px; + bottom: -1px; + transition: all 250ms ease 0s; + transform: scale(0); +} +.nav-tabs > li.active > button::after, .nav-tabs > li:hover > a::after { + transform: scale(1); + } +.nav-tabs > li > button::after { + background: #2361a0 none repeat scroll 0% 0%; + color: #fff; +} +.nav-tabs.nav-justified>li>a { + /* margin-right: 0; */ + border-radius: 0px; + border-bottom: 2px solid #2361a0; +} + +.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover { + background: #2361a0; +} +.nav-tabs > li > a { + border: none; + color: #2361a0; + background: #fff; + font-size: 13px; + border: 1px solid; +} +.nav-tabs > li.active > a, .nav-tabs > li > a:hover { + border: none; + color: #fff !important; + background: #2361a0 ; + border: 1px solid; +} +.nav-tabs > li > a::after { + content: ""; + background: #2361a0; + height: 2px; + position: absolute; + width: 100%; + left: 0px; + bottom: -1px; + transition: all 250ms ease 0s; + transform: scale(0); +} +.nav-tabs > li.active > a::after, .nav-tabs > li:hover > a::after { + transform: scale(1); + } +.nav-tabs > li > a::after { + background: #2361a0 none repeat scroll 0% 0%; + color: #fff; +} +.nav-tabs.nav-justified>li>a { + /* margin-right: 0; */ + border-radius: 0px; + border-bottom: 2px solid #2361a0; +} + +.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover { + background: #2361a0; +} +/* .tab-pane { padding: 15px 0; } */ +.tab-content { + padding: 0 10px 0px; + /* padding-left: 22px; */ +} +.nav-tabs > li { + width: 20%; + text-align: center; + /* padding-bottom: 2px; */ +} +.card-tabs { + background: white none repeat scroll 0% 0%; + height: calc(100vh - 35px); +} + +.fade.in { + display: none; +} +.fade { + display: none; +} + +.tabs { + padding-bottom: 15px; +} + +.tabs>.active { + display: block; +} + +.nav-tabs2 > li { + width: 40%; + text-align: center; +} + +.cvg-iframe { + background: transparent !important; + padding-left: 0px !important; + padding-right: 0px !important; +} + +@media all and (max-width:200px){ + .nav-tabs > li > button > span.menu-title-text {display:none !important;} +} +@media all and (max-width:724px){ + .nav-tabs > li > button > span.menu-title-text {display:initial;} + .nav-tabs > li > button > span {display:initial;} + .nav-tabs > li > button {padding: 5px 0px 5px;} +} +@media (max-width: 768px) { + .nav-justified > li {float: left !important; width: 50%} +} + +.textarea{ + width: 100%; + background-color:white; + overflow: hidden; + height: 50px; + max-height: 50px; + border: 1px solid black; + overflow-y: auto; + font-size: 15px; +} + +#details-container { + border: 1px solid #4e4f50; + background: #ffffff; + border-radius: 3px; + padding-bottom: 20px; + position: relative; +} + +.clicked-row { + position: relative; + /* background: #d1d2d5 !important; */ +} +/* .ag-row-selected{ + background: #d1d2d5 !important; +} */ +.grid-group-btn > button { + /* padding: 19px 3px 17px; */ + /* border: none; */ + background: transparent !important; + color: #2b6da5 !important; + border: 1px solid #2b6da5 !important; + /* background: transparent !important; */ + /* color: white !important; + background: #2b6da5 !important; */ + transition: color 0.2s ease-in-out; + text-shadow: none !important; + /* border-top: 1px solid #9dc3e7; + border-left: 1px solid #4684b9 !important; */ +} +.grid-group-btn > button:hover { + background: #eae9e9 !important; +} + +.grid-group-btn > button.tree-control-disabled { + background: #eae9e9 !important; + color: #b9b9b9 !important; + cursor: not-allowed !important; + border-color: #b9b9b9 !important; +} +.grid-group-btn > button.tree-control-disabled img { + background: #eae9e9 !important; + color: #b9b9b9 !important; + cursor: not-allowed !important; + border-color: #b9b9b9 !important; + -webkit-filter: grayscale(100%); + -moz-filter: grayscale(100%); + -o-filter: grayscale(100%); + -ms-filter: grayscale(100%); + filter: grayscale(100%); +} +.toolbar-container { + border: 1px solid #2b6da5; + margin: 0 7px 10px 7px !important; + padding: 3px 0 0 !important; + border-radius: 4px; + background-color: #f3f6f8; + /* padding-top: 3px; */ +} + +.tabs-container { + /* border: 1px solid #2b6da5; */ + margin: 0 10px 10px 10px !important; + padding: 3px 0 0 !important; + border-radius: 4px; + /* padding-top: 3px; */ +} + +.tabs-containeri { + /* border: 1px solid #2b6da5; */ + margin: 0 0px 0px 0px !important; + padding: 3px 0 0 !important; + border-radius: 4px; + /* padding-top: 3px; */ +} + +p.ag-pagination select { + height: 22px; + margin-top: -4px; + padding-top: 3px; + color: black; + font-size: 13px; + border-color: black; + background: transparent; +} +p.ag-pagination select:hover { + background: #eae9e9 !important; +} +.ag-layout-auto-height .ag-body-container { + position: relative; + display: inline-block; +} +.page-list-disabled { + color: #b9b9b9 !important; + cursor: not-allowed !important; + border-color: #b9b9b9 !important; +} +p.ag-pagination select.page-list-disabled:hover { + background: transparent !important; +} +.ag-header-row .ag-header-cell.justify-left .ag-header-cell-label { + justify-content: left; + padding-left: 4px; +} +.ag-header-row .ag-header-cell.justify-right .ag-header-cell-label { + display: flex; + justify-content: right; + float: right; + padding-right: 4px; + text-align: right !important; +} +.ag-header-row .ag-header-cell.justify-center .ag-header-cell-label { + justify-content: center; +} +.justify-center { + justify-content: center; + text-align: center !important; +} +.justify-right { + justify-content: right; + text-align: right !important; +} +.ag-header-group-cell { + border-right: 1px solid #4585ba !important; + border-bottom: 1px solid #4585ba !important; +} +#details-container h3 { + margin-top: 12px; + margin-bottom: 2px; + padding-left: 6px; +} +#details-container .fa-window-close { + font-size: 17px; + position: absolute; + top: 3px; + right: 5px; +} +.panel-heading-title{ + /* border-bottom: 1px solid #d9d9d9; */ + width: calc(100% - 10px); + padding-bottom: 0px; + padding-top: 6px; + /* text-shadow: 2px 2px 0px #ddd; */ +} +/* */ +.menu-toolbar { + height: 23px; + /* border-bottom: 1px solid #2361a0; */ + padding-bottom: 2px; + /* margin-bottom: 3px; */ +} + +.cvg-info.fa-info-circle:hover { + cursor: pointer; + color: #0ba26d !important; +} + +.ag-row-selected .ag-cell { + background: #d0d1d4; + outline: none !important; + border: none !important; +} + +.ag-cell-focus{ + border: none !important; + outline: none !important; +} + +button[disabled], html input[disabled] { + cursor: default; + color: darkgrey !important; + border: none !important; +} +.disabled { + background: #eae9e9 !important; + color: #b9b9b9 !important; + cursor: not-allowed !important; + border-color: #b9b9b9 !important; +} +.ruler { + position: relative; + width: 100%; + opacity: 0.15; + z-index: 11; +} +.ruler .cm, +.ruler .mm { + position: absolute; + border-left: 1px solid black; + height: 14px; + width: 10%; +} +.ruler .cm:after { + position: absolute; + bottom: -15px; + font: 11px/1 sans-serif; +} +.ruler .mm { + height: 5px; +} +.ruler .mm:nth-of-type(5) { + height: 10px; +} +.ruler .cm:nth-of-type(1) { + left: 0%; +} +.ruler .cm:nth-of-type(2), .ruler .mm:nth-of-type(1) { + left: 10%; +} +.ruler .cm:nth-of-type(3), .ruler .mm:nth-of-type(2) { + left: 20%; +} +.ruler .cm:nth-of-type(4), .ruler .mm:nth-of-type(3) { + left: 30%; +} +.ruler .cm:nth-of-type(5), .ruler .mm:nth-of-type(4) { + left: 40%; +} +.ruler .mm:nth-of-type(5) { + left: 50% +} +.ruler .cm:nth-of-type(6) { + left: 50%; + border-left: 3px solid black; + height: 15px; +} +.ruler .cm:nth-of-type(7), .ruler .mm:nth-of-type(6) { + left: 60%; +} +.ruler .cm:nth-of-type(8), .ruler .mm:nth-of-type(7) { + left: 70%; +} +.ruler .cm:nth-of-type(9), .ruler .mm:nth-of-type(8) { + left: 80%; +} +.ruler .cm:nth-of-type(10), .ruler .mm:nth-of-type(9) { + left: 90%; +} +.ruler .cm:nth-of-type(11), .ruler .mm:nth-of-type(10) { + left: 100%; +} + +.exclusion { + color: #a0a1a2; +} +/* .close-icon { + border:1px solid transparent; + background-color: transparent; + outline: 0; + cursor: pointer; +} +.close-icon:after { + content: "\f00d"; + font-family: FontAwesome; + position: absolute; + background-color: transparent; + z-index:1; + right: 35px; + top: 100px; + padding: 2px; + text-align: center; + color: #1f60a1; + font-weight: lighter; + font-size: 20px; + cursor: pointer; + float: right; +} + +.search-box:not(:valid) ~ .close-icon { + display: none; +} */ + +/* .modal-dialog-centered { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - (.5rem * 2)); +} */ + +span.modal-title { + font-size: 15px; + word-break: break-word; +} +.modal-body { + padding-bottom: 30px; +} + +.file { + display: inline-block; + border: 1px solid #eee; + /*font-size: x-large;*/ + font-size: large; + color: #3c3838; + background: #f1f1f1; + + margin-top: 10px; + margin-bottom: 10px; + /*width:500px;*/ + height:46px; + overflow-wrap: break-word; + word-wrap: break-word; + hyphens: auto; + box-sizing:border-box; + overflow: hidden; +} +.file-name { + display: inline-block; + font-size: large; + color: #545555; + /* width: 476px; */ + height: 46px; + overflow-wrap: break-word; + word-wrap: break-word; + box-sizing: border-box; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.source-code-icon { + font-size: 23px; + color: white; + padding-top: 3px; + padding-bottom: 3px; +} +.source-code-text { + position: absolute; + left: 1px; + /* right: 7px; */ + top: 3px; + color: #d34ed3; + font-weight: bold; + text-align: left; + font-size: 10px; + width: 100%; +} +.tabs { + background: white; + border: 1px solid #2460a0; +} + +.summary-footer { + border-top: 1px solid #2460a0; + position: fixed; + bottom: 0px; + z-index: 6; + width: 100%; + background: #f8f8f8; + padding-left: 15px; +} +.summary-footer span { + font-size: 17px; + color: black; + display: inline-block; +} + +.summary-cmd { + padding-left: 10px; + font-size: medium; + color: #545555 !important; +} +#source-tabs li:not(.active) i.source-code-icon { + color: #b7b7b7; +} +#source-tabs li:not(.active) span.source-code-text { + color: white; +} +/* .ag-icon-filter:before { + content: "\f0b0"; + font-family: FontAwesome; + color: #fff113; + background: none; +} +.ag-icon-asc:before { + content: "\f062"; + font-family: FontAwesome; + color: #fff113; + background: none; +} +.ag-icon-desc:before { + content: "\f063"; + font-family: FontAwesome; + color: #fff113; + background: none; +} */ + +.src-gut-hit { + color: black !important; + background-color: #78e456; + text-align: center; +} + +.gb-last-gut{ + border-bottom: 2px solid black; +} + +.gb-gut { + border-left: 2px solid black; + border-right: 2px solid black; +} + +.gb-first-gut{ + border-top: 2px solid black; +} + +.gb-first-gut.transparent, .gb-last-gut.transparent , .gb-gut.transparent{ + color: transparent !important +} + +.src-gut-not-hit { + color: black !important; + background-color: #f2c8c9; + text-align: center; +} +.src-gut-hit:hover, .src-gut-not-hit:hover, .excl-item:hover { + background: #abcef8; + color: #0056ff !important; + font-weight: bold; +} + +.src-highlight-hit { + background-color:#78e456; +} +.src-highlight-not-hit { + background-color:#f2c8c9; +} +.center-img { + display: block; + margin-left: auto; + margin-right: auto; +} +.img-comment { + border: 1px solid #1f60a1; + border-radius: 2px; + margin: 0 auto; + z-index: 1; + padding-bottom: 1px; + box-shadow: inset -1px -1px 7px rgba(0, 0, 0, 0.1), 1px 1px 1px rgba(0, 0, 0, 0.1); + padding: 1px; + background: #f1f1f1; +} +.img-comment:hover { + background: #d4d4d4; +} +.excl-tooltip { + min-width: 50px; + max-width: 200px; + z-index: 333; +} +.excl-comment-text { + font-size: 15px; + word-break: break-all; +} +.excl { + background: transparent !important; +} +.excl-comment { + cursor: pointer; + background: transparent !important; +} +.menu-not-found { + padding: 10px; + font-size: 20px; + display: block; +} +.warning-icon { + color:#a9a997; + font-size:60px; + padding: 20px; +} +#warning-message { + text-align: center; +} +div#design-units-menu, div#instances-menu { + height: calc(100vh - 128px); + overflow-y: auto; + margin-right: -10px; + margin-left: -10px; +} + +.ag-row.ag-row-no-focus.ag-row-group.ag-row-level-0.ag-row-selected { + background: transparent; +} + +.srcMenu{ + width:100%; + background-color:white; + margin-left:auto; + margin-right:auto; + display: block; + margin-bottom: -9px; + /*display: inline-block; + border: 1px solid #eee; + font-size: x-large; + color: #3c3838; + background: #fff7f7; + width: 100%; + margin-top: 10px; + margin-bottom: 10px;*/ +} +.srcMenu-src{ + width:100%; + margin-left:auto; + margin-right:auto; + display: block; + margin-bottom: -9px; +} + +.lineN{ + /*display:inline-block;*/ + /*width:30px;*/ + height:46px; + border: 1px solid #eee; + color: #3c3838; + background: #f1f1f1; + margin-top: 10px; + font-size: 15px; + /*font-size: large;*/ + float: left; + font-weight: bold; +} + +.hits{ + /*display:inline-block;*/ + text-align: center; + height:23px; + border: 1px solid #eee; + color: #3c3838; + background: #f1f1f1; + margin-top: 10px; + margin-bottom: 10px; + font-size: 15px; + font-size: large; + float: left; +} +.hitsItems{ + /*display:inline-block;*/ + text-align: center; + height:27px; + border: 1px solid #eee; + color: #5a585f; + background: #f1f1f1; + margin-bottom: 10px; + font-size: 15px; + font-size: medium; + float: left; + width: 60.5px; + border-left-width: 0px; + border-right-width: 0px; +} +.horizL{ + margin-top: 1px; + margin-bottom: -2px; +} + +.help-logo { + position: absolute; + top: 147px; + right: 36px; +} + +.help-logo-1src { + position: absolute; + top: 102px; + right: 17px; +} +.help-logo-1srcst { + position: absolute; + top: 112px; + right: 17px; +} + +.fa-check { + cursor: pointer; +} + +.modal-open { + overflow: hidden; + padding-right: 0px !important; +} + +.shortcuts { + font-size: 12px; +} +.contrib, .contrib sup { + color: #4686bc; + /* border-bottom: 1px dotted #4686bc; */ + /* padding-bottom: 1px; */ +} + +.disabled-link{ + pointer-events: none; + text-decoration: none; + color:#3c3838; +} +/*START Allow ag-grid cells to be copied*/ +div.ag-root { + -webkit-user-select:text; + -moz-user-select:text; + -ms-user-select:text; + user-select:text; + font-size: 14px; +} +/*END Allow ag-grid cells to be copied*/ + +.line-number { + background: #e8e8e8; + padding: 3px 6px; + font-size: 13px !important; + margin-right: 5px; + border-left: 2px solid #000; + position: relative; + top: -1px; + +} + +.link { + color:#337ab7; + text-decoration: none; + cursor: pointer; +} + +.link :hover { + color: #23527c; + text-decoration: underline; +} + +.item-number { + text-align :left; +} diff --git a/covhtmlreport/cvg.html b/covhtmlreport/cvg.html new file mode 100644 index 000000000..41148b944 --- /dev/null +++ b/covhtmlreport/cvg.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/cvgBins.html b/covhtmlreport/cvgBins.html new file mode 100644 index 000000000..bdc3f6e54 --- /dev/null +++ b/covhtmlreport/cvgBins.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/dulist.html b/covhtmlreport/dulist.html new file mode 100644 index 000000000..a6c7daa84 --- /dev/null +++ b/covhtmlreport/dulist.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/files/b1.js b/covhtmlreport/files/b1.js new file mode 100644 index 000000000..f49da7881 --- /dev/null +++ b/covhtmlreport/files/b1.js @@ -0,0 +1,2 @@ +var g_data = {"29":{"pr":"/lane_tb/dut","t":"inst","br":[{"bs":[{"s":" if (sqrt_seq_out.mask_bit) begin","f":6,"i":1,"l":70,"h":464},{"s":" end else begin","f":6,"i":1,"l":72,"h":274}],"br":{"s":" if (sqrt_seq_out.mask_bit) begin","f":6,"l":70,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":148,"h":2},{"s":" end else begin","f":6,"i":1,"l":154,"h":2809}],"br":{"s":" if (!nRST) begin","f":6,"l":148,"i":1,"p":100.00}},{"bs":[{"s":" if (sqrt_retire) begin","f":6,"i":1,"l":156,"h":124},{"s":" else if (sqrt_hold_valid && lif.lane_in.ready_in[SQRT]) begin","f":6,"i":1,"l":164,"h":124},{"s":"All False","f":6,"i":1,"l":156,"h":2561}],"br":{"s":" if (sqrt_retire) begin","f":6,"l":156,"i":1,"p":100.00}},{"bs":[{"s":" if (div_seq_out.mask_bit) begin","f":6,"i":1,"l":221,"h":419},{"s":" end else begin","f":6,"i":1,"l":223,"h":283}],"br":{"s":" if (div_seq_out.mask_bit) begin","f":6,"l":221,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":270,"h":2},{"s":" end else if (div_fire_valid && div_sync_ready) begin","f":6,"i":1,"l":272,"h":108},{"s":"All False","f":6,"i":1,"l":270,"h":122}],"br":{"s":" if (!nRST) begin","f":6,"l":270,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":309,"h":2},{"s":" end else begin","f":6,"i":1,"l":316,"h":2806}],"br":{"s":" if (!nRST) begin","f":6,"l":309,"i":1,"p":100.00}},{"bs":[{"s":" if (div_retire) begin","f":6,"i":1,"l":318,"h":108},{"s":" else if (div_hold_valid && lif.lane_in.ready_in[DIV]) begin","f":6,"i":1,"l":327,"h":108},{"s":"All False","f":6,"i":1,"l":318,"h":2590}],"br":{"s":" if (div_retire) begin","f":6,"l":318,"i":1,"p":100.00}},{"bs":[{"s":" if (mul_seq_out.mask_bit)","f":6,"i":1,"l":368,"h":382},{"s":" else","f":6,"i":1,"l":370,"h":255}],"br":{"s":" if (mul_seq_out.mask_bit)","f":6,"l":368,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":434,"h":2},{"s":" end else begin","f":6,"i":1,"l":440,"h":2761}],"br":{"s":" if (!nRST) begin","f":6,"l":434,"i":1,"p":100.00}},{"bs":[{"s":" if (mul_retire) begin","f":6,"i":1,"l":442,"h":123},{"s":" else if (mul_hold_valid && lif.lane_in.ready_in[MUL]) begin","f":6,"i":1,"l":450,"h":112},{"s":"All False","f":6,"i":1,"l":442,"h":2526}],"br":{"s":" if (mul_retire) begin","f":6,"l":442,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":462,"h":2},{"s":" end else begin","f":6,"i":1,"l":465,"h":3334}],"br":{"s":" if (!nRST) begin","f":6,"l":462,"i":1,"p":100.00}},{"bs":[{"s":" if (mul_fire_valid && mul_sync_ready) mul_issue_cnt <= mul_issue_cnt + 1;","f":6,"i":1,"l":466,"h":123},{"s":"All False","f":6,"i":1,"l":466,"h":3211}],"br":{"s":" if (mul_fire_valid && mul_sync_ready) mul_issue_cnt <= mul_issue_cnt + 1;","f":6,"l":466,"i":1,"p":100.00}},{"bs":[{"s":" if (lif.lane_out.valid_o[MUL] && lif.lane_in.ready_in[MUL]) mul_wb_cnt <= mul_wb_cnt + 1;","f":6,"i":1,"l":467,"h":123},{"s":"All False","f":6,"i":1,"l":467,"h":3211}],"br":{"s":" if (lif.lane_out.valid_o[MUL] && lif.lane_in.ready_in[MUL]) mul_wb_cnt <= mul_wb_cnt + 1;","f":6,"l":467,"i":1,"p":100.00}},{"bs":[{"s":" if (valu_seq_out.mask_bit) begin","f":6,"i":1,"l":542,"h":384},{"s":" end else begin","f":6,"i":1,"l":544,"h":250}],"br":{"s":" if (valu_seq_out.mask_bit) begin","f":6,"l":542,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":6,"i":1,"l":631,"h":2},{"s":" end else begin","f":6,"i":1,"l":637,"h":2748}],"br":{"s":" if (!nRST) begin","f":6,"l":631,"i":1,"p":100.00}},{"bs":[{"s":" if (valu_retire && !valu_meta_out.rm) begin","f":6,"i":1,"l":640,"h":125},{"s":" else if (valu_hold_valid && lif.lane_in.ready_in[VALU]) begin","f":6,"i":1,"l":648,"h":113},{"s":"All False","f":6,"i":1,"l":640,"h":2510}],"br":{"s":" if (valu_retire && !valu_meta_out.rm) begin","f":6,"l":640,"i":1,"p":100.00}},{"bs":[{"s":" lif.lane_out.rval[VALU] = valu_reduce_fire ? valu_bus.out.result : '0;","f":6,"i":1,"l":695,"h":0},{"s":" lif.lane_out.rval[VALU] = valu_reduce_fire ? valu_bus.out.result : '0;","t":55,"n":1,"f":6,"i":2,"l":695,"h":2186}],"br":{"s":" lif.lane_out.rval[VALU] = valu_reduce_fire ? valu_bus.out.result : '0;","f":6,"l":695,"i":1,"p":50.00}}]},"31":{"pr":"/lane_tb/dut/u_seq_sqrt","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":4,"i":1,"l":65,"h":2},{"s":" end else begin","f":4,"i":1,"l":69,"h":695}],"br":{"s":" if (!nRST) begin","f":4,"l":65,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE) begin","f":4,"i":1,"l":72,"h":296},{"s":" else if (state == BUSY && elem_accepted) begin","f":4,"i":1,"l":81,"h":284},{"s":"All False","f":4,"i":1,"l":72,"h":115}],"br":{"s":" if (state == IDLE) begin","f":4,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if (next_state == BUSY) begin","f":4,"i":1,"l":77,"h":142},{"s":"All False","f":4,"i":1,"l":77,"h":154}],"br":{"s":" if (next_state == BUSY) begin","f":4,"l":77,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":4,"i":1,"l":97,"h":427},{"s":" BUSY: begin","f":4,"i":1,"l":107,"h":729}],"br":{"s":" unique case (state)","f":4,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_in.valid) begin","f":4,"i":1,"l":102,"h":142},{"s":"All False","f":4,"i":1,"l":102,"h":285}],"br":{"s":" if (lane_in.valid) begin","f":4,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_accepted) begin","f":4,"i":1,"l":111,"h":405},{"s":"All False","f":4,"i":1,"l":111,"h":324}],"br":{"s":" if (elem_accepted) begin","f":4,"l":111,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"i":1,"l":112,"h":237},{"s":" end else begin","f":4,"i":1,"l":115,"h":168}],"br":{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"l":112,"i":1,"p":100.00}}]},"32":{"pr":"/lane_tb/dut/u_sqrt_bf16","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":75,"h":2},{"s":" else begin","f":17,"i":1,"l":83,"h":249}],"br":{"s":" if (!nRST) begin","f":17,"l":75,"i":1,"p":100.00}},{"bs":[{"s":" if (srif.in.valid_in & srif.out.ready_in) begin","f":17,"i":1,"l":95,"h":124},{"s":" else begin","f":17,"i":1,"l":103,"h":666}],"br":{"s":" if (srif.in.valid_in & srif.out.ready_in) begin","f":17,"l":95,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST)","f":17,"i":1,"l":117,"h":2},{"s":" else if (srif.in.valid_in & ready_input_reg)","f":17,"i":1,"l":119,"h":124},{"s":" else if (valid_data_out_internal & srif.in.ready_out)","f":17,"i":1,"l":121,"h":124},{"s":"All False","f":17,"i":1,"l":117,"h":497}],"br":{"s":" if (!nRST)","f":17,"l":117,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":133,"h":2},{"s":" else begin","f":17,"i":1,"l":137,"h":745}],"br":{"s":" if (!nRST) begin","f":17,"l":133,"i":1,"p":100.00}},{"bs":[{"s":" if (third_pass) begin","f":17,"i":1,"l":145,"h":248},{"s":" else if (second_pass) begin","f":17,"i":1,"l":150,"h":372},{"s":" else begin","f":17,"i":1,"l":155,"h":604}],"br":{"s":" if (third_pass) begin","f":17,"l":145,"i":1,"p":100.00}},{"bs":[{"s":" mul_a = exp[0] ? 16'h3f80 : 16'h3FB5;","f":17,"i":1,"l":152,"h":183},{"s":" mul_a = exp[0] ? 16'h3f80 : 16'h3FB5;","t":38,"n":1,"f":17,"i":2,"l":152,"h":189}],"br":{"s":" mul_a = exp[0] ? 16'h3f80 : 16'h3FB5;","f":17,"l":152,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST)","f":17,"i":1,"l":180,"h":2},{"s":" else","f":17,"i":1,"l":182,"h":544}],"br":{"s":" if (!nRST)","f":17,"l":180,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST)","f":17,"i":1,"l":188,"h":2},{"s":" else","f":17,"i":1,"l":190,"h":373}],"br":{"s":" if (!nRST)","f":17,"l":188,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":196,"h":2},{"s":" else begin","f":17,"i":1,"l":200,"h":745}],"br":{"s":" if (!nRST) begin","f":17,"l":196,"i":1,"p":100.00}},{"bs":[{"s":" if (mul_done_reg && !second_pass && !third_pass)","f":17,"i":1,"l":201,"h":124},{"s":" else if (mul_done_reg && second_pass && !third_pass)","f":17,"i":1,"l":203,"h":124},{"s":" else if (mul_done_reg & third_pass) begin","f":17,"i":1,"l":205,"h":124},{"s":"All False","f":17,"i":1,"l":201,"h":373}],"br":{"s":" if (mul_done_reg && !second_pass && !third_pass)","f":17,"l":201,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":214,"h":2},{"s":" else begin","f":17,"i":1,"l":218,"h":745}],"br":{"s":" if (!nRST) begin","f":17,"l":214,"i":1,"p":100.00}},{"bs":[{"s":" if (mul_done_reg && second_pass) begin","f":17,"i":1,"l":219,"h":248},{"s":" else","f":17,"i":1,"l":223,"h":497}],"br":{"s":" if (mul_done_reg && second_pass) begin","f":17,"l":219,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST)","f":17,"i":1,"l":240,"h":2},{"s":" else if (mul_done_reg && second_pass)","f":17,"i":1,"l":242,"h":248},{"s":"All False","f":17,"i":1,"l":240,"h":590}],"br":{"s":" if (!nRST)","f":17,"l":240,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST)","f":17,"i":1,"l":248,"h":2},{"s":" else if (mul_done_reg && third_pass)","f":17,"i":1,"l":250,"h":124},{"s":"All False","f":17,"i":1,"l":248,"h":621}],"br":{"s":" if (!nRST)","f":17,"l":248,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":257,"h":2},{"s":" else begin","f":17,"i":1,"l":260,"h":745}],"br":{"s":" if (!nRST) begin","f":17,"l":257,"i":1,"p":100.00}},{"bs":[{"s":" if (input_is_neg_zero) begin","f":17,"i":1,"l":286,"h":0},{"s":" else if (sign) begin","f":17,"i":1,"l":290,"h":0},{"s":" else if (input_is_inf) begin","f":17,"i":1,"l":294,"h":0},{"s":" else if (input_is_nan) begin","f":17,"i":1,"l":298,"h":0},{"s":" else if (input_is_subnormal || input_is_zero) begin","f":17,"i":1,"l":302,"h":18},{"s":"All False","f":17,"i":1,"l":286,"h":106}],"br":{"s":" if (input_is_neg_zero) begin","f":17,"l":286,"i":1,"p":33.33}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":309,"h":2},{"s":" else if (valid) begin","f":17,"i":1,"l":313,"h":124},{"s":" else if (valid_data_out_internal & srif.in.ready_out) begin","f":17,"i":1,"l":317,"h":124},{"s":"All False","f":17,"i":1,"l":309,"h":553}],"br":{"s":" if (!nRST) begin","f":17,"l":309,"i":1,"p":100.00}},{"bs":[{"s":" assign result_internal = special_flag_latched ? special_result_latched : third_mult_result;","f":17,"i":1,"l":325,"h":36},{"s":" assign result_internal = special_flag_latched ? special_result_latched : third_mult_result;","t":75,"n":1,"f":17,"i":2,"l":325,"h":124}],"br":{"s":" assign result_internal = special_flag_latched ? special_result_latched : third_mult_result;","f":17,"l":325,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":17,"i":1,"l":330,"h":2},{"s":" else begin","f":17,"i":1,"l":334,"h":751}],"br":{"s":" if (!nRST) begin","f":17,"l":330,"i":1,"p":100.00}},{"bs":[{"s":" if (valid_data_out_internal && !srif.in.ready_out) begin","f":17,"i":1,"l":335,"h":0},{"s":" else if (output_held && srif.in.ready_out) begin","f":17,"i":1,"l":339,"h":0},{"s":"All False","f":17,"i":1,"l":335,"h":751}],"br":{"s":" if (valid_data_out_internal && !srif.in.ready_out) begin","f":17,"l":335,"i":1,"p":33.33}},{"bs":[{"s":" assign srif.out.result = output_held ? output_held_val : result_internal;","f":17,"i":1,"l":348,"h":0},{"s":" assign srif.out.result = output_held ? output_held_val : result_internal;","t":41,"n":1,"f":17,"i":2,"l":348,"h":142}],"br":{"s":" assign srif.out.result = output_held ? output_held_val : result_internal;","f":17,"l":348,"i":1,"p":50.00}}]},"33":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1","t":"inst","br":[{"bs":[{"s":" if(nRST == 1'b0) begin","f":11,"i":1,"l":14,"h":2},{"s":" else begin","f":11,"i":1,"l":19,"h":993}],"br":{"s":" if(nRST == 1'b0) begin","f":11,"l":14,"i":1,"p":100.00}},{"bs":[{"s":" if(start == 1'b1) begin","f":11,"i":1,"l":24,"h":372},{"s":"All False","f":11,"i":1,"l":24,"h":621}],"br":{"s":" if(start == 1'b1) begin","f":11,"l":24,"i":1,"p":100.00}},{"bs":[{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":40,"h":1},{"s":" else begin","f":11,"i":1,"l":43,"h":373}],"br":{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"l":40,"i":1,"p":100.00}},{"bs":[{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":47,"h":1},{"s":" else begin","f":11,"i":1,"l":50,"h":373}],"br":{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"l":47,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"i":1,"l":92,"h":308},{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","t":58,"n":1,"f":11,"i":2,"l":92,"h":502}],"br":{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"l":92,"i":1,"p":100.00}},{"bs":[{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"i":1,"l":98,"h":93},{"s":" else","f":11,"i":1,"l":100,"h":220}],"br":{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"l":98,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"i":1,"l":106,"h":7},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":50,"n":1,"f":11,"i":2,"l":106,"h":1252}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":60,"n":2,"f":11,"i":3,"l":106,"h":0},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":79,"n":1,"f":11,"i":4,"l":106,"h":1253}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":3,"p":50.00}}]},"89":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1","t":"inst","br":[{"bs":[{"s":" if(bf1_in[14:7] < bf2_in[14:7]) begin // bf2 has a bigger exponent.","f":18,"i":1,"l":33,"h":131},{"s":" else begin // bf1 has a bigger exponent.","f":18,"i":1,"l":38,"h":244}],"br":{"s":" if(bf1_in[14:7] < bf2_in[14:7]) begin // bf2 has a bigger exponent.","f":18,"l":33,"i":1,"p":100.00}},{"bs":[{"s":" if(bf1_in[14:7] == 8'b0)","f":18,"i":1,"l":50,"h":2},{"s":" else","f":18,"i":1,"l":52,"h":373}],"br":{"s":" if(bf1_in[14:7] == 8'b0)","f":18,"l":50,"i":1,"p":100.00}},{"bs":[{"s":" if(bf2_in[14:7] == 8'b0)","f":18,"i":1,"l":55,"h":1},{"s":" else","f":18,"i":1,"l":57,"h":374}],"br":{"s":" if(bf2_in[14:7] == 8'b0)","f":18,"l":55,"i":1,"p":100.00}},{"bs":[{"s":" if(exp_select == 0) begin // bf2 had a bigger exponent: shift bf1.","f":18,"i":1,"l":70,"h":366},{"s":" else begin // bf1 had a bigger exponent: shift bf2.","f":18,"i":1,"l":89,"h":489}],"br":{"s":" if(exp_select == 0) begin // bf2 had a bigger exponent: shift bf1.","f":18,"l":70,"i":1,"p":100.00}},{"bs":[{"s":" if(exp_diff[7]) begin","f":18,"i":1,"l":76,"h":0},{"s":" else begin","f":18,"i":1,"l":79,"h":366}],"br":{"s":" if(exp_diff[7]) begin","f":18,"l":76,"i":1,"p":50.00}},{"bs":[{"s":" if(exp_diff[7]) begin","f":18,"i":1,"l":90,"h":0},{"s":" else begin","f":18,"i":1,"l":93,"h":489}],"br":{"s":" if(exp_diff[7]) begin","f":18,"l":90,"i":1,"p":50.00}},{"bs":[{"s":" if(frac_shifted > frac_not_shifted) begin // if the mantissae are equal, it doesnt matter what gets selected","f":18,"i":1,"l":113,"h":58},{"s":" else begin","f":18,"i":1,"l":118,"h":423}],"br":{"s":" if(frac_shifted > frac_not_shifted) begin // if the mantissae are equal, it doesnt matter what gets selected","f":18,"l":113,"i":1,"p":100.00}},{"bs":[{"s":" if(nRST == 1'b0) begin","f":18,"i":1,"l":134,"h":2},{"s":" else begin","f":18,"i":1,"l":143,"h":479}],"br":{"s":" if(nRST == 1'b0) begin","f":18,"l":134,"i":1,"p":100.00}},{"bs":[{"s":" if(!signs_differ_l) begin","f":18,"i":1,"l":159,"h":479},{"s":" else begin","f":18,"i":1,"l":163,"h":1}],"br":{"s":" if(!signs_differ_l) begin","f":18,"l":159,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_select == 0) begin","f":18,"i":1,"l":173,"h":367},{"s":" end else begin","f":18,"i":1,"l":175,"h":468}],"br":{"s":" if (exp_select == 0) begin","f":18,"l":173,"i":1,"p":100.00}},{"bs":[{"s":" if (mantissa_overflow == 1) begin","f":18,"i":1,"l":239,"h":720},{"s":" end else begin","f":18,"i":1,"l":243,"h":766}],"br":{"s":" if (mantissa_overflow == 1) begin","f":18,"l":239,"i":1,"p":100.00}},{"bs":[{"s":" if (G & (R | sticky_bit)) begin","f":18,"i":1,"l":274,"h":169},{"s":"All False","f":18,"i":1,"l":274,"h":849}],"br":{"s":" if (G & (R | sticky_bit)) begin","f":18,"l":274,"i":1,"p":100.00}}]},"90":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1/normalizer","t":"inst","br":[{"bs":[{"s":" 10'b01????????: begin","f":19,"i":1,"l":27,"h":64},{"s":" 10'b001???????: begin","f":19,"i":1,"l":31,"h":60},{"s":" 10'b0001??????: begin","f":19,"i":1,"l":35,"h":24},{"s":" 10'b00001?????: begin","f":19,"i":1,"l":39,"h":19},{"s":" 10'b000001????: begin","f":19,"i":1,"l":43,"h":9},{"s":" 10'b0000001???: begin","f":19,"i":1,"l":47,"h":2},{"s":" 10'b00000001??: begin","f":19,"i":1,"l":51,"h":4},{"s":" 10'b000000001?: begin","f":19,"i":1,"l":55,"h":1},{"s":" 10'b0000000001: begin","f":19,"i":1,"l":59,"h":0},{"s":" default: begin","f":19,"i":1,"l":63,"h":297}],"br":{"s":" casez (fraction)","f":19,"l":26,"i":1,"p":90.00}}]},"91":{"pr":"/lane_tb/dut/u_sqrt_sync","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":20,"i":1,"l":44,"h":2},{"s":" end else begin","f":20,"i":1,"l":47,"h":380}],"br":{"s":" if (!nRST) begin","f":20,"l":44,"i":1,"p":100.00}},{"bs":[{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"i":1,"l":48,"h":124},{"s":"All False","f":20,"i":1,"l":48,"h":256}],"br":{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"l":48,"i":1,"p":100.00}},{"bs":[{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"i":1,"l":49,"h":124},{"s":"All False","f":20,"i":1,"l":49,"h":256}],"br":{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"l":49,"i":1,"p":100.00}}]},"92":{"pr":"/lane_tb/dut/u_sqrt_sync/u_fifo","t":"inst","br":[{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":19,"h":2},{"s":" end else begin","f":21,"i":1,"l":21,"h":472}],"br":{"s":" if (!rstn) begin","f":21,"l":19,"i":1,"p":100.00}},{"bs":[{"s":" if (wr_en & !full) begin","f":21,"i":1,"l":22,"h":124},{"s":"All False","f":21,"i":1,"l":22,"h":348}],"br":{"s":" if (wr_en & !full) begin","f":21,"l":22,"i":1,"p":100.00}},{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":30,"h":2},{"s":" end else begin","f":21,"i":1,"l":32,"h":373}],"br":{"s":" if (!rstn) begin","f":21,"l":30,"i":1,"p":100.00}},{"bs":[{"s":" if (rd_en & !empty) begin","f":21,"i":1,"l":33,"h":124},{"s":"All False","f":21,"i":1,"l":33,"h":249}],"br":{"s":" if (rd_en & !empty) begin","f":21,"l":33,"i":1,"p":100.00}}]},"94":{"pr":"/lane_tb/dut/u_seq_div","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":4,"i":1,"l":65,"h":2},{"s":" end else begin","f":4,"i":1,"l":69,"h":811}],"br":{"s":" if (!nRST) begin","f":4,"l":65,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE) begin","f":4,"i":1,"l":72,"h":431},{"s":" else if (state == BUSY && elem_accepted) begin","f":4,"i":1,"l":81,"h":284},{"s":"All False","f":4,"i":1,"l":72,"h":96}],"br":{"s":" if (state == IDLE) begin","f":4,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if (next_state == BUSY) begin","f":4,"i":1,"l":77,"h":142},{"s":"All False","f":4,"i":1,"l":77,"h":289}],"br":{"s":" if (next_state == BUSY) begin","f":4,"l":77,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":4,"i":1,"l":97,"h":427},{"s":" BUSY: begin","f":4,"i":1,"l":107,"h":696}],"br":{"s":" unique case (state)","f":4,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_in.valid) begin","f":4,"i":1,"l":102,"h":142},{"s":"All False","f":4,"i":1,"l":102,"h":285}],"br":{"s":" if (lane_in.valid) begin","f":4,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_accepted) begin","f":4,"i":1,"l":111,"h":392},{"s":"All False","f":4,"i":1,"l":111,"h":304}],"br":{"s":" if (elem_accepted) begin","f":4,"l":111,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"i":1,"l":112,"h":224},{"s":" end else begin","f":4,"i":1,"l":115,"h":168}],"br":{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"l":112,"i":1,"p":100.00}}]},"95":{"pr":"/lane_tb/dut/u_div","t":"inst","br":[{"bs":[{"s":" if (~nRST) begin","f":22,"i":1,"l":36,"h":2},{"s":" end else begin","f":22,"i":1,"l":38,"h":1396}],"br":{"s":" if (~nRST) begin","f":22,"l":36,"i":1,"p":100.00}},{"bs":[{"s":" if (~nRST) begin","f":22,"i":1,"l":49,"h":6},{"s":" end else begin","f":22,"i":1,"l":53,"h":804628}],"br":{"s":" if (~nRST) begin","f":22,"l":49,"i":1,"p":100.00}},{"bs":[{"s":" if (first_cycle) divif.out.ready_in <= 1;","f":22,"i":1,"l":54,"h":1},{"s":"All False","f":22,"i":1,"l":54,"h":804627}],"br":{"s":" if (first_cycle) divif.out.ready_in <= 1;","f":22,"l":54,"i":1,"p":100.00}},{"bs":[{"s":" if (done || fast_path_delayed) divif.out.valid_out <= 1;","f":22,"i":1,"l":58,"h":108},{"s":" else if (divif.in.ready_out && divif.out.valid_out) divif.out.valid_out <= 0;","f":22,"i":1,"l":59,"h":108},{"s":"All False","f":22,"i":1,"l":58,"h":804412}],"br":{"s":" if (done || fast_path_delayed) divif.out.valid_out <= 1;","f":22,"l":58,"i":1,"p":100.00}},{"bs":[{"s":" if (divif.out.valid_out && divif.in.ready_out) divif.out.ready_in <= 1;","f":22,"i":1,"l":61,"h":108},{"s":" else if (divif.in.valid_in && divif.out.ready_in) divif.out.ready_in <= 0;","f":22,"i":1,"l":62,"h":108},{"s":"All False","f":22,"i":1,"l":61,"h":804412}],"br":{"s":" if (divif.out.valid_out && divif.in.ready_out) divif.out.ready_in <= 1;","f":22,"l":61,"i":1,"p":100.00}},{"bs":[{"s":" if (divif.in.valid_in && divif.out.ready_in) begin","f":22,"i":1,"l":102,"h":108},{"s":" end else begin","f":22,"i":1,"l":106,"h":538}],"br":{"s":" if (divif.in.valid_in && divif.out.ready_in) begin","f":22,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (~nRST) begin","f":22,"i":1,"l":114,"h":2},{"s":" end else begin","f":22,"i":1,"l":117,"h":109}],"br":{"s":" if (~nRST) begin","f":22,"l":114,"i":1,"p":100.00}},{"bs":[{"s":" if (exp == 0) begin","f":22,"i":1,"l":181,"h":0},{"s":" end else if (exp == 1) begin","f":22,"i":1,"l":184,"h":0},{"s":" end else if (quotient[MANT_WIDTH+2]) begin","f":22,"i":1,"l":187,"h":0},{"s":" end else begin","f":22,"i":1,"l":190,"h":3}],"br":{"s":" if (exp == 0) begin","f":22,"l":181,"i":1,"p":25.00}},{"bs":[{"s":" if (is_nan)","f":22,"i":1,"l":203,"h":3},{"s":" else if (is_inf || is_ovf && !skip_divider)","f":22,"i":1,"l":205,"h":0},{"s":" else if (is_zero || is_sub)","f":22,"i":1,"l":207,"h":0},{"s":" else","f":22,"i":1,"l":209,"h":1}],"br":{"s":" if (is_nan)","f":22,"l":203,"i":1,"p":50.00}}]},"96":{"pr":"/lane_tb/dut/u_div/m_div","t":"inst","br":[{"bs":[{"s":" if (~nRST) begin","f":22,"i":1,"l":237,"h":2},{"s":" end else begin","f":22,"i":1,"l":243,"h":1}],"br":{"s":" if (~nRST) begin","f":22,"l":237,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":22,"i":1,"l":259,"h":109},{"s":" DIV: begin","f":22,"i":1,"l":269,"h":0},{"s":"All False","f":22,"i":1,"l":258,"h":2}],"br":{"s":" case (state)","f":22,"l":258,"i":1,"p":66.66}},{"bs":[{"s":" if (en) begin","f":22,"i":1,"l":260,"h":0},{"s":"All False","f":22,"i":1,"l":260,"h":109}],"br":{"s":" if (en) begin","f":22,"l":260,"i":1,"p":50.00}},{"bs":[{"s":" next_a = a[A_WIDTH] ? {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} + m : {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} - m;","f":22,"i":1,"l":270,"h":0},{"s":" next_a = a[A_WIDTH] ? {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} + m : {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} - m;","t":46,"n":1,"f":22,"i":2,"l":270,"h":0}],"br":{"s":" next_a = a[A_WIDTH] ? {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} + m : {a[A_WIDTH-1:0], q[MANT_WIDTH+2]} - m;","f":22,"l":270,"i":1,"p":0.00}},{"bs":[{"s":" if (n == 0) next_state = IDLE;","f":22,"i":1,"l":273,"h":0},{"s":"All False","f":22,"i":1,"l":273,"h":0}],"br":{"s":" if (n == 0) next_state = IDLE;","f":22,"l":273,"i":1,"p":0.00}}]},"97":{"pr":"/lane_tb/dut/u_div_sync","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":20,"i":1,"l":44,"h":2},{"s":" end else begin","f":20,"i":1,"l":47,"h":337}],"br":{"s":" if (!nRST) begin","f":20,"l":44,"i":1,"p":100.00}},{"bs":[{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"i":1,"l":48,"h":108},{"s":"All False","f":20,"i":1,"l":48,"h":229}],"br":{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"l":48,"i":1,"p":100.00}},{"bs":[{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"i":1,"l":49,"h":108},{"s":"All False","f":20,"i":1,"l":49,"h":229}],"br":{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"l":49,"i":1,"p":100.00}}]},"98":{"pr":"/lane_tb/dut/u_div_sync/u_fifo","t":"inst","br":[{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":19,"h":2},{"s":" end else begin","f":21,"i":1,"l":21,"h":443}],"br":{"s":" if (!rstn) begin","f":21,"l":19,"i":1,"p":100.00}},{"bs":[{"s":" if (wr_en & !full) begin","f":21,"i":1,"l":22,"h":108},{"s":"All False","f":21,"i":1,"l":22,"h":335}],"br":{"s":" if (wr_en & !full) begin","f":21,"l":22,"i":1,"p":100.00}},{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":30,"h":2},{"s":" end else begin","f":21,"i":1,"l":32,"h":325}],"br":{"s":" if (!rstn) begin","f":21,"l":30,"i":1,"p":100.00}},{"bs":[{"s":" if (rd_en & !empty) begin","f":21,"i":1,"l":33,"h":108},{"s":"All False","f":21,"i":1,"l":33,"h":217}],"br":{"s":" if (rd_en & !empty) begin","f":21,"l":33,"i":1,"p":100.00}}]},"100":{"pr":"/lane_tb/dut/u_seq_mul","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":4,"i":1,"l":65,"h":2},{"s":" end else begin","f":4,"i":1,"l":69,"h":748}],"br":{"s":" if (!nRST) begin","f":4,"l":65,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE) begin","f":4,"i":1,"l":72,"h":430},{"s":" else if (state == BUSY && elem_accepted) begin","f":4,"i":1,"l":81,"h":284},{"s":"All False","f":4,"i":1,"l":72,"h":34}],"br":{"s":" if (state == IDLE) begin","f":4,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if (next_state == BUSY) begin","f":4,"i":1,"l":77,"h":142},{"s":"All False","f":4,"i":1,"l":77,"h":288}],"br":{"s":" if (next_state == BUSY) begin","f":4,"l":77,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":4,"i":1,"l":97,"h":427},{"s":" BUSY: begin","f":4,"i":1,"l":107,"h":561}],"br":{"s":" unique case (state)","f":4,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_in.valid) begin","f":4,"i":1,"l":102,"h":142},{"s":"All False","f":4,"i":1,"l":102,"h":285}],"br":{"s":" if (lane_in.valid) begin","f":4,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_accepted) begin","f":4,"i":1,"l":111,"h":350},{"s":"All False","f":4,"i":1,"l":111,"h":211}],"br":{"s":" if (elem_accepted) begin","f":4,"l":111,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"i":1,"l":112,"h":207},{"s":" end else begin","f":4,"i":1,"l":115,"h":143}],"br":{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"l":112,"i":1,"p":100.00}}]},"101":{"pr":"/lane_tb/dut/u_mul","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":10,"i":1,"l":57,"h":2},{"s":" end else begin","f":10,"i":1,"l":63,"h":715}],"br":{"s":" if (!nRST) begin","f":10,"l":57,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE &&","f":10,"i":1,"l":70,"h":123},{"s":"All False","f":10,"i":1,"l":70,"h":592}],"br":{"s":" if (state == IDLE &&","f":10,"l":70,"i":1,"p":100.00}},{"bs":[{"s":" if (core_done) begin","f":10,"i":1,"l":80,"h":123},{"s":"All False","f":10,"i":1,"l":80,"h":592}],"br":{"s":" if (core_done) begin","f":10,"l":80,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":10,"i":1,"l":95,"h":276},{"s":" BUSY: begin","f":10,"i":1,"l":103,"h":258},{"s":" HAVE_RES: begin","f":10,"i":1,"l":113,"h":128}],"br":{"s":" unique case (state)","f":10,"l":92,"i":1,"p":100.00}},{"bs":[{"s":" if (m_if.in.valid_in && m_if.out.ready_in) begin","f":10,"i":1,"l":96,"h":123},{"s":"All False","f":10,"i":1,"l":96,"h":153}],"br":{"s":" if (m_if.in.valid_in && m_if.out.ready_in) begin","f":10,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (core_done) begin","f":10,"i":1,"l":104,"h":130},{"s":"All False","f":10,"i":1,"l":104,"h":128}],"br":{"s":" if (core_done) begin","f":10,"l":104,"i":1,"p":100.00}},{"bs":[{"s":" if (m_if.out.valid_out && m_if.in.ready_out) begin","f":10,"i":1,"l":114,"h":123},{"s":"All False","f":10,"i":1,"l":114,"h":5}],"br":{"s":" if (m_if.out.valid_out && m_if.in.ready_out) begin","f":10,"l":114,"i":1,"p":100.00}}]},"102":{"pr":"/lane_tb/dut/u_mul/u_mul_core","t":"inst","br":[{"bs":[{"s":" if(nRST == 1'b0) begin","f":11,"i":1,"l":14,"h":2},{"s":" else begin","f":11,"i":1,"l":19,"h":247}],"br":{"s":" if(nRST == 1'b0) begin","f":11,"l":14,"i":1,"p":100.00}},{"bs":[{"s":" if(start == 1'b1) begin","f":11,"i":1,"l":24,"h":123},{"s":"All False","f":11,"i":1,"l":24,"h":124}],"br":{"s":" if(start == 1'b1) begin","f":11,"l":24,"i":1,"p":100.00}},{"bs":[{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":40,"h":16},{"s":" else begin","f":11,"i":1,"l":43,"h":103}],"br":{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"l":40,"i":1,"p":100.00}},{"bs":[{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":47,"h":10},{"s":" else begin","f":11,"i":1,"l":50,"h":109}],"br":{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"l":47,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"i":1,"l":92,"h":165},{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","t":58,"n":1,"f":11,"i":2,"l":92,"h":249}],"br":{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"l":92,"i":1,"p":100.00}},{"bs":[{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"i":1,"l":98,"h":73},{"s":" else","f":11,"i":1,"l":100,"h":91}],"br":{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"l":98,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"i":1,"l":106,"h":1},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":50,"n":1,"f":11,"i":2,"l":106,"h":543}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":60,"n":2,"f":11,"i":3,"l":106,"h":0},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":79,"n":1,"f":11,"i":4,"l":106,"h":544}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":3,"p":50.00}}]},"158":{"pr":"/lane_tb/dut/u_mul_sync","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":20,"i":1,"l":44,"h":2},{"s":" end else begin","f":20,"i":1,"l":47,"h":427}],"br":{"s":" if (!nRST) begin","f":20,"l":44,"i":1,"p":100.00}},{"bs":[{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"i":1,"l":48,"h":123},{"s":"All False","f":20,"i":1,"l":48,"h":304}],"br":{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"l":48,"i":1,"p":100.00}},{"bs":[{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"i":1,"l":49,"h":123},{"s":"All False","f":20,"i":1,"l":49,"h":304}],"br":{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"l":49,"i":1,"p":100.00}}]},"159":{"pr":"/lane_tb/dut/u_mul_sync/u_fifo","t":"inst","br":[{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":19,"h":2},{"s":" end else begin","f":21,"i":1,"l":21,"h":443}],"br":{"s":" if (!rstn) begin","f":21,"l":19,"i":1,"p":100.00}},{"bs":[{"s":" if (wr_en & !full) begin","f":21,"i":1,"l":22,"h":123},{"s":"All False","f":21,"i":1,"l":22,"h":320}],"br":{"s":" if (wr_en & !full) begin","f":21,"l":22,"i":1,"p":100.00}},{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":30,"h":2},{"s":" end else begin","f":21,"i":1,"l":32,"h":370}],"br":{"s":" if (!rstn) begin","f":21,"l":30,"i":1,"p":100.00}},{"bs":[{"s":" if (rd_en & !empty) begin","f":21,"i":1,"l":33,"h":123},{"s":"All False","f":21,"i":1,"l":33,"h":247}],"br":{"s":" if (rd_en & !empty) begin","f":21,"l":33,"i":1,"p":100.00}}]},"161":{"pr":"/lane_tb/dut/u_seq_valu","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":4,"i":1,"l":65,"h":2},{"s":" end else begin","f":4,"i":1,"l":69,"h":754}],"br":{"s":" if (!nRST) begin","f":4,"l":65,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE) begin","f":4,"i":1,"l":72,"h":432},{"s":" else if (state == BUSY && elem_accepted) begin","f":4,"i":1,"l":81,"h":285},{"s":"All False","f":4,"i":1,"l":72,"h":37}],"br":{"s":" if (state == IDLE) begin","f":4,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if (next_state == BUSY) begin","f":4,"i":1,"l":77,"h":143},{"s":"All False","f":4,"i":1,"l":77,"h":289}],"br":{"s":" if (next_state == BUSY) begin","f":4,"l":77,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":4,"i":1,"l":97,"h":428},{"s":" BUSY: begin","f":4,"i":1,"l":107,"h":568}],"br":{"s":" unique case (state)","f":4,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_in.valid) begin","f":4,"i":1,"l":102,"h":143},{"s":"All False","f":4,"i":1,"l":102,"h":285}],"br":{"s":" if (lane_in.valid) begin","f":4,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_accepted) begin","f":4,"i":1,"l":111,"h":354},{"s":"All False","f":4,"i":1,"l":111,"h":214}],"br":{"s":" if (elem_accepted) begin","f":4,"l":111,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"i":1,"l":112,"h":210},{"s":" end else begin","f":4,"i":1,"l":115,"h":144}],"br":{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"l":112,"i":1,"p":100.00}}]},"162":{"pr":"/lane_tb/dut/u_valu","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":23,"i":1,"l":60,"h":2},{"s":" end else begin","f":23,"i":1,"l":62,"h":667}],"br":{"s":" if (!nRST) begin","f":23,"l":60,"i":1,"p":100.00}},{"bs":[{"s":" if (accept_in) begin","f":23,"i":1,"l":63,"h":125},{"s":" end else if (alu.out.valid_out && alu.in.ready_out) begin","f":23,"i":1,"l":66,"h":125},{"s":"All False","f":23,"i":1,"l":63,"h":417}],"br":{"s":" if (accept_in) begin","f":23,"l":63,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":23,"i":1,"l":95,"h":2},{"s":" end else begin","f":23,"i":1,"l":101,"h":563}],"br":{"s":" if (!nRST) begin","f":23,"l":95,"i":1,"p":100.00}},{"bs":[{"s":" if (accept_in) begin","f":23,"i":1,"l":102,"h":125},{"s":"All False","f":23,"i":1,"l":102,"h":438}],"br":{"s":" if (accept_in) begin","f":23,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":23,"i":1,"l":115,"h":2},{"s":" end else begin","f":23,"i":1,"l":121,"h":251}],"br":{"s":" if (!nRST) begin","f":23,"l":115,"i":1,"p":100.00}},{"bs":[{"s":" if (any_nan_s2) begin","f":23,"i":1,"l":134,"h":0},{"s":" end else begin","f":23,"i":1,"l":136,"h":366}],"br":{"s":" if (any_nan_s2) begin","f":23,"l":134,"i":1,"p":50.00}},{"bs":[{"s":" VR_SUM, VR_SUB: result_next = bf_out;","f":23,"i":1,"l":138,"h":0},{"s":" VR_SUM, VR_SUB: result_next = bf_out;","f":23,"i":2,"l":138,"h":0},{"s":" VR_MIN: result_next = (bf_out[15] ? value_a_s2 : value_b_s2);","f":23,"i":1,"l":139,"h":0},{"s":" VR_MAX: result_next = (bf_out[15] ? value_b_s2 : value_a_s2);","f":23,"i":1,"l":140,"h":365},{"s":" default: result_next = 16'h0000;","f":23,"i":1,"l":141,"h":1}],"br":{"s":" unique case (alu_op_s2)","f":23,"l":137,"i":1,"p":40.00}},{"bs":[{"s":" VR_MIN: result_next = (bf_out[15] ? value_a_s2 : value_b_s2);","t":58,"n":1,"f":23,"i":2,"l":139,"h":0},{"s":" VR_MIN: result_next = (bf_out[15] ? value_a_s2 : value_b_s2);","t":71,"n":1,"f":23,"i":3,"l":139,"h":0}],"br":{"s":" VR_MIN: result_next = (bf_out[15] ? value_a_s2 : value_b_s2);","f":23,"l":139,"i":2,"p":0.00}},{"bs":[{"s":" VR_MAX: result_next = (bf_out[15] ? value_b_s2 : value_a_s2);","t":58,"n":1,"f":23,"i":2,"l":140,"h":134},{"s":" VR_MAX: result_next = (bf_out[15] ? value_b_s2 : value_a_s2);","t":71,"n":1,"f":23,"i":3,"l":140,"h":230}],"br":{"s":" VR_MAX: result_next = (bf_out[15] ? value_b_s2 : value_a_s2);","f":23,"l":140,"i":2,"p":100.00}},{"bs":[{"s":" if (!nRST) begin","f":23,"i":1,"l":150,"h":6},{"s":" end else begin","f":23,"i":1,"l":153,"h":804628}],"br":{"s":" if (!nRST) begin","f":23,"l":150,"i":1,"p":100.00}},{"bs":[{"s":" if (alu.out.valid_out && alu.in.ready_out) begin","f":23,"i":1,"l":155,"h":125},{"s":"All False","f":23,"i":1,"l":155,"h":804503}],"br":{"s":" if (alu.out.valid_out && alu.in.ready_out) begin","f":23,"l":155,"i":1,"p":100.00}},{"bs":[{"s":" if (valid_s2) begin","f":23,"i":1,"l":162,"h":125},{"s":"All False","f":23,"i":1,"l":162,"h":804503}],"br":{"s":" if (valid_s2) begin","f":23,"l":162,"i":1,"p":100.00}}]},"163":{"pr":"/lane_tb/dut/u_valu/adder","t":"inst","br":[{"bs":[{"s":"assign bf2_modified = {(op ? ~bf2_in[15] : bf2_in[15]), bf2_in[14:0]};","f":24,"i":1,"l":14,"h":126},{"s":"assign bf2_modified = {(op ? ~bf2_in[15] : bf2_in[15]), bf2_in[14:0]};","t":27,"n":1,"f":24,"i":2,"l":14,"h":0}],"br":{"s":"assign bf2_modified = {(op ? ~bf2_in[15] : bf2_in[15]), bf2_in[14:0]};","f":24,"l":14,"i":1,"p":50.00}},{"bs":[{"s":" if(bf1_in[14:7] < bf2_modified[14:7]) begin // bf2 has a bigger exponent.","f":24,"i":1,"l":35,"h":40},{"s":" else begin // bf1 has a bigger exponent.","f":24,"i":1,"l":40,"h":83}],"br":{"s":" if(bf1_in[14:7] < bf2_modified[14:7]) begin // bf2 has a bigger exponent.","f":24,"l":35,"i":1,"p":100.00}},{"bs":[{"s":" if(bf1_in[14:7] == 8'b0)","f":24,"i":1,"l":52,"h":16},{"s":" else","f":24,"i":1,"l":54,"h":107}],"br":{"s":" if(bf1_in[14:7] == 8'b0)","f":24,"l":52,"i":1,"p":100.00}},{"bs":[{"s":" if(bf2_modified[14:7] == 8'b0)","f":24,"i":1,"l":57,"h":21},{"s":" else","f":24,"i":1,"l":59,"h":102}],"br":{"s":" if(bf2_modified[14:7] == 8'b0)","f":24,"l":57,"i":1,"p":100.00}},{"bs":[{"s":" if(exp_select == 0) begin // bf2 had a bigger exponent: shift bf1.","f":24,"i":1,"l":72,"h":75},{"s":" else begin // bf1 had a bigger exponent: shift bf2.","f":24,"i":1,"l":88,"h":162}],"br":{"s":" if(exp_select == 0) begin // bf2 had a bigger exponent: shift bf1.","f":24,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if(exp_diff[7] | ~|bf1_in[14:7]) begin","f":24,"i":1,"l":75,"h":16},{"s":" else begin","f":24,"i":1,"l":78,"h":59}],"br":{"s":" if(exp_diff[7] | ~|bf1_in[14:7]) begin","f":24,"l":75,"i":1,"p":100.00}},{"bs":[{"s":" frac_not_shifted = ~|bf2_modified[14:7] ? 10'b0 : {frac_leading_bit_bf2, bf2_modified[6:0], 2'b00};","f":24,"i":1,"l":83,"h":8},{"s":" frac_not_shifted = ~|bf2_modified[14:7] ? 10'b0 : {frac_leading_bit_bf2, bf2_modified[6:0], 2'b00};","t":36,"n":2,"f":24,"i":2,"l":83,"h":67}],"br":{"s":" frac_not_shifted = ~|bf2_modified[14:7] ? 10'b0 : {frac_leading_bit_bf2, bf2_modified[6:0], 2'b00};","f":24,"l":83,"i":1,"p":100.00}},{"bs":[{"s":" if(exp_diff[7] | ~|bf1_in[14:7]) begin","f":24,"i":1,"l":89,"h":16},{"s":" else begin","f":24,"i":1,"l":92,"h":146}],"br":{"s":" if(exp_diff[7] | ~|bf1_in[14:7]) begin","f":24,"l":89,"i":1,"p":100.00}},{"bs":[{"s":" frac_not_shifted = ~|bf1_in[14:7] ? 10'b0 : {frac_leading_bit_bf1, bf1_in[6:0], 2'b00};","f":24,"i":1,"l":97,"h":16},{"s":" frac_not_shifted = ~|bf1_in[14:7] ? 10'b0 : {frac_leading_bit_bf1, bf1_in[6:0], 2'b00};","t":38,"n":1,"f":24,"i":2,"l":97,"h":144}],"br":{"s":" frac_not_shifted = ~|bf1_in[14:7] ? 10'b0 : {frac_leading_bit_bf1, bf1_in[6:0], 2'b00};","f":24,"l":97,"i":1,"p":100.00}},{"bs":[{"s":" if(frac_shifted > frac_not_shifted) begin // if the mantissae are equal, it doesnt matter what gets selected","f":24,"i":1,"l":112,"h":7},{"s":" else begin","f":24,"i":1,"l":117,"h":118}],"br":{"s":" if(frac_shifted > frac_not_shifted) begin // if the mantissae are equal, it doesnt matter what gets selected","f":24,"l":112,"i":1,"p":100.00}},{"bs":[{"s":" if(nRST == 1'b0) begin","f":24,"i":1,"l":133,"h":2},{"s":" else begin","f":24,"i":1,"l":142,"h":123}],"br":{"s":" if(nRST == 1'b0) begin","f":24,"l":133,"i":1,"p":100.00}},{"bs":[{"s":" if(!signs_differ_l) begin","f":24,"i":1,"l":159,"h":2},{"s":" else begin","f":24,"i":1,"l":163,"h":249}],"br":{"s":" if(!signs_differ_l) begin","f":24,"l":159,"i":1,"p":100.00}},{"bs":[{"s":" if (~|bf1_in[14:0] & ~|bf2_modified[1:0]) begin ","f":24,"i":1,"l":168,"h":4},{"s":"All False","f":24,"i":1,"l":168,"h":247}],"br":{"s":" if (~|bf1_in[14:0] & ~|bf2_modified[1:0]) begin ","f":24,"l":168,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_select == 0) begin","f":24,"i":1,"l":176,"h":69},{"s":" end else begin","f":24,"i":1,"l":178,"h":152}],"br":{"s":" if (exp_select == 0) begin","f":24,"l":176,"i":1,"p":100.00}},{"bs":[{"s":" if (mantissa_overflow == 1) begin","f":24,"i":1,"l":225,"h":0},{"s":" end else begin","f":24,"i":1,"l":229,"h":425}],"br":{"s":" if (mantissa_overflow == 1) begin","f":24,"l":225,"i":1,"p":50.00}},{"bs":[{"s":" if (G & (R | sticky_bit)) begin","f":24,"i":1,"l":258,"h":58},{"s":"All False","f":24,"i":1,"l":258,"h":255}],"br":{"s":" if (G & (R | sticky_bit)) begin","f":24,"l":258,"i":1,"p":100.00}},{"bs":[{"s":" if (is_inf1 & is_inf2 & (bf1_in[15] ^ bf2_modified[15])) begin ","f":24,"i":1,"l":274,"h":0},{"s":" end else if ((&bf1_in[14:8] & ~bf1_in[7] & &bf1_in[6:0] & |bf2_modified[14:0]) | (&bf2_modified[14:8] & ~bf2_modified[7] & &bf2_modified[6:0] & |bf1_in[14:0]) & ~(bf1_in[15] ^ bf2_modified[15])) begin ","f":24,"i":1,"l":277,"h":0},{"s":" end else if (is_inf1 | is_nan1) begin ","f":24,"i":1,"l":280,"h":0},{"s":" end else if (is_inf2 | is_nan2) begin ","f":24,"i":1,"l":282,"h":0},{"s":" end else if (xor_out[15] & ~|xor_out[14:7]) begin ","f":24,"i":1,"l":285,"h":63},{"s":" end else begin ","f":24,"i":1,"l":288,"h":313}],"br":{"s":" if (is_inf1 & is_inf2 & (bf1_in[15] ^ bf2_modified[15])) begin ","f":24,"l":274,"i":1,"p":33.33}},{"bs":[{"s":" bf_out = bf1_in[15] ? 16'hff80 : 16'h7F80; ","f":24,"i":1,"l":278,"h":0},{"s":" bf_out = bf1_in[15] ? 16'hff80 : 16'h7F80; ","t":43,"n":1,"f":24,"i":2,"l":278,"h":0}],"br":{"s":" bf_out = bf1_in[15] ? 16'hff80 : 16'h7F80; ","f":24,"l":278,"i":1,"p":0.00}}]},"164":{"pr":"/lane_tb/dut/u_valu/adder/normalizer","t":"inst","br":[{"bs":[{"s":" 10'b01????????: begin","f":19,"i":1,"l":27,"h":27},{"s":" 10'b001???????: begin","f":19,"i":1,"l":31,"h":12},{"s":" 10'b0001??????: begin","f":19,"i":1,"l":35,"h":1},{"s":" 10'b00001?????: begin","f":19,"i":1,"l":39,"h":2},{"s":" 10'b000001????: begin","f":19,"i":1,"l":43,"h":1},{"s":" 10'b0000001???: begin","f":19,"i":1,"l":47,"h":0},{"s":" 10'b00000001??: begin","f":19,"i":1,"l":51,"h":0},{"s":" 10'b000000001?: begin","f":19,"i":1,"l":55,"h":0},{"s":" 10'b0000000001: begin","f":19,"i":1,"l":59,"h":0},{"s":" default: begin","f":19,"i":1,"l":63,"h":80}],"br":{"s":" casez (fraction)","f":19,"l":26,"i":1,"p":60.00}}]},"165":{"pr":"/lane_tb/dut/u_valu_sync","t":"inst","br":[{"bs":[{"s":" if (!nRST) begin","f":20,"i":1,"l":44,"h":2},{"s":" end else begin","f":20,"i":1,"l":47,"h":434}],"br":{"s":" if (!nRST) begin","f":20,"l":44,"i":1,"p":100.00}},{"bs":[{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"i":1,"l":48,"h":125},{"s":"All False","f":20,"i":1,"l":48,"h":309}],"br":{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"l":48,"i":1,"p":100.00}},{"bs":[{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"i":1,"l":49,"h":125},{"s":"All False","f":20,"i":1,"l":49,"h":309}],"br":{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"l":49,"i":1,"p":100.00}}]},"166":{"pr":"/lane_tb/dut/u_valu_sync/u_fifo","t":"inst","br":[{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":19,"h":2},{"s":" end else begin","f":21,"i":1,"l":21,"h":449}],"br":{"s":" if (!rstn) begin","f":21,"l":19,"i":1,"p":100.00}},{"bs":[{"s":" if (wr_en & !full) begin","f":21,"i":1,"l":22,"h":125},{"s":"All False","f":21,"i":1,"l":22,"h":324}],"br":{"s":" if (wr_en & !full) begin","f":21,"l":22,"i":1,"p":100.00}},{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":30,"h":2},{"s":" end else begin","f":21,"i":1,"l":32,"h":375}],"br":{"s":" if (!rstn) begin","f":21,"l":30,"i":1,"p":100.00}},{"bs":[{"s":" if (rd_en & !empty) begin","f":21,"i":1,"l":33,"h":125},{"s":"All False","f":21,"i":1,"l":33,"h":250}],"br":{"s":" if (rd_en & !empty) begin","f":21,"l":33,"i":1,"p":100.00}}]},"27":{"pr":"/lane_tb","t":"inst","br":[{"bs":[{"s":" if (!nRST || !dir_monitor_en) begin","f":2,"i":1,"l":106,"h":804586},{"s":" end else begin","f":2,"i":1,"l":109,"h":48}],"br":{"s":" if (!nRST || !dir_monitor_en) begin","f":2,"l":106,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT]) begin","f":2,"i":1,"l":110,"h":3},{"s":"All False","f":2,"i":1,"l":110,"h":45}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT]) begin","f":2,"l":110,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST || !dir_monitor_en_div) begin","f":2,"i":1,"l":131,"h":804577},{"s":" end else begin","f":2,"i":1,"l":134,"h":57}],"br":{"s":" if (!nRST || !dir_monitor_en_div) begin","f":2,"l":131,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV]) begin","f":2,"i":1,"l":135,"h":3},{"s":"All False","f":2,"i":1,"l":135,"h":54}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV]) begin","f":2,"l":135,"i":1,"p":100.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":197,"h":0},{"s":"All False","f":2,"i":1,"l":197,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":197,"i":1,"p":50.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":234,"h":0},{"s":"All False","f":2,"i":1,"l":234,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":234,"i":1,"p":50.00}},{"bs":[{"s":" if (dir_seen_results !== expected_results) begin","f":2,"i":1,"l":300,"h":0},{"s":" end else begin","f":2,"i":1,"l":304,"h":1}],"br":{"s":" if (dir_seen_results !== expected_results) begin","f":2,"l":300,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) expected_results++;","f":2,"i":1,"l":325,"h":1},{"s":"All False","f":2,"i":1,"l":325,"h":1}],"br":{"s":" if (mask[i]) expected_results++;","f":2,"l":325,"i":1,"p":100.00}},{"bs":[{"s":" if (dir_seen_results !== expected_results) begin","f":2,"i":1,"l":340,"h":0},{"s":" end else begin","f":2,"i":1,"l":344,"h":1}],"br":{"s":" if (dir_seen_results !== expected_results) begin","f":2,"l":340,"i":1,"p":50.00}},{"bs":[{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"i":1,"l":405,"h":0},{"s":" end else begin","f":2,"i":1,"l":409,"h":1}],"br":{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"l":405,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) expected_results++;","f":2,"i":1,"l":430,"h":1},{"s":"All False","f":2,"i":1,"l":430,"h":1}],"br":{"s":" if (mask[i]) expected_results++;","f":2,"l":430,"i":1,"p":100.00}},{"bs":[{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"i":1,"l":445,"h":0},{"s":" end else begin","f":2,"i":1,"l":449,"h":1}],"br":{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"l":445,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[VALU] !== vsel_t'(1)) begin","f":2,"i":1,"l":485,"h":0},{"s":"All False","f":2,"i":1,"l":485,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[VALU] !== vsel_t'(1)) begin","f":2,"l":485,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":573,"h":121},{"s":"All False","f":2,"i":1,"l":573,"h":119}],"br":{"s":" if (mask[i]) begin","f":2,"l":573,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 7 || base_vd == 9) && mask != 0) begin","f":2,"i":1,"l":581,"h":15},{"s":"All False","f":2,"i":1,"l":581,"h":105}],"br":{"s":" if ((base_vd == 7 || base_vd == 9) && mask != 0) begin","f":2,"l":581,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":589,"h":5},{"s":"All False","f":2,"i":1,"l":589,"h":115}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":589,"i":1,"p":100.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":627,"h":105},{"s":"All False","f":2,"i":1,"l":627,"h":135}],"br":{"s":" if (mask[i]) begin","f":2,"l":627,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 17 || base_vd == 19) && mask != 0) begin","f":2,"i":1,"l":635,"h":0},{"s":"All False","f":2,"i":1,"l":635,"h":120}],"br":{"s":" if ((base_vd == 17 || base_vd == 19) && mask != 0) begin","f":2,"l":635,"i":1,"p":50.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":643,"h":6},{"s":"All False","f":2,"i":1,"l":643,"h":114}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":643,"i":1,"p":100.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":670,"h":1380},{"s":"All False","f":2,"i":1,"l":670,"h":90}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":670,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":671,"h":696},{"s":" else","f":2,"i":1,"l":673,"h":684}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":671,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"i":1,"l":680,"h":121},{"s":"All False","f":2,"i":1,"l":680,"h":1349}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"l":680,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":683,"h":0},{"s":" end else begin","f":2,"i":1,"l":686,"h":121}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":683,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_SQRT] !== exp.vd) begin","f":2,"i":1,"l":689,"h":0},{"s":"All False","f":2,"i":1,"l":689,"h":121}],"br":{"s":" if (lane_if.lane_out.vd[FU_SQRT] !== exp.vd) begin","f":2,"l":689,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_SQRT] !== exp.elem_idx) begin","f":2,"i":1,"l":696,"h":0},{"s":"All False","f":2,"i":1,"l":696,"h":121}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_SQRT] !== exp.elem_idx) begin","f":2,"l":696,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":718,"h":3},{"s":"All False","f":2,"i":1,"l":718,"h":1467}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":718,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":725,"h":0},{"s":"All False","f":2,"i":1,"l":725,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":725,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":762,"h":121},{"s":"All False","f":2,"i":1,"l":762,"h":119}],"br":{"s":" if (mask[i]) begin","f":2,"l":762,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 41 || base_vd == 43) && mask != 0) begin","f":2,"i":1,"l":770,"h":16},{"s":"All False","f":2,"i":1,"l":770,"h":104}],"br":{"s":" if ((base_vd == 41 || base_vd == 43) && mask != 0) begin","f":2,"l":770,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":778,"h":5},{"s":"All False","f":2,"i":1,"l":778,"h":115}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":778,"i":1,"p":100.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":805,"h":0},{"s":"All False","f":2,"i":1,"l":805,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":805,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":854,"h":120},{"s":"All False","f":2,"i":1,"l":854,"h":120}],"br":{"s":" if (mask[i]) begin","f":2,"l":854,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 31 || base_vd == 33) && mask != 0) begin","f":2,"i":1,"l":862,"h":16},{"s":"All False","f":2,"i":1,"l":862,"h":104}],"br":{"s":" if ((base_vd == 31 || base_vd == 33) && mask != 0) begin","f":2,"l":862,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":870,"h":4},{"s":"All False","f":2,"i":1,"l":870,"h":116}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":870,"i":1,"p":100.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":902,"h":659},{"s":"All False","f":2,"i":1,"l":902,"h":68}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":902,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":903,"h":345},{"s":" else","f":2,"i":1,"l":905,"h":314}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":903,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":912,"h":121},{"s":"All False","f":2,"i":1,"l":912,"h":606}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":912,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":915,"h":0},{"s":" end else begin","f":2,"i":1,"l":918,"h":121}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":915,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp.vd) begin","f":2,"i":1,"l":921,"h":0},{"s":"All False","f":2,"i":1,"l":921,"h":121}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp.vd) begin","f":2,"l":921,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_VALU] !== exp.elem_idx) begin","f":2,"i":1,"l":928,"h":0},{"s":"All False","f":2,"i":1,"l":928,"h":121}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_VALU] !== exp.elem_idx) begin","f":2,"l":928,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":956,"h":3},{"s":"All False","f":2,"i":1,"l":956,"h":724}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":956,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":972,"h":0},{"s":"All False","f":2,"i":1,"l":972,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":972,"i":1,"p":50.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":1010,"h":1216},{"s":"All False","f":2,"i":1,"l":1010,"h":111}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":1010,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":1011,"h":616},{"s":" else","f":2,"i":1,"l":1013,"h":600}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":1011,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"i":1,"l":1020,"h":105},{"s":"All False","f":2,"i":1,"l":1020,"h":1222}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"l":1020,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1023,"h":0},{"s":" end else begin","f":2,"i":1,"l":1026,"h":105}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1023,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_DIV] !== exp.vd) begin","f":2,"i":1,"l":1029,"h":0},{"s":"All False","f":2,"i":1,"l":1029,"h":105}],"br":{"s":" if (lane_if.lane_out.vd[FU_DIV] !== exp.vd) begin","f":2,"l":1029,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_DIV] !== exp.elem_idx) begin","f":2,"i":1,"l":1036,"h":0},{"s":"All False","f":2,"i":1,"l":1036,"h":105}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_DIV] !== exp.elem_idx) begin","f":2,"l":1036,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":1064,"h":3},{"s":"All False","f":2,"i":1,"l":1064,"h":1324}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":1064,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":1080,"h":0},{"s":"All False","f":2,"i":1,"l":1080,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":1080,"i":1,"p":50.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":1115,"h":642},{"s":"All False","f":2,"i":1,"l":1115,"h":69}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":1115,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":1116,"h":327},{"s":" else","f":2,"i":1,"l":1118,"h":315}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":1116,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1125,"h":120},{"s":"All False","f":2,"i":1,"l":1125,"h":591}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1125,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1128,"h":0},{"s":" end else begin","f":2,"i":1,"l":1131,"h":120}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1128,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp.vd) begin","f":2,"i":1,"l":1134,"h":0},{"s":"All False","f":2,"i":1,"l":1134,"h":120}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp.vd) begin","f":2,"l":1134,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_MUL] !== exp.elem_idx) begin","f":2,"i":1,"l":1141,"h":0},{"s":"All False","f":2,"i":1,"l":1141,"h":120}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_MUL] !== exp.elem_idx) begin","f":2,"l":1141,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":1169,"h":3},{"s":"All False","f":2,"i":1,"l":1169,"h":708}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":1169,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":1185,"h":0},{"s":"All False","f":2,"i":1,"l":1185,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":1185,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1232,"h":1},{"s":" end else begin","f":2,"i":1,"l":1234,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1232,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1237,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1237,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1237,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1256,"h":1},{"s":" end else begin","f":2,"i":1,"l":1258,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1256,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1261,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1261,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1261,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"i":1,"l":1289,"h":0},{"s":"All False","f":2,"i":1,"l":1289,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"l":1289,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1299,"h":1},{"s":" end else begin","f":2,"i":1,"l":1301,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1299,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1304,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1304,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1304,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1325,"h":1},{"s":" end else begin","f":2,"i":1,"l":1327,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1325,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1330,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1330,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1330,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1361,"h":1},{"s":" end else begin","f":2,"i":1,"l":1364,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1361,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1367,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1367,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1367,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1396,"h":1},{"s":" end else begin","f":2,"i":1,"l":1399,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1396,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1402,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1402,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1402,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"i":1,"l":1433,"h":0},{"s":"All False","f":2,"i":1,"l":1433,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"l":1433,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1447,"h":1},{"s":" end else begin","f":2,"i":1,"l":1449,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1447,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1452,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1452,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1452,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1479,"h":1},{"s":" end else begin","f":2,"i":1,"l":1482,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1479,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1485,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1485,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1485,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1538,"h":2},{"s":"All False","f":2,"i":1,"l":1538,"h":7}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1538,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1541,"h":0},{"s":" end else begin","f":2,"i":1,"l":1544,"h":2}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1541,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"i":1,"l":1548,"h":0},{"s":"All False","f":2,"i":1,"l":1548,"h":2}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"l":1548,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1568,"h":1},{"s":" end else begin","f":2,"i":1,"l":1570,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1568,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1573,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1573,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1573,"i":1,"p":0.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":1603,"h":1},{"s":"All False","f":2,"i":1,"l":1603,"h":1}],"br":{"s":" if (mask[i]) begin","f":2,"l":1603,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1622,"h":1},{"s":"All False","f":2,"i":1,"l":1622,"h":5}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1622,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1625,"h":0},{"s":" end else begin","f":2,"i":1,"l":1628,"h":1}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1625,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"i":1,"l":1632,"h":0},{"s":"All False","f":2,"i":1,"l":1632,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"l":1632,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1652,"h":1},{"s":" end else begin","f":2,"i":1,"l":1654,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1652,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1657,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1657,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1657,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1681,"h":1},{"s":" end else begin","f":2,"i":1,"l":1684,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1681,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1687,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1687,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1687,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1709,"h":1},{"s":" end else begin","f":2,"i":1,"l":1712,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1709,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1715,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1715,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1715,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1757,"h":0},{"s":"All False","f":2,"i":1,"l":1757,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1757,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1771,"h":1},{"s":" end else begin","f":2,"i":1,"l":1773,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1771,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1776,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1776,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1776,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1800,"h":1},{"s":" end else begin","f":2,"i":1,"l":1803,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1800,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1806,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1806,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1806,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":1860,"h":2},{"s":"All False","f":2,"i":1,"l":1860,"h":7}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":1860,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1863,"h":0},{"s":" end else begin","f":2,"i":1,"l":1866,"h":2}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1863,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"i":1,"l":1870,"h":0},{"s":"All False","f":2,"i":1,"l":1870,"h":2}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"l":1870,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1890,"h":1},{"s":" end else begin","f":2,"i":1,"l":1892,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1890,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1895,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1895,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1895,"i":1,"p":0.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":1925,"h":1},{"s":"All False","f":2,"i":1,"l":1925,"h":1}],"br":{"s":" if (mask[i]) begin","f":2,"l":1925,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":1944,"h":1},{"s":"All False","f":2,"i":1,"l":1944,"h":5}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":1944,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1947,"h":0},{"s":" end else begin","f":2,"i":1,"l":1950,"h":1}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1947,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"i":1,"l":1954,"h":0},{"s":"All False","f":2,"i":1,"l":1954,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"l":1954,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1974,"h":1},{"s":" end else begin","f":2,"i":1,"l":1976,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1974,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1979,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1979,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1979,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2003,"h":1},{"s":" end else begin","f":2,"i":1,"l":2006,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2003,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2009,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2009,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2009,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2031,"h":1},{"s":" end else begin","f":2,"i":1,"l":2034,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2031,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2037,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2037,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2037,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":2079,"h":0},{"s":"All False","f":2,"i":1,"l":2079,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":2079,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":2093,"h":1},{"s":" end else begin","f":2,"i":1,"l":2095,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":2093,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2098,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2098,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2098,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2122,"h":1},{"s":" end else begin","f":2,"i":1,"l":2125,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2122,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2128,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2128,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2128,"i":1,"p":0.00}},{"bs":[{"s":" if (total_errors == 0)","f":2,"i":1,"l":2140,"h":1},{"s":" else","f":2,"i":1,"l":2142,"h":0}],"br":{"s":" if (total_errors == 0)","f":2,"l":2140,"i":1,"p":50.00}}]},"17":{"pr":"work.lane_fu_pt","t":"du","br":[{"bs":[{"s":" if (!nRST) begin","f":20,"i":1,"l":44,"h":8},{"s":" end else begin","f":20,"i":1,"l":47,"h":1578}],"br":{"s":" if (!nRST) begin","f":20,"l":44,"i":1,"p":100.00}},{"bs":[{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"i":1,"l":48,"h":480},{"s":"All False","f":20,"i":1,"l":48,"h":1098}],"br":{"s":" if (push) push_cnt <= push_cnt + 1;","f":20,"l":48,"i":1,"p":100.00}},{"bs":[{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"i":1,"l":49,"h":480},{"s":"All False","f":20,"i":1,"l":49,"h":1098}],"br":{"s":" if (pop) pop_cnt <= pop_cnt + 1;","f":20,"l":49,"i":1,"p":100.00}}]},"8":{"pr":"work.lane_sequencer","t":"du","br":[{"bs":[{"s":" if (!nRST) begin","f":4,"i":1,"l":65,"h":8},{"s":" end else begin","f":4,"i":1,"l":69,"h":3008}],"br":{"s":" if (!nRST) begin","f":4,"l":65,"i":1,"p":100.00}},{"bs":[{"s":" if (state == IDLE) begin","f":4,"i":1,"l":72,"h":1589},{"s":" else if (state == BUSY && elem_accepted) begin","f":4,"i":1,"l":81,"h":1137},{"s":"All False","f":4,"i":1,"l":72,"h":282}],"br":{"s":" if (state == IDLE) begin","f":4,"l":72,"i":1,"p":100.00}},{"bs":[{"s":" if (next_state == BUSY) begin","f":4,"i":1,"l":77,"h":569},{"s":"All False","f":4,"i":1,"l":77,"h":1020}],"br":{"s":" if (next_state == BUSY) begin","f":4,"l":77,"i":1,"p":100.00}},{"bs":[{"s":" IDLE: begin","f":4,"i":1,"l":97,"h":1709},{"s":" BUSY: begin","f":4,"i":1,"l":107,"h":2554}],"br":{"s":" unique case (state)","f":4,"l":96,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_in.valid) begin","f":4,"i":1,"l":102,"h":569},{"s":"All False","f":4,"i":1,"l":102,"h":1140}],"br":{"s":" if (lane_in.valid) begin","f":4,"l":102,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_accepted) begin","f":4,"i":1,"l":111,"h":1501},{"s":"All False","f":4,"i":1,"l":111,"h":1053}],"br":{"s":" if (elem_accepted) begin","f":4,"l":111,"i":1,"p":100.00}},{"bs":[{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"i":1,"l":112,"h":878},{"s":" end else begin","f":4,"i":1,"l":115,"h":623}],"br":{"s":" if (elem_idx_q == SLICE_W - 1) begin","f":4,"l":112,"i":1,"p":100.00}}]},"2":{"pr":"work.lane_tb","t":"du","br":[{"bs":[{"s":" if (!nRST || !dir_monitor_en) begin","f":2,"i":1,"l":106,"h":804586},{"s":" end else begin","f":2,"i":1,"l":109,"h":48}],"br":{"s":" if (!nRST || !dir_monitor_en) begin","f":2,"l":106,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT]) begin","f":2,"i":1,"l":110,"h":3},{"s":"All False","f":2,"i":1,"l":110,"h":45}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT]) begin","f":2,"l":110,"i":1,"p":100.00}},{"bs":[{"s":" if (!nRST || !dir_monitor_en_div) begin","f":2,"i":1,"l":131,"h":804577},{"s":" end else begin","f":2,"i":1,"l":134,"h":57}],"br":{"s":" if (!nRST || !dir_monitor_en_div) begin","f":2,"l":131,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV]) begin","f":2,"i":1,"l":135,"h":3},{"s":"All False","f":2,"i":1,"l":135,"h":54}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV]) begin","f":2,"l":135,"i":1,"p":100.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":197,"h":0},{"s":"All False","f":2,"i":1,"l":197,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":197,"i":1,"p":50.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":234,"h":0},{"s":"All False","f":2,"i":1,"l":234,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":234,"i":1,"p":50.00}},{"bs":[{"s":" if (dir_seen_results !== expected_results) begin","f":2,"i":1,"l":300,"h":0},{"s":" end else begin","f":2,"i":1,"l":304,"h":1}],"br":{"s":" if (dir_seen_results !== expected_results) begin","f":2,"l":300,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) expected_results++;","f":2,"i":1,"l":325,"h":1},{"s":"All False","f":2,"i":1,"l":325,"h":1}],"br":{"s":" if (mask[i]) expected_results++;","f":2,"l":325,"i":1,"p":100.00}},{"bs":[{"s":" if (dir_seen_results !== expected_results) begin","f":2,"i":1,"l":340,"h":0},{"s":" end else begin","f":2,"i":1,"l":344,"h":1}],"br":{"s":" if (dir_seen_results !== expected_results) begin","f":2,"l":340,"i":1,"p":50.00}},{"bs":[{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"i":1,"l":405,"h":0},{"s":" end else begin","f":2,"i":1,"l":409,"h":1}],"br":{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"l":405,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) expected_results++;","f":2,"i":1,"l":430,"h":1},{"s":"All False","f":2,"i":1,"l":430,"h":1}],"br":{"s":" if (mask[i]) expected_results++;","f":2,"l":430,"i":1,"p":100.00}},{"bs":[{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"i":1,"l":445,"h":0},{"s":" end else begin","f":2,"i":1,"l":449,"h":1}],"br":{"s":" if (dir_seen_results_div !== expected_results) begin","f":2,"l":445,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[VALU] !== vsel_t'(1)) begin","f":2,"i":1,"l":485,"h":0},{"s":"All False","f":2,"i":1,"l":485,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[VALU] !== vsel_t'(1)) begin","f":2,"l":485,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":573,"h":121},{"s":"All False","f":2,"i":1,"l":573,"h":119}],"br":{"s":" if (mask[i]) begin","f":2,"l":573,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 7 || base_vd == 9) && mask != 0) begin","f":2,"i":1,"l":581,"h":15},{"s":"All False","f":2,"i":1,"l":581,"h":105}],"br":{"s":" if ((base_vd == 7 || base_vd == 9) && mask != 0) begin","f":2,"l":581,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":589,"h":5},{"s":"All False","f":2,"i":1,"l":589,"h":115}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":589,"i":1,"p":100.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":627,"h":105},{"s":"All False","f":2,"i":1,"l":627,"h":135}],"br":{"s":" if (mask[i]) begin","f":2,"l":627,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 17 || base_vd == 19) && mask != 0) begin","f":2,"i":1,"l":635,"h":0},{"s":"All False","f":2,"i":1,"l":635,"h":120}],"br":{"s":" if ((base_vd == 17 || base_vd == 19) && mask != 0) begin","f":2,"l":635,"i":1,"p":50.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":643,"h":6},{"s":"All False","f":2,"i":1,"l":643,"h":114}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":643,"i":1,"p":100.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":670,"h":1380},{"s":"All False","f":2,"i":1,"l":670,"h":90}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":670,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":671,"h":696},{"s":" else","f":2,"i":1,"l":673,"h":684}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":671,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"i":1,"l":680,"h":121},{"s":"All False","f":2,"i":1,"l":680,"h":1349}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"l":680,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":683,"h":0},{"s":" end else begin","f":2,"i":1,"l":686,"h":121}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":683,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_SQRT] !== exp.vd) begin","f":2,"i":1,"l":689,"h":0},{"s":"All False","f":2,"i":1,"l":689,"h":121}],"br":{"s":" if (lane_if.lane_out.vd[FU_SQRT] !== exp.vd) begin","f":2,"l":689,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_SQRT] !== exp.elem_idx) begin","f":2,"i":1,"l":696,"h":0},{"s":"All False","f":2,"i":1,"l":696,"h":121}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_SQRT] !== exp.elem_idx) begin","f":2,"l":696,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":718,"h":3},{"s":"All False","f":2,"i":1,"l":718,"h":1467}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":718,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":725,"h":0},{"s":"All False","f":2,"i":1,"l":725,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":725,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":762,"h":121},{"s":"All False","f":2,"i":1,"l":762,"h":119}],"br":{"s":" if (mask[i]) begin","f":2,"l":762,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 41 || base_vd == 43) && mask != 0) begin","f":2,"i":1,"l":770,"h":16},{"s":"All False","f":2,"i":1,"l":770,"h":104}],"br":{"s":" if ((base_vd == 41 || base_vd == 43) && mask != 0) begin","f":2,"l":770,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":778,"h":5},{"s":"All False","f":2,"i":1,"l":778,"h":115}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":778,"i":1,"p":100.00}},{"bs":[{"s":" if (wait_cycles >= 1000) begin","f":2,"i":1,"l":805,"h":0},{"s":"All False","f":2,"i":1,"l":805,"h":142}],"br":{"s":" if (wait_cycles >= 1000) begin","f":2,"l":805,"i":1,"p":50.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":854,"h":120},{"s":"All False","f":2,"i":1,"l":854,"h":120}],"br":{"s":" if (mask[i]) begin","f":2,"l":854,"i":1,"p":100.00}},{"bs":[{"s":" if ((base_vd == 31 || base_vd == 33) && mask != 0) begin","f":2,"i":1,"l":862,"h":16},{"s":"All False","f":2,"i":1,"l":862,"h":104}],"br":{"s":" if ((base_vd == 31 || base_vd == 33) && mask != 0) begin","f":2,"l":862,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"i":1,"l":870,"h":4},{"s":"All False","f":2,"i":1,"l":870,"h":116}],"br":{"s":" if ($urandom_range(99,0) > back_to_back_prob) begin","f":2,"l":870,"i":1,"p":100.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":902,"h":659},{"s":"All False","f":2,"i":1,"l":902,"h":68}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":902,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":903,"h":345},{"s":" else","f":2,"i":1,"l":905,"h":314}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":903,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":912,"h":121},{"s":"All False","f":2,"i":1,"l":912,"h":606}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":912,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":915,"h":0},{"s":" end else begin","f":2,"i":1,"l":918,"h":121}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":915,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp.vd) begin","f":2,"i":1,"l":921,"h":0},{"s":"All False","f":2,"i":1,"l":921,"h":121}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp.vd) begin","f":2,"l":921,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_VALU] !== exp.elem_idx) begin","f":2,"i":1,"l":928,"h":0},{"s":"All False","f":2,"i":1,"l":928,"h":121}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_VALU] !== exp.elem_idx) begin","f":2,"l":928,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":956,"h":3},{"s":"All False","f":2,"i":1,"l":956,"h":724}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":956,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":972,"h":0},{"s":"All False","f":2,"i":1,"l":972,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":972,"i":1,"p":50.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":1010,"h":1216},{"s":"All False","f":2,"i":1,"l":1010,"h":111}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":1010,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":1011,"h":616},{"s":" else","f":2,"i":1,"l":1013,"h":600}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":1011,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"i":1,"l":1020,"h":105},{"s":"All False","f":2,"i":1,"l":1020,"h":1222}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"l":1020,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1023,"h":0},{"s":" end else begin","f":2,"i":1,"l":1026,"h":105}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1023,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_DIV] !== exp.vd) begin","f":2,"i":1,"l":1029,"h":0},{"s":"All False","f":2,"i":1,"l":1029,"h":105}],"br":{"s":" if (lane_if.lane_out.vd[FU_DIV] !== exp.vd) begin","f":2,"l":1029,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_DIV] !== exp.elem_idx) begin","f":2,"i":1,"l":1036,"h":0},{"s":"All False","f":2,"i":1,"l":1036,"h":105}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_DIV] !== exp.elem_idx) begin","f":2,"l":1036,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":1064,"h":3},{"s":"All False","f":2,"i":1,"l":1064,"h":1324}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":1064,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":1080,"h":0},{"s":"All False","f":2,"i":1,"l":1080,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":1080,"i":1,"p":50.00}},{"bs":[{"s":" if (stall_prob > 0) begin","f":2,"i":1,"l":1115,"h":642},{"s":"All False","f":2,"i":1,"l":1115,"h":69}],"br":{"s":" if (stall_prob > 0) begin","f":2,"l":1115,"i":1,"p":100.00}},{"bs":[{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"i":1,"l":1116,"h":327},{"s":" else","f":2,"i":1,"l":1118,"h":315}],"br":{"s":" if ($urandom_range(99,0) < stall_prob)","f":2,"l":1116,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1125,"h":120},{"s":"All False","f":2,"i":1,"l":1125,"h":591}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1125,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1128,"h":0},{"s":" end else begin","f":2,"i":1,"l":1131,"h":120}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1128,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp.vd) begin","f":2,"i":1,"l":1134,"h":0},{"s":"All False","f":2,"i":1,"l":1134,"h":120}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp.vd) begin","f":2,"l":1134,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.elem_idx[FU_MUL] !== exp.elem_idx) begin","f":2,"i":1,"l":1141,"h":0},{"s":"All False","f":2,"i":1,"l":1141,"h":120}],"br":{"s":" if (lane_if.lane_out.elem_idx[FU_MUL] !== exp.elem_idx) begin","f":2,"l":1141,"i":1,"p":50.00}},{"bs":[{"s":" if (exp_q.size() == 0 &&","f":2,"i":1,"l":1169,"h":3},{"s":"All False","f":2,"i":1,"l":1169,"h":708}],"br":{"s":" if (exp_q.size() == 0 &&","f":2,"l":1169,"i":1,"p":100.00}},{"bs":[{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"i":1,"l":1185,"h":0},{"s":"All False","f":2,"i":1,"l":1185,"h":3}],"br":{"s":" if (cycles >= max_cycles && exp_q.size() != 0) begin","f":2,"l":1185,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1232,"h":1},{"s":" end else begin","f":2,"i":1,"l":1234,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1232,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1237,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1237,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1237,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1256,"h":1},{"s":" end else begin","f":2,"i":1,"l":1258,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1256,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1261,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1261,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1261,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"i":1,"l":1289,"h":0},{"s":"All False","f":2,"i":1,"l":1289,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_SQRT] &&","f":2,"l":1289,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1299,"h":1},{"s":" end else begin","f":2,"i":1,"l":1301,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1299,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1304,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1304,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1304,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"i":1,"l":1325,"h":1},{"s":" end else begin","f":2,"i":1,"l":1327,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0) begin","f":2,"l":1325,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1330,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1330,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1330,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1361,"h":1},{"s":" end else begin","f":2,"i":1,"l":1364,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1361,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1367,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1367,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1367,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1396,"h":1},{"s":" end else begin","f":2,"i":1,"l":1399,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1396,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1402,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1402,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1402,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"i":1,"l":1433,"h":0},{"s":"All False","f":2,"i":1,"l":1433,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_DIV] &&","f":2,"l":1433,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1447,"h":1},{"s":" end else begin","f":2,"i":1,"l":1449,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1447,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1452,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1452,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1452,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1479,"h":1},{"s":" end else begin","f":2,"i":1,"l":1482,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1479,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1485,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1485,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1485,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1538,"h":2},{"s":"All False","f":2,"i":1,"l":1538,"h":7}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1538,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1541,"h":0},{"s":" end else begin","f":2,"i":1,"l":1544,"h":2}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1541,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"i":1,"l":1548,"h":0},{"s":"All False","f":2,"i":1,"l":1548,"h":2}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"l":1548,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1568,"h":1},{"s":" end else begin","f":2,"i":1,"l":1570,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1568,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1573,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1573,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1573,"i":1,"p":0.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":1603,"h":1},{"s":"All False","f":2,"i":1,"l":1603,"h":1}],"br":{"s":" if (mask[i]) begin","f":2,"l":1603,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1622,"h":1},{"s":"All False","f":2,"i":1,"l":1622,"h":5}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1622,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1625,"h":0},{"s":" end else begin","f":2,"i":1,"l":1628,"h":1}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1625,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"i":1,"l":1632,"h":0},{"s":"All False","f":2,"i":1,"l":1632,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[FU_MUL] !== exp_item.vd ||","f":2,"l":1632,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1652,"h":1},{"s":" end else begin","f":2,"i":1,"l":1654,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1652,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1657,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1657,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1657,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1681,"h":1},{"s":" end else begin","f":2,"i":1,"l":1684,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1681,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1687,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1687,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1687,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1709,"h":1},{"s":" end else begin","f":2,"i":1,"l":1712,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1709,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1715,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1715,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1715,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"i":1,"l":1757,"h":0},{"s":"All False","f":2,"i":1,"l":1757,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_MUL] &&","f":2,"l":1757,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":1771,"h":1},{"s":" end else begin","f":2,"i":1,"l":1773,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":1771,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1776,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1776,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1776,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":1800,"h":1},{"s":" end else begin","f":2,"i":1,"l":1803,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":1800,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1806,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":1806,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1806,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":1860,"h":2},{"s":"All False","f":2,"i":1,"l":1860,"h":7}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":1860,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1863,"h":0},{"s":" end else begin","f":2,"i":1,"l":1866,"h":2}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1863,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"i":1,"l":1870,"h":0},{"s":"All False","f":2,"i":1,"l":1870,"h":2}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"l":1870,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1890,"h":1},{"s":" end else begin","f":2,"i":1,"l":1892,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1890,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1895,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1895,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1895,"i":1,"p":0.00}},{"bs":[{"s":" if (mask[i]) begin","f":2,"i":1,"l":1925,"h":1},{"s":"All False","f":2,"i":1,"l":1925,"h":1}],"br":{"s":" if (mask[i]) begin","f":2,"l":1925,"i":1,"p":100.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":1944,"h":1},{"s":"All False","f":2,"i":1,"l":1944,"h":5}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":1944,"i":1,"p":100.00}},{"bs":[{"s":" if (exp_q.size() == 0) begin","f":2,"i":1,"l":1947,"h":0},{"s":" end else begin","f":2,"i":1,"l":1950,"h":1}],"br":{"s":" if (exp_q.size() == 0) begin","f":2,"l":1947,"i":1,"p":50.00}},{"bs":[{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"i":1,"l":1954,"h":0},{"s":"All False","f":2,"i":1,"l":1954,"h":1}],"br":{"s":" if (lane_if.lane_out.vd[FU_VALU] !== exp_item.vd ||","f":2,"l":1954,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"i":1,"l":1974,"h":1},{"s":" end else begin","f":2,"i":1,"l":1976,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == expected_results) begin","f":2,"l":1974,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":1979,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":49,"n":1,"f":2,"i":2,"l":1979,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":1979,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2003,"h":1},{"s":" end else begin","f":2,"i":1,"l":2006,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2003,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2009,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2009,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2009,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2031,"h":1},{"s":" end else begin","f":2,"i":1,"l":2034,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2031,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2037,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2037,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2037,"i":1,"p":0.00}},{"bs":[{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"i":1,"l":2079,"h":0},{"s":"All False","f":2,"i":1,"l":2079,"h":200000}],"br":{"s":" if (lane_if.lane_out.valid_o[FU_VALU] &&","f":2,"l":2079,"i":1,"p":50.00}},{"bs":[{"s":" if (errors == 0 && seen == 0) begin","f":2,"i":1,"l":2093,"h":1},{"s":" end else begin","f":2,"i":1,"l":2095,"h":0}],"br":{"s":" if (errors == 0 && seen == 0) begin","f":2,"l":2093,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2098,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2098,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2098,"i":1,"p":0.00}},{"bs":[{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"i":1,"l":2122,"h":1},{"s":" end else begin","f":2,"i":1,"l":2125,"h":0}],"br":{"s":" if (errors == 0 && exp_q.size() == 0 && seen == exp_total) begin","f":2,"l":2122,"i":1,"p":50.00}},{"bs":[{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"i":1,"l":2128,"h":0},{"s":" total_errors += (errors == 0 ? 1 : errors);","t":45,"n":1,"f":2,"i":2,"l":2128,"h":0}],"br":{"s":" total_errors += (errors == 0 ? 1 : errors);","f":2,"l":2128,"i":1,"p":0.00}},{"bs":[{"s":" if (total_errors == 0)","f":2,"i":1,"l":2140,"h":1},{"s":" else","f":2,"i":1,"l":2142,"h":0}],"br":{"s":" if (total_errors == 0)","f":2,"l":2140,"i":1,"p":50.00}}]},"16":{"pr":"work.left_shift","t":"du","br":[{"bs":[{"s":" 10'b01????????: begin","f":19,"i":1,"l":27,"h":91},{"s":" 10'b001???????: begin","f":19,"i":1,"l":31,"h":72},{"s":" 10'b0001??????: begin","f":19,"i":1,"l":35,"h":25},{"s":" 10'b00001?????: begin","f":19,"i":1,"l":39,"h":21},{"s":" 10'b000001????: begin","f":19,"i":1,"l":43,"h":10},{"s":" 10'b0000001???: begin","f":19,"i":1,"l":47,"h":2},{"s":" 10'b00000001??: begin","f":19,"i":1,"l":51,"h":4},{"s":" 10'b000000001?: begin","f":19,"i":1,"l":55,"h":1},{"s":" 10'b0000000001: begin","f":19,"i":1,"l":59,"h":0},{"s":" default: begin","f":19,"i":1,"l":63,"h":377}],"br":{"s":" casez (fraction)","f":19,"l":26,"i":1,"p":90.00}}]},"10":{"pr":"work.mul_bf16","t":"du","br":[{"bs":[{"s":" if(nRST == 1'b0) begin","f":11,"i":1,"l":14,"h":4},{"s":" else begin","f":11,"i":1,"l":19,"h":1240}],"br":{"s":" if(nRST == 1'b0) begin","f":11,"l":14,"i":1,"p":100.00}},{"bs":[{"s":" if(start == 1'b1) begin","f":11,"i":1,"l":24,"h":495},{"s":"All False","f":11,"i":1,"l":24,"h":745}],"br":{"s":" if(start == 1'b1) begin","f":11,"l":24,"i":1,"p":100.00}},{"bs":[{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":40,"h":17},{"s":" else begin","f":11,"i":1,"l":43,"h":476}],"br":{"s":" if(a_latched[14:7] == 8'b0)begin","f":11,"l":40,"i":1,"p":100.00}},{"bs":[{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"i":1,"l":47,"h":11},{"s":" else begin","f":11,"i":1,"l":50,"h":482}],"br":{"s":" if(b_latched[14:7] == 8'b0)begin","f":11,"l":47,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"i":1,"l":92,"h":473},{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","t":58,"n":1,"f":11,"i":2,"l":92,"h":751}],"br":{"s":" assign mul_frac_product = mul_carryout ? mul_product[9:1] : mul_product[8:0];","f":11,"l":92,"i":1,"p":100.00}},{"bs":[{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"i":1,"l":98,"h":166},{"s":" else","f":11,"i":1,"l":100,"h":311}],"br":{"s":" if(mul_frac_product[1] & (mul_frac_product[0] | mul_round_loss | mul_frac_product[2]))","f":11,"l":98,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"i":1,"l":106,"h":8},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":50,"n":1,"f":11,"i":2,"l":106,"h":1795}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":1,"p":100.00}},{"bs":[{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":60,"n":2,"f":11,"i":3,"l":106,"h":0},{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","t":79,"n":1,"f":11,"i":4,"l":106,"h":1797}],"br":{"s":" assign mul_final_exp = (mul_product == 0) ? 0 : mul_significand_rounded[7] ? exp_sum + 1 : exp_sum;","f":11,"l":106,"i":3,"p":50.00}}]},"18":{"pr":"work.sync_fifo","t":"du","br":[{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":19,"h":8},{"s":" end else begin","f":21,"i":1,"l":21,"h":1807}],"br":{"s":" if (!rstn) begin","f":21,"l":19,"i":1,"p":100.00}},{"bs":[{"s":" if (wr_en & !full) begin","f":21,"i":1,"l":22,"h":480},{"s":"All False","f":21,"i":1,"l":22,"h":1327}],"br":{"s":" if (wr_en & !full) begin","f":21,"l":22,"i":1,"p":100.00}},{"bs":[{"s":" if (!rstn) begin","f":21,"i":1,"l":30,"h":8},{"s":" end else begin","f":21,"i":1,"l":32,"h":1443}],"br":{"s":" if (!rstn) begin","f":21,"l":30,"i":1,"p":100.00}},{"bs":[{"s":" if (rd_en & !empty) begin","f":21,"i":1,"l":33,"h":480},{"s":"All False","f":21,"i":1,"l":33,"h":963}],"br":{"s":" if (rd_en & !empty) begin","f":21,"l":33,"i":1,"p":100.00}}]}}; +processBranchesData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/ce1.js b/covhtmlreport/files/ce1.js new file mode 100644 index 000000000..2e810b334 --- /dev/null +++ b/covhtmlreport/files/ce1.js @@ -0,0 +1,2 @@ +var g_data = {"29":{"pr":"/lane_tb/dut","t":"inst","ce":[{"f":6,"l":43,"i":1,"s":"((sqrt_seq_out.valid && sqrt_seq_out.mask_bit) && sqrt_sync_ready)","bi":0,"hp":0,"t":[{"n":"sqrt_seq_out.valid","c":1},{"n":"sqrt_seq_out.mask_bit","c":1},{"n":"sqrt_sync_ready","c":1}],"r":[{"n":"sqrt_seq_out.valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"sqrt_seq_out.valid_1","i":2,"b":[{"m":"(sqrt_sync_ready && sqrt_seq_out.mask_bit)","h":1}]},{"n":"sqrt_seq_out.mask_bit_0","i":3,"b":[{"m":"sqrt_seq_out.valid","h":1}]},{"n":"sqrt_seq_out.mask_bit_1","i":4,"b":[{"m":"(sqrt_sync_ready && sqrt_seq_out.valid)","h":1}]},{"n":"sqrt_sync_ready_0","i":5,"b":[{"m":"(sqrt_seq_out.valid && sqrt_seq_out.mask_bit)","h":1}]},{"n":"sqrt_sync_ready_1","i":6,"b":[{"m":"(sqrt_seq_out.valid && sqrt_seq_out.mask_bit)","h":1}]}],"x":1,"p":100.00},{"f":6,"l":99,"i":1,"s":"(sqrt_fire_valid && sqrt_sync_ready)","bi":0,"hp":0,"t":[{"n":"sqrt_fire_valid","c":1},{"n":"sqrt_sync_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"sqrt_fire_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"sqrt_fire_valid_1","i":2,"b":[{"m":"sqrt_sync_ready","h":1}]},{"n":"sqrt_sync_ready_0","i":3,"b":[{"m":"sqrt_fire_valid","h":0}]},{"n":"sqrt_sync_ready_1","i":4,"b":[{"m":"sqrt_fire_valid","h":1}]}],"x":1,"p":50.00},{"f":6,"l":102,"i":1,"s":"(~sqrt_hold_valid || lif.lane_in.ready_in[SQRT])","bi":0,"hp":0,"t":[{"n":"sqrt_hold_valid","c":1},{"n":"lif.lane_in.ready_in[SQRT]","c":1}],"r":[{"n":"sqrt_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"sqrt_hold_valid_1","i":2,"b":[{"m":"~lif.lane_in.ready_in[SQRT]","h":1}]},{"n":"lif.lane_in.ready_in[SQRT]_0","i":3,"b":[{"m":"sqrt_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[SQRT]_1","i":4,"b":[{"m":"sqrt_hold_valid","h":1}]}],"x":1,"p":100.00},{"f":6,"l":109,"i":1,"s":"(out.valid_out && in.ready_out)","bi":0,"hp":0,"t":[{"n":"out.valid_out","c":1},{"n":"in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"out.valid_out_1","i":2,"b":[{"m":"in.ready_out","h":1}]},{"n":"in.ready_out_0","i":3,"b":[{"m":"out.valid_out","h":0}]},{"n":"in.ready_out_1","i":4,"b":[{"m":"out.valid_out","h":1}]}],"x":1,"p":50.00},{"f":6,"l":193,"i":1,"s":"((div_seq_out.valid && div_seq_out.mask_bit) && div_sync_ready)","bi":0,"hp":0,"t":[{"n":"div_seq_out.valid","c":1},{"n":"div_seq_out.mask_bit","c":1},{"n":"div_sync_ready","c":1}],"r":[{"n":"div_seq_out.valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"div_seq_out.valid_1","i":2,"b":[{"m":"(div_sync_ready && div_seq_out.mask_bit)","h":1}]},{"n":"div_seq_out.mask_bit_0","i":3,"b":[{"m":"div_seq_out.valid","h":1}]},{"n":"div_seq_out.mask_bit_1","i":4,"b":[{"m":"(div_sync_ready && div_seq_out.valid)","h":1}]},{"n":"div_sync_ready_0","i":5,"b":[{"m":"(div_seq_out.valid && div_seq_out.mask_bit)","h":1}]},{"n":"div_sync_ready_1","i":6,"b":[{"m":"(div_seq_out.valid && div_seq_out.mask_bit)","h":1}]}],"x":1,"p":100.00},{"f":6,"l":251,"i":1,"s":"(div_fire_valid && div_sync_ready)","bi":0,"hp":0,"t":[{"n":"div_fire_valid","c":1},{"n":"div_sync_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"div_fire_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"div_fire_valid_1","i":2,"b":[{"m":"div_sync_ready","h":1}]},{"n":"div_sync_ready_0","i":3,"b":[{"m":"div_fire_valid","h":0}]},{"n":"div_sync_ready_1","i":4,"b":[{"m":"div_fire_valid","h":1}]}],"x":1,"p":50.00},{"f":6,"l":254,"i":1,"s":"(~div_hold_valid || lif.lane_in.ready_in[DIV])","bi":0,"hp":0,"t":[{"n":"div_hold_valid","c":1},{"n":"lif.lane_in.ready_in[DIV]","c":1}],"r":[{"n":"div_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"div_hold_valid_1","i":2,"b":[{"m":"~lif.lane_in.ready_in[DIV]","h":1}]},{"n":"lif.lane_in.ready_in[DIV]_0","i":3,"b":[{"m":"div_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[DIV]_1","i":4,"b":[{"m":"div_hold_valid","h":1}]}],"x":1,"p":100.00},{"f":6,"l":262,"i":1,"s":"(out.valid_out && in.ready_out)","bi":0,"hp":0,"t":[{"n":"out.valid_out","c":1},{"n":"in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"out.valid_out_1","i":2,"b":[{"m":"in.ready_out","h":1}]},{"n":"in.ready_out_0","i":3,"b":[{"m":"out.valid_out","h":0}]},{"n":"in.ready_out_1","i":4,"b":[{"m":"out.valid_out","h":1}]}],"x":1,"p":50.00},{"f":6,"l":348,"i":1,"s":"((mul_seq_out.valid && mul_seq_out.mask_bit) && mul_sync_ready)","bi":0,"hp":0,"t":[{"n":"mul_seq_out.valid","c":1},{"n":"mul_seq_out.mask_bit","c":1},{"n":"mul_sync_ready","c":1}],"r":[{"n":"mul_seq_out.valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_seq_out.valid_1","i":2,"b":[{"m":"(mul_sync_ready && mul_seq_out.mask_bit)","h":1}]},{"n":"mul_seq_out.mask_bit_0","i":3,"b":[{"m":"mul_seq_out.valid","h":1}]},{"n":"mul_seq_out.mask_bit_1","i":4,"b":[{"m":"(mul_sync_ready && mul_seq_out.valid)","h":1}]},{"n":"mul_sync_ready_0","i":5,"b":[{"m":"(mul_seq_out.valid && mul_seq_out.mask_bit)","h":1}]},{"n":"mul_sync_ready_1","i":6,"b":[{"m":"(mul_seq_out.valid && mul_seq_out.mask_bit)","h":1}]}],"x":1,"p":100.00},{"f":6,"l":392,"i":1,"s":"(mul_fire_valid && mul_sync_ready)","bi":0,"hp":0,"t":[{"n":"mul_fire_valid","c":1},{"n":"mul_sync_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"mul_fire_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_fire_valid_1","i":2,"b":[{"m":"mul_sync_ready","h":1}]},{"n":"mul_sync_ready_0","i":3,"b":[{"m":"mul_fire_valid","h":0}]},{"n":"mul_sync_ready_1","i":4,"b":[{"m":"mul_fire_valid","h":1}]}],"x":1,"p":50.00},{"f":6,"l":393,"i":1,"s":"(~mul_hold_valid || lif.lane_in.ready_in[MUL])","bi":0,"hp":0,"t":[{"n":"mul_hold_valid","c":1},{"n":"lif.lane_in.ready_in[MUL]","c":1}],"r":[{"n":"mul_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_hold_valid_1","i":2,"b":[{"m":"~lif.lane_in.ready_in[MUL]","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_0","i":3,"b":[{"m":"mul_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_1","i":4,"b":[{"m":"mul_hold_valid","h":1}]}],"x":1,"p":100.00},{"f":6,"l":401,"i":1,"s":"(out.valid_out && in.ready_out)","bi":0,"hp":0,"t":[{"n":"out.valid_out","c":1},{"n":"in.ready_out","c":1}],"r":[{"n":"out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"out.valid_out_1","i":2,"b":[{"m":"in.ready_out","h":1}]},{"n":"in.ready_out_0","i":3,"b":[{"m":"out.valid_out","h":1}]},{"n":"in.ready_out_1","i":4,"b":[{"m":"out.valid_out","h":1}]}],"x":1,"p":100.00},{"f":6,"l":513,"i":1,"s":"(valu_seq_out.valid && valu_seq_out.mask_bit)","bi":0,"hp":0,"t":[{"n":"valu_seq_out.valid","c":1},{"n":"valu_seq_out.mask_bit","c":1}],"r":[{"n":"valu_seq_out.valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_seq_out.valid_1","i":2,"b":[{"m":"valu_seq_out.mask_bit","h":1}]},{"n":"valu_seq_out.mask_bit_0","i":3,"b":[{"m":"valu_seq_out.valid","h":1}]},{"n":"valu_seq_out.mask_bit_1","i":4,"b":[{"m":"valu_seq_out.valid","h":1}]}],"x":1,"p":100.00},{"f":6,"l":519,"i":1,"s":"((valu_issue_valid && valu_sync_ready) && out.ready_in)","bi":0,"hp":0,"t":[{"n":"valu_issue_valid","c":1},{"n":"valu_sync_ready","c":1},{"n":"out.ready_in","c":1}],"r":[{"n":"valu_issue_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_issue_valid_1","i":2,"b":[{"m":"(out.ready_in && valu_sync_ready)","h":1}]},{"n":"valu_sync_ready_0","i":3,"b":[{"m":"valu_issue_valid","h":1}]},{"n":"valu_sync_ready_1","i":4,"b":[{"m":"(out.ready_in && valu_issue_valid)","h":1}]},{"n":"out.ready_in_0","i":5,"b":[{"m":"(valu_issue_valid && valu_sync_ready)","h":1}]},{"n":"out.ready_in_1","i":6,"b":[{"m":"(valu_issue_valid && valu_sync_ready)","h":1}]}],"x":1,"p":100.00},{"f":6,"l":543,"i":1,"s":"(valu_sync_ready && out.ready_in)","bi":0,"hp":0,"t":[{"n":"valu_sync_ready","c":1},{"n":"out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"valu_sync_ready_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_sync_ready_1","i":2,"b":[{"m":"out.ready_in","h":1}]},{"n":"out.ready_in_0","i":3,"b":[{"m":"valu_sync_ready","h":0}]},{"n":"out.ready_in_1","i":4,"b":[{"m":"valu_sync_ready","h":1}]}],"x":1,"p":50.00},{"f":6,"l":579,"i":1,"s":"(~valu_hold_valid || lif.lane_in.ready_in[VALU])","bi":0,"hp":0,"t":[{"n":"valu_hold_valid","c":1},{"n":"lif.lane_in.ready_in[VALU]","c":1}],"r":[{"n":"valu_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_hold_valid_1","i":2,"b":[{"m":"~lif.lane_in.ready_in[VALU]","h":1}]},{"n":"lif.lane_in.ready_in[VALU]_0","i":3,"b":[{"m":"valu_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[VALU]_1","i":4,"b":[{"m":"valu_hold_valid","h":1}]}],"x":1,"p":100.00},{"f":6,"l":587,"i":1,"s":"(out.valid_out && in.ready_out)","bi":0,"hp":0,"t":[{"n":"out.valid_out","c":1},{"n":"in.ready_out","c":1}],"r":[{"n":"out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"out.valid_out_1","i":2,"b":[{"m":"in.ready_out","h":1}]},{"n":"in.ready_out_0","i":3,"b":[{"m":"out.valid_out","h":1}]},{"n":"in.ready_out_1","i":4,"b":[{"m":"out.valid_out","h":1}]}],"x":1,"p":100.00},{"f":6,"l":625,"i":1,"s":"((valu_retire && valu_meta_out.rm) && valu_meta_out.last)","bi":0,"hp":0,"t":[{"n":"valu_retire","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"valu_meta_out.rm","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"valu_meta_out.last","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"valu_retire_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_retire_1","i":2,"b":[{"m":"(valu_meta_out.last && valu_meta_out.rm)","h":0}]},{"n":"valu_meta_out.rm_0","i":3,"b":[{"m":"valu_retire","h":1}]},{"n":"valu_meta_out.rm_1","i":4,"b":[{"m":"(valu_meta_out.last && valu_retire)","h":0}]},{"n":"valu_meta_out.last_0","i":5,"b":[{"m":"(valu_retire && valu_meta_out.rm)","h":0}]},{"n":"valu_meta_out.last_1","i":6,"b":[{"m":"(valu_retire && valu_meta_out.rm)","h":0}]}],"x":1,"p":0.00},{"f":6,"l":164,"i":1,"s":"(sqrt_hold_valid && lif.lane_in.ready_in[SQRT])","bi":0,"hp":0,"t":[{"n":"sqrt_hold_valid","c":1},{"n":"lif.lane_in.ready_in[SQRT]","c":1}],"r":[{"n":"sqrt_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"sqrt_hold_valid_1","i":2,"b":[{"m":"lif.lane_in.ready_in[SQRT]","h":1}]},{"n":"lif.lane_in.ready_in[SQRT]_0","i":3,"b":[{"m":"sqrt_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[SQRT]_1","i":4,"b":[{"m":"sqrt_hold_valid","h":1}]}],"x":0,"p":100.00},{"f":6,"l":272,"i":1,"s":"(div_fire_valid && div_sync_ready)","bi":0,"hp":0,"t":[{"n":"div_fire_valid","c":1},{"n":"div_sync_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"div_fire_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"div_fire_valid_1","i":2,"b":[{"m":"div_sync_ready","h":1}]},{"n":"div_sync_ready_0","i":3,"b":[{"m":"div_fire_valid","h":0}]},{"n":"div_sync_ready_1","i":4,"b":[{"m":"div_fire_valid","h":1}]}],"x":0,"p":50.00},{"f":6,"l":327,"i":1,"s":"(div_hold_valid && lif.lane_in.ready_in[DIV])","bi":0,"hp":0,"t":[{"n":"div_hold_valid","c":1},{"n":"lif.lane_in.ready_in[DIV]","c":1}],"r":[{"n":"div_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"div_hold_valid_1","i":2,"b":[{"m":"lif.lane_in.ready_in[DIV]","h":1}]},{"n":"lif.lane_in.ready_in[DIV]_0","i":3,"b":[{"m":"div_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[DIV]_1","i":4,"b":[{"m":"div_hold_valid","h":1}]}],"x":0,"p":100.00},{"f":6,"l":450,"i":1,"s":"(mul_hold_valid && lif.lane_in.ready_in[MUL])","bi":0,"hp":0,"t":[{"n":"mul_hold_valid","c":1},{"n":"lif.lane_in.ready_in[MUL]","c":1}],"r":[{"n":"mul_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_hold_valid_1","i":2,"b":[{"m":"lif.lane_in.ready_in[MUL]","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_0","i":3,"b":[{"m":"mul_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_1","i":4,"b":[{"m":"mul_hold_valid","h":1}]}],"x":0,"p":100.00},{"f":6,"l":466,"i":1,"s":"(mul_fire_valid && mul_sync_ready)","bi":0,"hp":0,"t":[{"n":"mul_fire_valid","c":1},{"n":"mul_sync_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"mul_fire_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_fire_valid_1","i":2,"b":[{"m":"mul_sync_ready","h":1}]},{"n":"mul_sync_ready_0","i":3,"b":[{"m":"mul_fire_valid","h":0}]},{"n":"mul_sync_ready_1","i":4,"b":[{"m":"mul_fire_valid","h":1}]}],"x":0,"p":50.00},{"f":6,"l":467,"i":1,"s":"(lif.lane_out.valid_o[MUL] && lif.lane_in.ready_in[MUL])","bi":0,"hp":0,"t":[{"n":"lif.lane_out.valid_o[MUL]","c":1},{"n":"lif.lane_in.ready_in[MUL]","c":1}],"r":[{"n":"lif.lane_out.valid_o[MUL]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lif.lane_out.valid_o[MUL]_1","i":2,"b":[{"m":"lif.lane_in.ready_in[MUL]","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_0","i":3,"b":[{"m":"lif.lane_out.valid_o[MUL]","h":1}]},{"n":"lif.lane_in.ready_in[MUL]_1","i":4,"b":[{"m":"lif.lane_out.valid_o[MUL]","h":1}]}],"x":0,"p":100.00},{"f":6,"l":640,"i":1,"s":"(valu_retire && ~valu_meta_out.rm)","bi":0,"hp":0,"t":[{"n":"valu_retire","c":1},{"n":"valu_meta_out.rm","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"valu_retire_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_retire_1","i":2,"b":[{"m":"~valu_meta_out.rm","h":1}]},{"n":"valu_meta_out.rm_0","i":3,"b":[{"m":"valu_retire","h":1}]},{"n":"valu_meta_out.rm_1","i":4,"b":[{"m":"valu_retire","h":0}]}],"x":0,"p":50.00},{"f":6,"l":648,"i":1,"s":"(valu_hold_valid && lif.lane_in.ready_in[VALU])","bi":0,"hp":0,"t":[{"n":"valu_hold_valid","c":1},{"n":"lif.lane_in.ready_in[VALU]","c":1}],"r":[{"n":"valu_hold_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valu_hold_valid_1","i":2,"b":[{"m":"lif.lane_in.ready_in[VALU]","h":1}]},{"n":"lif.lane_in.ready_in[VALU]_0","i":3,"b":[{"m":"valu_hold_valid","h":1}]},{"n":"lif.lane_in.ready_in[VALU]_1","i":4,"b":[{"m":"valu_hold_valid","h":1}]}],"x":0,"p":100.00}]},"32":{"pr":"/lane_tb/dut/u_sqrt_bf16","t":"inst","ce":[{"f":17,"l":175,"i":1,"s":"((second_pass ~| third_pass) & mul_done_reg)","bi":0,"hp":0,"t":[{"n":"second_pass","c":1},{"n":"third_pass","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"mul_done_reg","c":1}],"r":[{"n":"second_pass_0","i":1,"b":[{"m":"(mul_done_reg && ~third_pass)","h":1}]},{"n":"second_pass_1","i":2,"b":[{"m":"(mul_done_reg && ~third_pass)","h":1}]},{"n":"third_pass_0","i":3,"b":[{"m":"(mul_done_reg && ~second_pass)","h":1}]},{"n":"third_pass_1","i":4,"b":[{"m":"(mul_done_reg && ~second_pass)","h":0}]},{"n":"mul_done_reg_0","i":5,"b":[{"m":"(second_pass ~| third_pass)","h":1}]},{"n":"mul_done_reg_1","i":6,"b":[{"m":"(second_pass ~| third_pass)","h":1}]}],"x":1,"p":66.66},{"f":17,"l":261,"i":1,"s":"(mul_done_reg & third_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"third_pass","c":1}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"third_pass","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"third_pass","h":1}]},{"n":"third_pass_0","i":3,"b":[{"m":"mul_done_reg","h":1}]},{"n":"third_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]}],"x":1,"p":100.00},{"f":17,"l":281,"i":1,"s":"((exp == 0) && (frac == 0))","bi":0,"hp":0,"t":[{"n":"(exp == 0)","c":1},{"n":"(frac == 0)","c":1}],"r":[{"n":"(exp == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 0)_1","i":2,"b":[{"m":"(frac == 0)","h":1}]},{"n":"(frac == 0)_0","i":3,"b":[{"m":"(exp == 0)","h":1}]},{"n":"(frac == 0)_1","i":4,"b":[{"m":"(exp == 0)","h":1}]}],"x":1,"p":100.00},{"f":17,"l":282,"i":1,"s":"(input_is_zero && sign)","bi":0,"hp":0,"t":[{"n":"input_is_zero","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"sign","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"input_is_zero_0","i":1,"b":[{"m":"-","h":1}]},{"n":"input_is_zero_1","i":2,"b":[{"m":"sign","h":0}]},{"n":"sign_0","i":3,"b":[{"m":"input_is_zero","h":1}]},{"n":"sign_1","i":4,"b":[{"m":"input_is_zero","h":0}]}],"x":1,"p":0.00},{"f":17,"l":283,"i":1,"s":"((exp == 255) && (frac == 0))","bi":0,"hp":0,"t":[{"n":"(exp == 255)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(frac == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(exp == 255)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 255)_1","i":2,"b":[{"m":"(frac == 0)","h":0}]},{"n":"(frac == 0)_0","i":3,"b":[{"m":"(exp == 255)","h":0}]},{"n":"(frac == 0)_1","i":4,"b":[{"m":"(exp == 255)","h":0}]}],"x":1,"p":0.00},{"f":17,"l":284,"i":1,"s":"((exp == 255) && (frac != 0))","bi":0,"hp":0,"t":[{"n":"(exp == 255)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(frac != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(exp == 255)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 255)_1","i":2,"b":[{"m":"(frac != 0)","h":0}]},{"n":"(frac != 0)_0","i":3,"b":[{"m":"(exp == 255)","h":0}]},{"n":"(frac != 0)_1","i":4,"b":[{"m":"(exp == 255)","h":0}]}],"x":1,"p":0.00},{"f":17,"l":285,"i":1,"s":"((exp == 0) && (frac != 0))","bi":0,"hp":0,"t":[{"n":"(exp == 0)","c":1},{"n":"(frac != 0)","c":1}],"r":[{"n":"(exp == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 0)_1","i":2,"b":[{"m":"(frac != 0)","h":1}]},{"n":"(frac != 0)_0","i":3,"b":[{"m":"(exp == 0)","h":1}]},{"n":"(frac != 0)_1","i":4,"b":[{"m":"(exp == 0)","h":1}]}],"x":1,"p":100.00},{"f":17,"l":347,"i":1,"s":"(output_held || valid_data_out_internal)","bi":0,"hp":0,"t":[{"n":"output_held","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"valid_data_out_internal","c":1}],"r":[{"n":"output_held_0","i":1,"b":[{"m":"~valid_data_out_internal","h":1}]},{"n":"output_held_1","i":2,"b":[{"m":"-","h":0}]},{"n":"valid_data_out_internal_0","i":3,"b":[{"m":"~output_held","h":1}]},{"n":"valid_data_out_internal_1","i":4,"b":[{"m":"~output_held","h":1}]}],"x":1,"p":50.00},{"f":17,"l":95,"i":1,"s":"(srif.in.valid_in & srif.out.ready_in)","bi":0,"hp":0,"t":[{"n":"srif.in.valid_in","c":1},{"n":"srif.out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"srif.in.valid_in_0","i":1,"b":[{"m":"srif.out.ready_in","h":1}]},{"n":"srif.in.valid_in_1","i":2,"b":[{"m":"srif.out.ready_in","h":1}]},{"n":"srif.out.ready_in_0","i":3,"b":[{"m":"srif.in.valid_in","h":0}]},{"n":"srif.out.ready_in_1","i":4,"b":[{"m":"srif.in.valid_in","h":1}]}],"x":0,"p":50.00},{"f":17,"l":119,"i":1,"s":"(srif.in.valid_in & ready_input_reg)","bi":0,"hp":0,"t":[{"n":"srif.in.valid_in","c":1},{"n":"ready_input_reg","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"srif.in.valid_in_0","i":1,"b":[{"m":"ready_input_reg","h":1}]},{"n":"srif.in.valid_in_1","i":2,"b":[{"m":"ready_input_reg","h":1}]},{"n":"ready_input_reg_0","i":3,"b":[{"m":"srif.in.valid_in","h":0}]},{"n":"ready_input_reg_1","i":4,"b":[{"m":"srif.in.valid_in","h":1}]}],"x":0,"p":50.00},{"f":17,"l":121,"i":1,"s":"(valid_data_out_internal & srif.in.ready_out)","bi":0,"hp":0,"t":[{"n":"valid_data_out_internal","c":1},{"n":"srif.in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"valid_data_out_internal_0","i":1,"b":[{"m":"srif.in.ready_out","h":1}]},{"n":"valid_data_out_internal_1","i":2,"b":[{"m":"srif.in.ready_out","h":1}]},{"n":"srif.in.ready_out_0","i":3,"b":[{"m":"valid_data_out_internal","h":0}]},{"n":"srif.in.ready_out_1","i":4,"b":[{"m":"valid_data_out_internal","h":1}]}],"x":0,"p":50.00},{"f":17,"l":201,"i":1,"s":"((mul_done_reg && ~second_pass) && ~third_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"second_pass","c":1},{"n":"third_pass","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"(~third_pass && ~second_pass)","h":1}]},{"n":"second_pass_0","i":3,"b":[{"m":"(~third_pass && mul_done_reg)","h":1}]},{"n":"second_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]},{"n":"third_pass_0","i":5,"b":[{"m":"(mul_done_reg && ~second_pass)","h":1}]},{"n":"third_pass_1","i":6,"b":[{"m":"(mul_done_reg && ~second_pass)","h":0}]}],"x":0,"p":66.66},{"f":17,"l":203,"i":1,"s":"((mul_done_reg && second_pass) && ~third_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"second_pass","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"third_pass","c":1}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"(~third_pass && second_pass)","h":1}]},{"n":"second_pass_0","i":3,"b":[{"m":"mul_done_reg","h":0}]},{"n":"second_pass_1","i":4,"b":[{"m":"(~third_pass && mul_done_reg)","h":1}]},{"n":"third_pass_0","i":5,"b":[{"m":"(mul_done_reg && second_pass)","h":1}]},{"n":"third_pass_1","i":6,"b":[{"m":"(mul_done_reg && second_pass)","h":1}]}],"x":0,"p":66.66},{"f":17,"l":205,"i":1,"s":"(mul_done_reg & third_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"third_pass","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"third_pass","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"third_pass","h":1}]},{"n":"third_pass_0","i":3,"b":[{"m":"mul_done_reg","h":0}]},{"n":"third_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]}],"x":0,"p":50.00},{"f":17,"l":219,"i":1,"s":"(mul_done_reg && second_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"second_pass","c":1}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"second_pass","h":1}]},{"n":"second_pass_0","i":3,"b":[{"m":"mul_done_reg","h":1}]},{"n":"second_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]}],"x":0,"p":100.00},{"f":17,"l":242,"i":1,"s":"(mul_done_reg && second_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"second_pass","c":1}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"second_pass","h":1}]},{"n":"second_pass_0","i":3,"b":[{"m":"mul_done_reg","h":1}]},{"n":"second_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]}],"x":0,"p":100.00},{"f":17,"l":250,"i":1,"s":"(mul_done_reg && third_pass)","bi":0,"hp":0,"t":[{"n":"mul_done_reg","c":1},{"n":"third_pass","c":1}],"r":[{"n":"mul_done_reg_0","i":1,"b":[{"m":"-","h":1}]},{"n":"mul_done_reg_1","i":2,"b":[{"m":"third_pass","h":1}]},{"n":"third_pass_0","i":3,"b":[{"m":"mul_done_reg","h":1}]},{"n":"third_pass_1","i":4,"b":[{"m":"mul_done_reg","h":1}]}],"x":0,"p":100.00},{"f":17,"l":302,"i":1,"s":"(input_is_subnormal || input_is_zero)","bi":0,"hp":0,"t":[{"n":"input_is_subnormal","c":1},{"n":"input_is_zero","c":1}],"r":[{"n":"input_is_subnormal_0","i":1,"b":[{"m":"~input_is_zero","h":1}]},{"n":"input_is_subnormal_1","i":2,"b":[{"m":"-","h":1}]},{"n":"input_is_zero_0","i":3,"b":[{"m":"~input_is_subnormal","h":1}]},{"n":"input_is_zero_1","i":4,"b":[{"m":"~input_is_subnormal","h":1}]}],"x":0,"p":100.00},{"f":17,"l":317,"i":1,"s":"(valid_data_out_internal & srif.in.ready_out)","bi":0,"hp":0,"t":[{"n":"valid_data_out_internal","c":1},{"n":"srif.in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"valid_data_out_internal_0","i":1,"b":[{"m":"srif.in.ready_out","h":1}]},{"n":"valid_data_out_internal_1","i":2,"b":[{"m":"srif.in.ready_out","h":1}]},{"n":"srif.in.ready_out_0","i":3,"b":[{"m":"valid_data_out_internal","h":0}]},{"n":"srif.in.ready_out_1","i":4,"b":[{"m":"valid_data_out_internal","h":1}]}],"x":0,"p":50.00},{"f":17,"l":335,"i":1,"s":"(valid_data_out_internal && ~srif.in.ready_out)","bi":0,"hp":0,"t":[{"n":"valid_data_out_internal","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"srif.in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"valid_data_out_internal_0","i":1,"b":[{"m":"-","h":1}]},{"n":"valid_data_out_internal_1","i":2,"b":[{"m":"~srif.in.ready_out","h":0}]},{"n":"srif.in.ready_out_0","i":3,"b":[{"m":"valid_data_out_internal","h":0}]},{"n":"srif.in.ready_out_1","i":4,"b":[{"m":"valid_data_out_internal","h":1}]}],"x":0,"p":0.00},{"f":17,"l":339,"i":1,"s":"(output_held && srif.in.ready_out)","bi":0,"hp":0,"t":[{"n":"output_held","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"srif.in.ready_out","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"output_held_0","i":1,"b":[{"m":"-","h":1}]},{"n":"output_held_1","i":2,"b":[{"m":"srif.in.ready_out","h":0}]},{"n":"srif.in.ready_out_0","i":3,"b":[{"m":"output_held","h":0}]},{"n":"srif.in.ready_out_1","i":4,"b":[{"m":"output_held","h":0}]}],"x":0,"p":0.00}]},"33":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1","t":"inst","ce":[{"f":11,"l":74,"i":1,"s":"(a_latched[15] ^ b_latched[15])","bi":1,"hp":0,"t":[{"n":"a_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"},{"n":"b_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"}],"r":[{"n":"a_latched[15]_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_latched[15]_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":0}]},{"n":"b_latched[15]_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_latched[15]_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":11,"l":40,"i":1,"s":"(a_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(a_latched[14:7] == 0)","c":1}],"r":[{"n":"(a_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(a_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":11,"l":47,"i":1,"s":"(b_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(b_latched[14:7] == 0)","c":1}],"r":[{"n":"(b_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(b_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":11,"l":98,"i":1,"s":"(mul_frac_product[1] & ((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2]))","bi":0,"hp":0,"t":[{"n":"mul_frac_product[1]","c":1},{"n":"mul_frac_product[0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"mul_round_loss","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"mul_frac_product[2]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"mul_frac_product[1]_0","i":1,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":1}]},{"n":"mul_frac_product[1]_1","i":2,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":1}]},{"n":"mul_frac_product[0]_0","i":3,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":0}]},{"n":"mul_frac_product[0]_1","i":4,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":0}]},{"n":"mul_round_loss_0","i":5,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":0}]},{"n":"mul_round_loss_1","i":6,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":1}]},{"n":"mul_frac_product[2]_0","i":7,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":0}]},{"n":"mul_frac_product[2]_1","i":8,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":1}]}],"x":0,"p":25.00},{"f":11,"l":106,"i":1,"s":"(mul_product == 0)","bi":0,"hp":0,"t":[{"n":"(mul_product == 0)","c":1}],"r":[{"n":"(mul_product == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(mul_product == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00}]},"35":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[13]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"36":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[12]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"37":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[11]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"38":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[10]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"39":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[9]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"40":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[8]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"41":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[7]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"42":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[10]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"43":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[9]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"44":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[8]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"45":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[7]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"46":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[6]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"47":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[5]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"48":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[7]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":0,"r":"'_0' hit but '_1' not hit","h":"Hit '_1' for output ->0 or ->1"},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":66.66}]},"49":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[6]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"50":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[5]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"51":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[4]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"52":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[3]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"53":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[2]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"54":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[9]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"55":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[8]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"56":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[7]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"57":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[6]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"58":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[5]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"59":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[4]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"60":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[3]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"61":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[7]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"62":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[6]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"63":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[5]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"64":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[4]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"65":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[3]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"66":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[2]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"67":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_first","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"68":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_last","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"69":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[7]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"70":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[6]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"71":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[5]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"72":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[4]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"73":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[3]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"74":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[2]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"75":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_first","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"76":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_last","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"77":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l1_b2","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"78":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b1","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"79":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b8","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"80":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b3","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"81":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b4","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"82":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b11","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"83":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b12","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"84":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b4","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"b","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":0}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":0}]}],"x":1,"p":0.00}]},"85":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b5","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"86":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b6","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"87":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b14","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":50.00}]},"34":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca","t":"inst","ce":[{"f":12,"l":28,"i":1,"s":"(a_latched[0] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":28,"i":1,"s":"(a_latched[3] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":29,"i":1,"s":"(a_latched[2] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[2]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":29,"i":1,"s":"(a_latched[5] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[5]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":31,"i":1,"s":"(a_latched[0] & b_latched[1])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":1,"s":"(a_latched[3] & b_latched[1])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[1] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[4] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":1,"s":"(a_latched[1] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[1]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":32,"i":1,"s":"(a_latched[4] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[4]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":32,"i":2,"s":"(a_latched[2] & b_latched[6])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":2,"s":"(a_latched[5] & b_latched[6])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[2])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[3])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[4])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[5])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[6])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & frac_leading_bit_fp2)","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[0]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[2])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[3])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[4])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[5])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[6])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & frac_leading_bit_fp2)","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[3]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[1])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[2])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[3])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[4])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[5])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[6])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[1])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[2])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[3])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[4])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[5])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[6])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[0])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[1])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[2])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[3])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[4])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[5])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[0])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[1])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[2])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[3])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[4])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[5])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":78,"i":1,"s":"(a_latched[6] & b_latched[0])","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[1])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[2])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[2]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[6]","h":0}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[3])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[4])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[5])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[6])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[0])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"b_latched[0]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[0]","h":0}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":50.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[1])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"b_latched[1]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[1]","h":0}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":50.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[2])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"b_latched[2]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[2]","h":0}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":50.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[3])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[4])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[5])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":89,"i":1,"s":"(a_latched[6] & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[6]","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":50.00},{"f":12,"l":89,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[6])","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":92,"i":1,"s":"(frac_leading_bit_fp1 & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"frac_leading_bit_fp2","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":0}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":0}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":0.00}]},"88":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/add_EXPs","t":"inst","ce":[{"f":15,"l":38,"i":1,"s":"((r_sum[7] && ~r_exp1[7]) && ~r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"r_exp1[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp2[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"(~r_exp2[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp1[7]_0","i":3,"b":[{"m":"(~r_exp2[7] && r_sum[7])","h":0}]},{"n":"r_exp1[7]_1","i":4,"b":[{"m":"r_sum[7]","h":1}]},{"n":"r_exp2[7]_0","i":5,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":6,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]}],"x":1,"p":0.00},{"f":15,"l":39,"i":1,"s":"(((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7]) && r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":1},{"n":"carry","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(sum != 255)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"r_exp1[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp2[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"(r_exp2[7] && r_exp1[7] && (~carry || (sum != 255)))","h":1}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"carry_0","i":3,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7])","h":1}]},{"n":"carry_1","i":4,"b":[{"m":"(~r_sum[7] && ~(sum != 255))","h":0}]},{"n":"(sum != 255)_0","i":5,"b":[{"m":"(~r_sum[7] && carry)","h":0}]},{"n":"(sum != 255)_1","i":6,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7] && carry)","h":0}]},{"n":"r_exp1[7]_0","i":7,"b":[{"m":"(~r_sum[7] && (~carry || (sum != 255)))","h":0}]},{"n":"r_exp1[7]_1","i":8,"b":[{"m":"(r_exp2[7] && (~r_sum[7] && (~carry || (sum != 255))))","h":1}]},{"n":"r_exp2[7]_0","i":9,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":10,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":1}]}],"x":1,"p":20.00}]},"89":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1","t":"inst","ce":[{"f":18,"l":16,"i":1,"s":"(&mul_out_reg[14:7] && |mul_out_reg[6:0])","bi":0,"hp":0,"t":[{"n":"&mul_out_reg[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|mul_out_reg[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&mul_out_reg[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&mul_out_reg[14:7]_1","i":2,"b":[{"m":"|mul_out_reg[6:0]","h":0}]},{"n":"|mul_out_reg[6:0]_0","i":3,"b":[{"m":"&mul_out_reg[14:7]","h":0}]},{"n":"|mul_out_reg[6:0]_1","i":4,"b":[{"m":"&mul_out_reg[14:7]","h":0}]}],"x":1,"p":0.00},{"f":18,"l":17,"i":1,"s":"(&intercept[14:7] && |intercept[6:0])","bi":0,"hp":0,"t":[{"n":"&intercept[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|intercept[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&intercept[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&intercept[14:7]_1","i":2,"b":[{"m":"|intercept[6:0]","h":0}]},{"n":"|intercept[6:0]_0","i":3,"b":[{"m":"&intercept[14:7]","h":0}]},{"n":"|intercept[6:0]_1","i":4,"b":[{"m":"&intercept[14:7]","h":0}]}],"x":1,"p":0.00},{"f":18,"l":20,"i":1,"s":"(&mul_out_reg[14:7] && ~|mul_out_reg[6:0])","bi":0,"hp":0,"t":[{"n":"&mul_out_reg[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|mul_out_reg[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&mul_out_reg[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&mul_out_reg[14:7]_1","i":2,"b":[{"m":"~|mul_out_reg[6:0]","h":0}]},{"n":"~|mul_out_reg[6:0]_0","i":3,"b":[{"m":"&mul_out_reg[14:7]","h":0}]},{"n":"~|mul_out_reg[6:0]_1","i":4,"b":[{"m":"&mul_out_reg[14:7]","h":0}]}],"x":1,"p":0.00},{"f":18,"l":21,"i":1,"s":"(&intercept[14:7] && ~|intercept[6:0])","bi":0,"hp":0,"t":[{"n":"&intercept[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|intercept[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&intercept[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&intercept[14:7]_1","i":2,"b":[{"m":"~|intercept[6:0]","h":0}]},{"n":"~|intercept[6:0]_0","i":3,"b":[{"m":"&intercept[14:7]","h":0}]},{"n":"~|intercept[6:0]_1","i":4,"b":[{"m":"&intercept[14:7]","h":0}]}],"x":1,"p":0.00},{"f":18,"l":24,"i":1,"s":"((is_nan1 || is_nan2) || ((is_inf1 && is_inf2) && (mul_out_reg[15] == intercept[15])))","bi":0,"hp":0,"t":[{"n":"is_nan1","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_nan2","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_inf1","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_inf2","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"(mul_out_reg[15] == intercept[15])","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_nan1_0","i":1,"b":[{"m":"(~((is_inf1 && is_inf2) && (mul_out_reg[15] == intercept[15])) && ~is_nan2)","h":1}]},{"n":"is_nan1_1","i":2,"b":[{"m":"-","h":0}]},{"n":"is_nan2_0","i":3,"b":[{"m":"(~((is_inf1 && is_inf2) && (mul_out_reg[15] == intercept[15])) && ~is_nan1)","h":1}]},{"n":"is_nan2_1","i":4,"b":[{"m":"~is_nan1","h":0}]},{"n":"is_inf1_0","i":5,"b":[{"m":"~(is_nan1 || is_nan2)","h":1}]},{"n":"is_inf1_1","i":6,"b":[{"m":"(~(is_nan1 || is_nan2) && (mul_out_reg[15] == intercept[15]) && is_inf2)","h":0}]},{"n":"is_inf2_0","i":7,"b":[{"m":"(~(is_nan1 || is_nan2) && is_inf1)","h":0}]},{"n":"is_inf2_1","i":8,"b":[{"m":"(~(is_nan1 || is_nan2) && (mul_out_reg[15] == intercept[15]) && is_inf1)","h":0}]},{"n":"(mul_out_reg[15] == intercept[15])_0","i":9,"b":[{"m":"(~(is_nan1 || is_nan2) && (is_inf1 && is_inf2))","h":0}]},{"n":"(mul_out_reg[15] == intercept[15])_1","i":10,"b":[{"m":"(~(is_nan1 || is_nan2) && (is_inf1 && is_inf2))","h":0}]}],"x":1,"p":0.00},{"f":18,"l":124,"i":1,"s":"(sign_shifted ^ sign_not_shifted)","bi":1,"hp":0,"t":[{"n":"sign_shifted","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"},{"n":"sign_not_shifted","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"}],"r":[{"n":"sign_shifted_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"sign_shifted_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":0}]},{"n":"sign_not_shifted_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"sign_not_shifted_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":18,"l":161,"i":1,"s":"(sign_shifted_l & sign_not_shifted_l)","bi":0,"hp":0,"t":[{"n":"sign_shifted_l","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"sign_not_shifted_l","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"sign_shifted_l_0","i":1,"b":[{"m":"sign_not_shifted_l","h":0}]},{"n":"sign_shifted_l_1","i":2,"b":[{"m":"sign_not_shifted_l","h":0}]},{"n":"sign_not_shifted_l_0","i":3,"b":[{"m":"sign_shifted_l","h":0}]},{"n":"sign_not_shifted_l_1","i":4,"b":[{"m":"sign_shifted_l","h":0}]}],"x":1,"p":0.00},{"f":18,"l":185,"i":1,"s":"((exp_max_l == 255) || (mantissa_overflow && (exp_max_l == 254)))","bi":0,"hp":0,"t":[{"n":"(exp_max_l == 255)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"mantissa_overflow","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(exp_max_l == 254)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp_max_l == 255)_0","i":1,"b":[{"m":"~(mantissa_overflow && (exp_max_l == 254))","h":1}]},{"n":"(exp_max_l == 255)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"mantissa_overflow_0","i":3,"b":[{"m":"~(exp_max_l == 255)","h":1}]},{"n":"mantissa_overflow_1","i":4,"b":[{"m":"(~(exp_max_l == 255) && (exp_max_l == 254))","h":0}]},{"n":"(exp_max_l == 254)_0","i":5,"b":[{"m":"(~(exp_max_l == 255) && mantissa_overflow)","h":1}]},{"n":"(exp_max_l == 254)_1","i":6,"b":[{"m":"(~(exp_max_l == 255) && mantissa_overflow)","h":0}]}],"x":1,"p":0.00},{"f":18,"l":189,"i":1,"s":"((exp_minus_shift_amount == 0) || (|exp_minus_shift_amount[7:6] && ~exp_minus_shift_amount[7]))","bi":0,"hp":0,"t":[{"n":"(exp_minus_shift_amount == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"|exp_minus_shift_amount[7:6]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"exp_minus_shift_amount[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp_minus_shift_amount == 0)_0","i":1,"b":[{"m":"~(|exp_minus_shift_amount[7:6] && ~exp_minus_shift_amount[7])","h":0}]},{"n":"(exp_minus_shift_amount == 0)_1","i":2,"b":[{"m":"-","h":1}]},{"n":"|exp_minus_shift_amount[7:6]_0","i":3,"b":[{"m":"~(exp_minus_shift_amount == 0)","h":0}]},{"n":"|exp_minus_shift_amount[7:6]_1","i":4,"b":[{"m":"(~(exp_minus_shift_amount == 0) && ~exp_minus_shift_amount[7])","h":1}]},{"n":"exp_minus_shift_amount[7]_0","i":5,"b":[{"m":"(~(exp_minus_shift_amount == 0) && |exp_minus_shift_amount[7:6])","h":1}]},{"n":"exp_minus_shift_amount[7]_1","i":6,"b":[{"m":"(~(exp_minus_shift_amount == 0) && |exp_minus_shift_amount[7:6])","h":0}]}],"x":1,"p":0.00},{"f":18,"l":33,"i":1,"s":"(mul_out_reg[14:7] < intercept[14:7])","bi":0,"hp":0,"t":[{"n":"(mul_out_reg[14:7] < intercept[14:7])","c":1}],"r":[{"n":"(mul_out_reg[14:7] < intercept[14:7])_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(mul_out_reg[14:7] < intercept[14:7])_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":18,"l":50,"i":1,"s":"(mul_out_reg[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(mul_out_reg[14:7] == 0)","c":1}],"r":[{"n":"(mul_out_reg[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(mul_out_reg[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":18,"l":55,"i":1,"s":"(intercept[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(intercept[14:7] == 0)","c":1}],"r":[{"n":"(intercept[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(intercept[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":18,"l":113,"i":1,"s":"(frac_shifted > frac_not_shifted)","bi":0,"hp":0,"t":[{"n":"(frac_shifted > frac_not_shifted)","c":1}],"r":[{"n":"(frac_shifted > frac_not_shifted)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(frac_shifted > frac_not_shifted)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":18,"l":274,"i":1,"s":"(G & (R | sticky_bit))","bi":0,"hp":0,"t":[{"n":"G","c":1},{"n":"R","c":1},{"n":"sticky_bit","c":1}],"r":[{"n":"G_0","i":1,"b":[{"m":"(R | sticky_bit)","h":1}]},{"n":"G_1","i":2,"b":[{"m":"(R | sticky_bit)","h":1}]},{"n":"R_0","i":3,"b":[{"m":"(G && ~sticky_bit)","h":1}]},{"n":"R_1","i":4,"b":[{"m":"(G && ~sticky_bit)","h":1}]},{"n":"sticky_bit_0","i":5,"b":[{"m":"(G && ~R)","h":1}]},{"n":"sticky_bit_1","i":6,"b":[{"m":"(G && ~R)","h":1}]}],"x":0,"p":100.00}]},"91":{"pr":"/lane_tb/dut/u_sqrt_sync","t":"inst","ce":[{"f":20,"l":33,"i":1,"s":"(fu_ready && ~fifo_full)","bi":0,"hp":0,"t":[{"n":"fu_ready","c":1},{"n":"fifo_full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"fu_ready_0","i":1,"b":[{"m":"-","h":1}]},{"n":"fu_ready_1","i":2,"b":[{"m":"~fifo_full","h":1}]},{"n":"fifo_full_0","i":3,"b":[{"m":"fu_ready","h":1}]},{"n":"fifo_full_1","i":4,"b":[{"m":"fu_ready","h":0}]}],"x":1,"p":50.00},{"f":20,"l":36,"i":1,"s":"(issue_valid && sync_ready)","bi":0,"hp":0,"t":[{"n":"issue_valid","c":1},{"n":"sync_ready","c":1}],"r":[{"n":"issue_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"issue_valid_1","i":2,"b":[{"m":"sync_ready","h":1}]},{"n":"sync_ready_0","i":3,"b":[{"m":"issue_valid","h":1}]},{"n":"sync_ready_1","i":4,"b":[{"m":"issue_valid","h":1}]}],"x":1,"p":100.00},{"f":20,"l":39,"i":1,"s":"((wb_valid && wb_ready) && ~fifo_empty)","bi":0,"hp":0,"t":[{"n":"wb_valid","c":1},{"n":"wb_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"fifo_empty","c":1}],"r":[{"n":"wb_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"wb_valid_1","i":2,"b":[{"m":"(~fifo_empty && wb_ready)","h":1}]},{"n":"wb_ready_0","i":3,"b":[{"m":"wb_valid","h":0}]},{"n":"wb_ready_1","i":4,"b":[{"m":"(~fifo_empty && wb_valid)","h":1}]},{"n":"fifo_empty_0","i":5,"b":[{"m":"(wb_valid && wb_ready)","h":1}]},{"n":"fifo_empty_1","i":6,"b":[{"m":"(wb_valid && wb_ready)","h":1}]}],"x":1,"p":66.66}]},"92":{"pr":"/lane_tb/dut/u_sqrt_sync/u_fifo","t":"inst","ce":[{"f":21,"l":41,"i":1,"s":"((wptr + 1) == rptr)","bi":0,"hp":0,"t":[{"n":"((wptr + 1) == rptr)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"((wptr + 1) == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"((wptr + 1) == rptr)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":21,"l":42,"i":1,"s":"(wptr == rptr)","bi":0,"hp":0,"t":[{"n":"(wptr == rptr)","c":1}],"r":[{"n":"(wptr == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wptr == rptr)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":21,"l":22,"i":1,"s":"(wr_en & ~full)","bi":0,"hp":0,"t":[{"n":"wr_en","c":1},{"n":"full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wr_en_0","i":1,"b":[{"m":"~full","h":1}]},{"n":"wr_en_1","i":2,"b":[{"m":"~full","h":1}]},{"n":"full_0","i":3,"b":[{"m":"wr_en","h":1}]},{"n":"full_1","i":4,"b":[{"m":"wr_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":33,"i":1,"s":"(rd_en & ~empty)","bi":0,"hp":0,"t":[{"n":"rd_en","c":1},{"n":"empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"rd_en_0","i":1,"b":[{"m":"~empty","h":1}]},{"n":"rd_en_1","i":2,"b":[{"m":"~empty","h":1}]},{"n":"empty_0","i":3,"b":[{"m":"rd_en","h":1}]},{"n":"empty_1","i":4,"b":[{"m":"rd_en","h":0}]}],"x":0,"p":50.00}]},"95":{"pr":"/lane_tb/dut/u_div","t":"inst","ce":[{"f":22,"l":33,"i":1,"s":"(done || ((skip_divider && divif.in.valid_in) && divif.out.ready_in))","bi":0,"hp":0,"t":[{"n":"done","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"skip_divider","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"divif.in.valid_in","c":1},{"n":"divif.out.ready_in","c":1}],"r":[{"n":"done_0","i":1,"b":[{"m":"~((skip_divider && divif.in.valid_in) && divif.out.ready_in)","h":1}]},{"n":"done_1","i":2,"b":[{"m":"-","h":0}]},{"n":"skip_divider_0","i":3,"b":[{"m":"~done","h":0}]},{"n":"skip_divider_1","i":4,"b":[{"m":"(~done && divif.out.ready_in && divif.in.valid_in)","h":1}]},{"n":"divif.in.valid_in_0","i":5,"b":[{"m":"(~done && skip_divider)","h":1}]},{"n":"divif.in.valid_in_1","i":6,"b":[{"m":"(~done && divif.out.ready_in && skip_divider)","h":1}]},{"n":"divif.out.ready_in_0","i":7,"b":[{"m":"(~done && (skip_divider && divif.in.valid_in))","h":1}]},{"n":"divif.out.ready_in_1","i":8,"b":[{"m":"(~done && (skip_divider && divif.in.valid_in))","h":1}]}],"x":1,"p":50.00},{"f":22,"l":84,"i":1,"s":"((divif.in.valid_in && divif.out.ready_in) || (divif.out.ready_in ~| divif.out.valid_out))","bi":1,"hp":0,"t":[{"n":"divif.in.valid_in","c":1},{"n":"divif.out.ready_in","c":1},{"n":"divif.out.valid_out","c":1}],"r":[{"n":"divif.in.valid_in_0","i":1,"b":[{"m":"~(divif.out.ready_in ~| divif.out.valid_out)","h":1},{"m":"~(divif.out.ready_in ~| divif.out.valid_out)","h":0}]},{"n":"divif.in.valid_in_1","i":2,"b":[{"m":"divif.out.ready_in","h":0},{"m":"divif.out.ready_in","h":1}]},{"n":"divif.out.ready_in_0","i":3,"b":[{"m":"(~(divif.out.ready_in ~| divif.out.valid_out) && divif.in.valid_in), ~divif.out.valid_out","h":0},{"m":"(~(divif.out.ready_in ~| divif.out.valid_out) && divif.in.valid_in), ~divif.out.valid_out","h":1}]},{"n":"divif.out.ready_in_1","i":4,"b":[{"m":"divif.in.valid_in, (~(divif.in.valid_in && divif.out.ready_in) && ~divif.out.valid_out)","h":1},{"m":"divif.in.valid_in, (~(divif.in.valid_in && divif.out.ready_in) && ~divif.out.valid_out)","h":0}]},{"n":"divif.out.valid_out_0","i":5,"b":[{"m":"~divif.out.ready_in","h":0},{"m":"~divif.out.ready_in","h":1}]},{"n":"divif.out.valid_out_1","i":6,"b":[{"m":"~divif.out.ready_in","h":1},{"m":"~divif.out.ready_in","h":0}]}],"x":1,"p":100.00},{"f":22,"l":134,"i":1,"s":"(sign_a ^ sign_b)","bi":1,"hp":0,"t":[{"n":"sign_a","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"},{"n":"sign_b","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"}],"r":[{"n":"sign_a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"sign_a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":0}]},{"n":"sign_b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"sign_b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":22,"l":141,"i":1,"s":"(exp_a == 0)","bi":0,"hp":0,"t":[{"n":"(exp_a == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(exp_a == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(exp_a == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":0.00},{"f":22,"l":142,"i":1,"s":"(exp_b == 0)","bi":0,"hp":0,"t":[{"n":"(exp_b == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(exp_b == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(exp_b == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":0.00},{"f":22,"l":143,"i":1,"s":"(exp_a_max && (mant_a == 0))","bi":0,"hp":0,"t":[{"n":"exp_a_max","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mant_a == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"exp_a_max_0","i":1,"b":[{"m":"-","h":1}]},{"n":"exp_a_max_1","i":2,"b":[{"m":"(mant_a == 0)","h":0}]},{"n":"(mant_a == 0)_0","i":3,"b":[{"m":"exp_a_max","h":0}]},{"n":"(mant_a == 0)_1","i":4,"b":[{"m":"exp_a_max","h":0}]}],"x":1,"p":0.00},{"f":22,"l":144,"i":1,"s":"(exp_b_max && (mant_b == 0))","bi":0,"hp":0,"t":[{"n":"exp_b_max","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mant_b == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"exp_b_max_0","i":1,"b":[{"m":"-","h":1}]},{"n":"exp_b_max_1","i":2,"b":[{"m":"(mant_b == 0)","h":0}]},{"n":"(mant_b == 0)_0","i":3,"b":[{"m":"exp_b_max","h":0}]},{"n":"(mant_b == 0)_1","i":4,"b":[{"m":"exp_b_max","h":0}]}],"x":1,"p":0.00},{"f":22,"l":145,"i":1,"s":"(exp_a_max && (mant_a != 0))","bi":0,"hp":0,"t":[{"n":"exp_a_max","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mant_a != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"exp_a_max_0","i":1,"b":[{"m":"-","h":1}]},{"n":"exp_a_max_1","i":2,"b":[{"m":"(mant_a != 0)","h":0}]},{"n":"(mant_a != 0)_0","i":3,"b":[{"m":"exp_a_max","h":0}]},{"n":"(mant_a != 0)_1","i":4,"b":[{"m":"exp_a_max","h":0}]}],"x":1,"p":0.00},{"f":22,"l":146,"i":1,"s":"(exp_b_max && (mant_b != 0))","bi":0,"hp":0,"t":[{"n":"exp_b_max","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mant_b != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"exp_b_max_0","i":1,"b":[{"m":"-","h":1}]},{"n":"exp_b_max_1","i":2,"b":[{"m":"(mant_b != 0)","h":0}]},{"n":"(mant_b != 0)_0","i":3,"b":[{"m":"exp_b_max","h":0}]},{"n":"(mant_b != 0)_1","i":4,"b":[{"m":"exp_b_max","h":0}]}],"x":1,"p":0.00},{"f":22,"l":150,"i":1,"s":"(((a_nan || b_nan) || (a_zero && b_zero)) || (a_inf && b_inf))","bi":0,"hp":0,"t":[{"n":"a_nan","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"b_nan","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"a_zero","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"b_zero","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"a_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"b_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"a_nan_0","i":1,"b":[{"m":"(~(a_inf && b_inf) && ~(a_zero && b_zero) && ~b_nan)","h":0}]},{"n":"a_nan_1","i":2,"b":[{"m":"-","h":0}]},{"n":"b_nan_0","i":3,"b":[{"m":"(~(a_inf && b_inf) && ~(a_zero && b_zero) && ~a_nan)","h":0}]},{"n":"b_nan_1","i":4,"b":[{"m":"~a_nan","h":0}]},{"n":"a_zero_0","i":5,"b":[{"m":"(~(a_inf && b_inf) && ~(a_nan || b_nan))","h":0}]},{"n":"a_zero_1","i":6,"b":[{"m":"(~(a_nan || b_nan) && b_zero)","h":1}]},{"n":"b_zero_0","i":7,"b":[{"m":"(~(a_inf && b_inf) && ~(a_nan || b_nan) && a_zero)","h":0}]},{"n":"b_zero_1","i":8,"b":[{"m":"(~(a_nan || b_nan) && a_zero)","h":1}]},{"n":"a_inf_0","i":9,"b":[{"m":"~((a_nan || b_nan) || (a_zero && b_zero))","h":0}]},{"n":"a_inf_1","i":10,"b":[{"m":"(~((a_nan || b_nan) || (a_zero && b_zero)) && b_inf)","h":0}]},{"n":"b_inf_0","i":11,"b":[{"m":"(~((a_nan || b_nan) || (a_zero && b_zero)) && a_inf)","h":0}]},{"n":"b_inf_1","i":12,"b":[{"m":"(~((a_nan || b_nan) || (a_zero && b_zero)) && a_inf)","h":0}]}],"x":1,"p":0.00},{"f":22,"l":151,"i":1,"s":"(~is_nan && (a_inf || b_zero))","bi":0,"hp":0,"t":[{"n":"is_nan","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"a_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"b_zero","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_nan_0","i":1,"b":[{"m":"(a_inf || b_zero)","h":0}]},{"n":"is_nan_1","i":2,"b":[{"m":"-","h":1}]},{"n":"a_inf_0","i":3,"b":[{"m":"(~is_nan && ~b_zero)","h":0}]},{"n":"a_inf_1","i":4,"b":[{"m":"~is_nan","h":0}]},{"n":"b_zero_0","i":5,"b":[{"m":"(~is_nan && ~a_inf)","h":0}]},{"n":"b_zero_1","i":6,"b":[{"m":"(~is_nan && ~a_inf)","h":0}]}],"x":1,"p":0.00},{"f":22,"l":152,"i":1,"s":"((is_nan ~| is_inf) && (a_zero || b_inf))","bi":0,"hp":0,"t":[{"n":"is_nan","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"is_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"a_zero","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"b_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_nan_0","i":1,"b":[{"m":"((a_zero || b_inf) && ~is_inf)","h":0}]},{"n":"is_nan_1","i":2,"b":[{"m":"~is_inf","h":1}]},{"n":"is_inf_0","i":3,"b":[{"m":"((a_zero || b_inf) && ~is_nan)","h":0}]},{"n":"is_inf_1","i":4,"b":[{"m":"~is_nan","h":0}]},{"n":"a_zero_0","i":5,"b":[{"m":"((is_nan ~| is_inf) && ~b_inf)","h":0}]},{"n":"a_zero_1","i":6,"b":[{"m":"(is_nan ~| is_inf)","h":0}]},{"n":"b_inf_0","i":7,"b":[{"m":"((is_nan ~| is_inf) && ~a_zero)","h":0}]},{"n":"b_inf_1","i":8,"b":[{"m":"((is_nan ~| is_inf) && ~a_zero)","h":0}]}],"x":1,"p":0.00},{"f":22,"l":153,"i":1,"s":"((is_nan || is_inf) || is_zero)","bi":0,"hp":0,"t":[{"n":"is_nan","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"is_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"is_zero","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_nan_0","i":1,"b":[{"m":"(~is_zero && ~is_inf)","h":0}]},{"n":"is_nan_1","i":2,"b":[{"m":"-","h":1}]},{"n":"is_inf_0","i":3,"b":[{"m":"(~is_zero && ~is_nan)","h":0}]},{"n":"is_inf_1","i":4,"b":[{"m":"~is_nan","h":0}]},{"n":"is_zero_0","i":5,"b":[{"m":"~(is_nan || is_inf)","h":0}]},{"n":"is_zero_1","i":6,"b":[{"m":"~(is_nan || is_inf)","h":0}]}],"x":1,"p":0.00},{"f":22,"l":170,"i":1,"s":"(en_divider && ~skip_divider)","bi":0,"hp":0,"t":[{"n":"en_divider","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"skip_divider","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"en_divider_0","i":1,"b":[{"m":"-","h":1}]},{"n":"en_divider_1","i":2,"b":[{"m":"~skip_divider","h":0}]},{"n":"skip_divider_0","i":3,"b":[{"m":"en_divider","h":0}]},{"n":"skip_divider_1","i":4,"b":[{"m":"en_divider","h":1}]}],"x":1,"p":0.00},{"f":22,"l":171,"i":1,"s":"(exp_a != 0)","bi":0,"hp":0,"t":[{"n":"(exp_a != 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp_a != 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp_a != 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":22,"l":172,"i":1,"s":"(exp_b != 0)","bi":0,"hp":0,"t":[{"n":"(exp_b != 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp_b != 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp_b != 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":22,"l":198,"i":1,"s":"(((skip_divider ~| exp_b[4]) & exp_a[4]) & (exp_norm > ((1 << 5) - 2)))","bi":0,"hp":0,"t":[{"n":"skip_divider","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"exp_b[4]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"exp_a[4]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"(exp_norm > ((1 << 5) - 2))","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"skip_divider_0","i":1,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && exp_a[4] && ~exp_b[4])","h":0}]},{"n":"skip_divider_1","i":2,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && exp_a[4] && ~exp_b[4])","h":0}]},{"n":"exp_b[4]_0","i":3,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && exp_a[4] && ~skip_divider)","h":0}]},{"n":"exp_b[4]_1","i":4,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && exp_a[4] && ~skip_divider)","h":0}]},{"n":"exp_a[4]_0","i":5,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && (skip_divider ~| exp_b[4]))","h":0}]},{"n":"exp_a[4]_1","i":6,"b":[{"m":"((exp_norm > ((1 << 5) - 2)) && (skip_divider ~| exp_b[4]))","h":0}]},{"n":"(exp_norm > ((1 << 5) - 2))_0","i":7,"b":[{"m":"((skip_divider ~| exp_b[4]) & exp_a[4])","h":0}]},{"n":"(exp_norm > ((1 << 5) - 2))_1","i":8,"b":[{"m":"((skip_divider ~| exp_b[4]) & exp_a[4])","h":0}]}],"x":1,"p":0.00},{"f":22,"l":199,"i":1,"s":"(exp_norm[5] || (exp_norm == 0))","bi":0,"hp":0,"t":[{"n":"exp_norm[5]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(exp_norm == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"exp_norm[5]_0","i":1,"b":[{"m":"~(exp_norm == 0)","h":1}]},{"n":"exp_norm[5]_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(exp_norm == 0)_0","i":3,"b":[{"m":"~exp_norm[5]","h":1}]},{"n":"(exp_norm == 0)_1","i":4,"b":[{"m":"~exp_norm[5]","h":0}]}],"x":1,"p":0.00},{"f":22,"l":58,"i":1,"s":"(done || fast_path_delayed)","bi":0,"hp":0,"t":[{"n":"done","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"fast_path_delayed","c":1}],"r":[{"n":"done_0","i":1,"b":[{"m":"~fast_path_delayed","h":1}]},{"n":"done_1","i":2,"b":[{"m":"-","h":0}]},{"n":"fast_path_delayed_0","i":3,"b":[{"m":"~done","h":1}]},{"n":"fast_path_delayed_1","i":4,"b":[{"m":"~done","h":1}]}],"x":0,"p":50.00},{"f":22,"l":59,"i":1,"s":"(divif.in.ready_out && divif.out.valid_out)","bi":0,"hp":0,"t":[{"n":"divif.in.ready_out","c":1},{"n":"divif.out.valid_out","c":1}],"r":[{"n":"divif.in.ready_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"divif.in.ready_out_1","i":2,"b":[{"m":"divif.out.valid_out","h":1}]},{"n":"divif.out.valid_out_0","i":3,"b":[{"m":"divif.in.ready_out","h":1}]},{"n":"divif.out.valid_out_1","i":4,"b":[{"m":"divif.in.ready_out","h":1}]}],"x":0,"p":100.00},{"f":22,"l":61,"i":1,"s":"(divif.out.valid_out && divif.in.ready_out)","bi":0,"hp":0,"t":[{"n":"divif.out.valid_out","c":1},{"n":"divif.in.ready_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"divif.out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"divif.out.valid_out_1","i":2,"b":[{"m":"divif.in.ready_out","h":1}]},{"n":"divif.in.ready_out_0","i":3,"b":[{"m":"divif.out.valid_out","h":0}]},{"n":"divif.in.ready_out_1","i":4,"b":[{"m":"divif.out.valid_out","h":1}]}],"x":0,"p":50.00},{"f":22,"l":62,"i":1,"s":"(divif.in.valid_in && divif.out.ready_in)","bi":0,"hp":0,"t":[{"n":"divif.in.valid_in","c":1},{"n":"divif.out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"divif.in.valid_in_0","i":1,"b":[{"m":"-","h":1}]},{"n":"divif.in.valid_in_1","i":2,"b":[{"m":"divif.out.ready_in","h":1}]},{"n":"divif.out.ready_in_0","i":3,"b":[{"m":"divif.in.valid_in","h":0}]},{"n":"divif.out.ready_in_1","i":4,"b":[{"m":"divif.in.valid_in","h":1}]}],"x":0,"p":50.00},{"f":22,"l":102,"i":1,"s":"(divif.in.valid_in && divif.out.ready_in)","bi":0,"hp":0,"t":[{"n":"divif.in.valid_in","c":1},{"n":"divif.out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"divif.in.valid_in_0","i":1,"b":[{"m":"-","h":1}]},{"n":"divif.in.valid_in_1","i":2,"b":[{"m":"divif.out.ready_in","h":1}]},{"n":"divif.out.ready_in_0","i":3,"b":[{"m":"divif.in.valid_in","h":0}]},{"n":"divif.out.ready_in_1","i":4,"b":[{"m":"divif.in.valid_in","h":1}]}],"x":0,"p":50.00},{"f":22,"l":181,"i":1,"s":"(exp == 0)","bi":0,"hp":0,"t":[{"n":"(exp == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":22,"l":184,"i":1,"s":"(exp == 1)","bi":0,"hp":0,"t":[{"n":"(exp == 1)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(exp == 1)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(exp == 1)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":22,"l":205,"i":1,"s":"(is_inf || (is_ovf && ~skip_divider))","bi":0,"hp":0,"t":[{"n":"is_inf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"is_ovf","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"skip_divider","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_inf_0","i":1,"b":[{"m":"~(is_ovf && ~skip_divider)","h":0}]},{"n":"is_inf_1","i":2,"b":[{"m":"-","h":0}]},{"n":"is_ovf_0","i":3,"b":[{"m":"~is_inf","h":0}]},{"n":"is_ovf_1","i":4,"b":[{"m":"(~is_inf && ~skip_divider)","h":0}]},{"n":"skip_divider_0","i":5,"b":[{"m":"(~is_inf && is_ovf)","h":0}]},{"n":"skip_divider_1","i":6,"b":[{"m":"(~is_inf && is_ovf)","h":0}]}],"x":0,"p":0.00},{"f":22,"l":207,"i":1,"s":"(is_zero || is_sub)","bi":0,"hp":0,"t":[{"n":"is_zero","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"is_sub","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_zero_0","i":1,"b":[{"m":"~is_sub","h":0}]},{"n":"is_zero_1","i":2,"b":[{"m":"-","h":0}]},{"n":"is_sub_0","i":3,"b":[{"m":"~is_zero","h":0}]},{"n":"is_sub_1","i":4,"b":[{"m":"~is_zero","h":0}]}],"x":0,"p":0.00}]},"96":{"pr":"/lane_tb/dut/u_div/m_div","t":"inst","ce":[{"f":22,"l":273,"i":1,"s":"(n == 0)","bi":0,"hp":0,"t":[{"n":"(n == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(n == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(n == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00}]},"97":{"pr":"/lane_tb/dut/u_div_sync","t":"inst","ce":[{"f":20,"l":33,"i":1,"s":"(fu_ready && ~fifo_full)","bi":0,"hp":0,"t":[{"n":"fu_ready","c":1},{"n":"fifo_full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"fu_ready_0","i":1,"b":[{"m":"-","h":1}]},{"n":"fu_ready_1","i":2,"b":[{"m":"~fifo_full","h":1}]},{"n":"fifo_full_0","i":3,"b":[{"m":"fu_ready","h":1}]},{"n":"fifo_full_1","i":4,"b":[{"m":"fu_ready","h":0}]}],"x":1,"p":50.00},{"f":20,"l":36,"i":1,"s":"(issue_valid && sync_ready)","bi":0,"hp":0,"t":[{"n":"issue_valid","c":1},{"n":"sync_ready","c":1}],"r":[{"n":"issue_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"issue_valid_1","i":2,"b":[{"m":"sync_ready","h":1}]},{"n":"sync_ready_0","i":3,"b":[{"m":"issue_valid","h":1}]},{"n":"sync_ready_1","i":4,"b":[{"m":"issue_valid","h":1}]}],"x":1,"p":100.00},{"f":20,"l":39,"i":1,"s":"((wb_valid && wb_ready) && ~fifo_empty)","bi":0,"hp":0,"t":[{"n":"wb_valid","c":1},{"n":"wb_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"fifo_empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wb_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"wb_valid_1","i":2,"b":[{"m":"(~fifo_empty && wb_ready)","h":1}]},{"n":"wb_ready_0","i":3,"b":[{"m":"wb_valid","h":0}]},{"n":"wb_ready_1","i":4,"b":[{"m":"(~fifo_empty && wb_valid)","h":1}]},{"n":"fifo_empty_0","i":5,"b":[{"m":"(wb_valid && wb_ready)","h":1}]},{"n":"fifo_empty_1","i":6,"b":[{"m":"(wb_valid && wb_ready)","h":0}]}],"x":1,"p":33.33}]},"98":{"pr":"/lane_tb/dut/u_div_sync/u_fifo","t":"inst","ce":[{"f":21,"l":41,"i":1,"s":"((wptr + 1) == rptr)","bi":0,"hp":0,"t":[{"n":"((wptr + 1) == rptr)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"((wptr + 1) == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"((wptr + 1) == rptr)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":21,"l":42,"i":1,"s":"(wptr == rptr)","bi":0,"hp":0,"t":[{"n":"(wptr == rptr)","c":1}],"r":[{"n":"(wptr == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wptr == rptr)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":21,"l":22,"i":1,"s":"(wr_en & ~full)","bi":0,"hp":0,"t":[{"n":"wr_en","c":1},{"n":"full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wr_en_0","i":1,"b":[{"m":"~full","h":1}]},{"n":"wr_en_1","i":2,"b":[{"m":"~full","h":1}]},{"n":"full_0","i":3,"b":[{"m":"wr_en","h":1}]},{"n":"full_1","i":4,"b":[{"m":"wr_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":33,"i":1,"s":"(rd_en & ~empty)","bi":0,"hp":0,"t":[{"n":"rd_en","c":1},{"n":"empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"rd_en_0","i":1,"b":[{"m":"~empty","h":1}]},{"n":"rd_en_1","i":2,"b":[{"m":"~empty","h":1}]},{"n":"empty_0","i":3,"b":[{"m":"rd_en","h":1}]},{"n":"empty_1","i":4,"b":[{"m":"rd_en","h":0}]}],"x":0,"p":50.00}]},"101":{"pr":"/lane_tb/dut/u_mul","t":"inst","ce":[{"f":10,"l":47,"i":1,"s":"(state == HAVE_RES)","bi":0,"hp":0,"t":[{"n":"(state == HAVE_RES)","c":1}],"r":[{"n":"(state == HAVE_RES)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(state == HAVE_RES)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":10,"l":51,"i":1,"s":"(state == IDLE)","bi":0,"hp":0,"t":[{"n":"(state == IDLE)","c":1}],"r":[{"n":"(state == IDLE)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(state == IDLE)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":10,"l":70,"i":1,"s":"(((state == IDLE) && in.valid_in) && out.ready_in)","bi":0,"hp":0,"t":[{"n":"(state == IDLE)","c":1},{"n":"in.valid_in","c":1},{"n":"out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(state == IDLE)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(state == IDLE)_1","i":2,"b":[{"m":"(out.ready_in && in.valid_in)","h":1}]},{"n":"in.valid_in_0","i":3,"b":[{"m":"(state == IDLE)","h":1}]},{"n":"in.valid_in_1","i":4,"b":[{"m":"(out.ready_in && (state == IDLE))","h":1}]},{"n":"out.ready_in_0","i":5,"b":[{"m":"((state == IDLE) && in.valid_in)","h":0}]},{"n":"out.ready_in_1","i":6,"b":[{"m":"((state == IDLE) && in.valid_in)","h":1}]}],"x":0,"p":66.66},{"f":10,"l":96,"i":1,"s":"(in.valid_in && out.ready_in)","bi":0,"hp":0,"t":[{"n":"in.valid_in","c":1},{"n":"out.ready_in","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"in.valid_in_0","i":1,"b":[{"m":"-","h":1}]},{"n":"in.valid_in_1","i":2,"b":[{"m":"out.ready_in","h":1}]},{"n":"out.ready_in_0","i":3,"b":[{"m":"in.valid_in","h":0}]},{"n":"out.ready_in_1","i":4,"b":[{"m":"in.valid_in","h":1}]}],"x":0,"p":50.00},{"f":10,"l":114,"i":1,"s":"(out.valid_out && in.ready_out)","bi":0,"hp":0,"t":[{"n":"out.valid_out","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"in.ready_out","c":1}],"r":[{"n":"out.valid_out_0","i":1,"b":[{"m":"-","h":0}]},{"n":"out.valid_out_1","i":2,"b":[{"m":"in.ready_out","h":1}]},{"n":"in.ready_out_0","i":3,"b":[{"m":"out.valid_out","h":1}]},{"n":"in.ready_out_1","i":4,"b":[{"m":"out.valid_out","h":1}]}],"x":0,"p":50.00}]},"102":{"pr":"/lane_tb/dut/u_mul/u_mul_core","t":"inst","ce":[{"f":11,"l":74,"i":1,"s":"(a_latched[15] ^ b_latched[15])","bi":1,"hp":0,"t":[{"n":"a_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"},{"n":"b_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"}],"r":[{"n":"a_latched[15]_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_latched[15]_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":0}]},{"n":"b_latched[15]_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_latched[15]_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":11,"l":40,"i":1,"s":"(a_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(a_latched[14:7] == 0)","c":1}],"r":[{"n":"(a_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(a_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":11,"l":47,"i":1,"s":"(b_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(b_latched[14:7] == 0)","c":1}],"r":[{"n":"(b_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(b_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":11,"l":98,"i":1,"s":"(mul_frac_product[1] & ((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2]))","bi":0,"hp":0,"t":[{"n":"mul_frac_product[1]","c":1},{"n":"mul_frac_product[0]","c":1},{"n":"mul_round_loss","c":1},{"n":"mul_frac_product[2]","c":1}],"r":[{"n":"mul_frac_product[1]_0","i":1,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":1}]},{"n":"mul_frac_product[1]_1","i":2,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":1}]},{"n":"mul_frac_product[0]_0","i":3,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":1}]},{"n":"mul_frac_product[0]_1","i":4,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":1}]},{"n":"mul_round_loss_0","i":5,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":1}]},{"n":"mul_round_loss_1","i":6,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":1}]},{"n":"mul_frac_product[2]_0","i":7,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":1}]},{"n":"mul_frac_product[2]_1","i":8,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":1}]}],"x":0,"p":100.00},{"f":11,"l":106,"i":1,"s":"(mul_product == 0)","bi":0,"hp":0,"t":[{"n":"(mul_product == 0)","c":1}],"r":[{"n":"(mul_product == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(mul_product == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00}]},"104":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[13]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"105":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[12]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"106":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[11]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"107":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[10]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"108":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[9]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"109":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[8]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"110":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[7]/fa_s4_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"111":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[10]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"112":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[9]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"113":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[8]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"114":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[7]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"115":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[6]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"116":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[5]/fa_s3_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"117":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[7]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"118":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[6]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"119":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[5]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"120":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[4]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"121":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[3]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"122":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[2]/fa_s2_l2","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"123":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[9]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"124":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[8]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"125":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[7]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"126":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[6]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"127":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[5]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"128":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[4]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"129":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[3]/fa_s2_l1","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"130":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[7]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"131":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[6]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"132":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[5]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"133":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[4]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"134":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[3]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"135":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[2]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"136":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_first","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"137":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_last","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"138":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[7]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"139":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[6]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"140":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[5]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":0}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"141":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[4]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"142":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[3]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"143":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[2]/fa_00","t":"inst","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":1},{"m":"(~(cin & (a ^ b)) && b), cin","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":1}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":1},{"m":"(~(cin & (a ^ b)) && a), cin","h":0}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":1}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":1},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":1}]}],"x":1,"p":100.00}]},"144":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_first","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"145":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_last","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"146":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l1_b2","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"147":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b1","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"148":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b8","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"149":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b3","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"150":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b4","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"151":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b11","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"152":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b12","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"153":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b4","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"a_1","i":2,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"b_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"154":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b5","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"155":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b6","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"156":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b14","t":"inst","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":1},{"m":"-","h":0}]},{"n":"a_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"b_0","i":3,"b":[{"m":"-","h":1},{"m":"-","h":1}]},{"n":"b_1","i":4,"b":[{"m":"-","h":1},{"m":"-","h":0}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":1}]},{"n":"a_1","i":2,"b":[{"m":"b","h":1}]},{"n":"b_0","i":3,"b":[{"m":"a","h":1}]},{"n":"b_1","i":4,"b":[{"m":"a","h":1}]}],"x":1,"p":100.00}]},"103":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca","t":"inst","ce":[{"f":12,"l":28,"i":1,"s":"(a_latched[0] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":28,"i":1,"s":"(a_latched[3] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":29,"i":1,"s":"(a_latched[2] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":29,"i":1,"s":"(a_latched[5] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":1,"s":"(a_latched[0] & b_latched[1])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":1,"s":"(a_latched[3] & b_latched[1])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[1] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[4] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":1,"s":"(a_latched[1] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":1,"s":"(a_latched[4] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":2,"s":"(a_latched[2] & b_latched[6])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":2,"s":"(a_latched[5] & b_latched[6])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[2])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[3])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[4])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[5])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[6])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & frac_leading_bit_fp2)","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[0]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[2])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[3])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[4])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[5])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[6])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & frac_leading_bit_fp2)","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[3]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[1])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[2])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[3])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[4])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[5])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[6])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[1]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[1])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[2])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[3])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[4])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[5])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[6])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[4]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[0])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[1])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[2])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[3])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[4])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[5])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[2]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[0])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[1])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[2])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[3])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[4])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[5])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[5]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":78,"i":1,"s":"(a_latched[6] & b_latched[0])","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[1])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[2])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[3])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[4])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[5])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[6])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[0])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[0]","h":1}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[1])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[1]","h":1}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[2])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[2]","h":1}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[3])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[3]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[3]","h":1}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[4])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[4]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[4]","h":1}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[5])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[5]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[5]","h":1}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":89,"i":1,"s":"(a_latched[6] & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[6]","h":1}]}],"x":1,"p":100.00},{"f":12,"l":89,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[6])","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[6]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[6]","h":1}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00},{"f":12,"l":92,"i":1,"s":"(frac_leading_bit_fp1 & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":1}]}],"x":1,"p":100.00}]},"157":{"pr":"/lane_tb/dut/u_mul/u_mul_core/add_EXPs","t":"inst","ce":[{"f":15,"l":38,"i":1,"s":"((r_sum[7] && ~r_exp1[7]) && ~r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"r_exp1[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"r_exp2[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"(~r_exp2[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp1[7]_0","i":3,"b":[{"m":"(~r_exp2[7] && r_sum[7])","h":0}]},{"n":"r_exp1[7]_1","i":4,"b":[{"m":"r_sum[7]","h":0}]},{"n":"r_exp2[7]_0","i":5,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":6,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]}],"x":1,"p":0.00},{"f":15,"l":39,"i":1,"s":"(((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7]) && r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"carry","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(sum != 255)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp1[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp2[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"(r_exp2[7] && r_exp1[7] && (~carry || (sum != 255)))","h":1}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"-","h":0}]},{"n":"carry_0","i":3,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7])","h":1}]},{"n":"carry_1","i":4,"b":[{"m":"(~r_sum[7] && ~(sum != 255))","h":0}]},{"n":"(sum != 255)_0","i":5,"b":[{"m":"(~r_sum[7] && carry)","h":0}]},{"n":"(sum != 255)_1","i":6,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7] && carry)","h":1}]},{"n":"r_exp1[7]_0","i":7,"b":[{"m":"(~r_sum[7] && (~carry || (sum != 255)))","h":0}]},{"n":"r_exp1[7]_1","i":8,"b":[{"m":"(r_exp2[7] && (~r_sum[7] && (~carry || (sum != 255))))","h":1}]},{"n":"r_exp2[7]_0","i":9,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":10,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":1}]}],"x":1,"p":0.00}]},"158":{"pr":"/lane_tb/dut/u_mul_sync","t":"inst","ce":[{"f":20,"l":33,"i":1,"s":"(fu_ready && ~fifo_full)","bi":0,"hp":0,"t":[{"n":"fu_ready","c":1},{"n":"fifo_full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"fu_ready_0","i":1,"b":[{"m":"-","h":1}]},{"n":"fu_ready_1","i":2,"b":[{"m":"~fifo_full","h":1}]},{"n":"fifo_full_0","i":3,"b":[{"m":"fu_ready","h":1}]},{"n":"fifo_full_1","i":4,"b":[{"m":"fu_ready","h":0}]}],"x":1,"p":50.00},{"f":20,"l":36,"i":1,"s":"(issue_valid && sync_ready)","bi":0,"hp":0,"t":[{"n":"issue_valid","c":1},{"n":"sync_ready","c":1}],"r":[{"n":"issue_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"issue_valid_1","i":2,"b":[{"m":"sync_ready","h":1}]},{"n":"sync_ready_0","i":3,"b":[{"m":"issue_valid","h":1}]},{"n":"sync_ready_1","i":4,"b":[{"m":"issue_valid","h":1}]}],"x":1,"p":100.00},{"f":20,"l":39,"i":1,"s":"((wb_valid && wb_ready) && ~fifo_empty)","bi":0,"hp":0,"t":[{"n":"wb_valid","c":1},{"n":"wb_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"fifo_empty","c":1}],"r":[{"n":"wb_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"wb_valid_1","i":2,"b":[{"m":"(~fifo_empty && wb_ready)","h":1}]},{"n":"wb_ready_0","i":3,"b":[{"m":"wb_valid","h":0}]},{"n":"wb_ready_1","i":4,"b":[{"m":"(~fifo_empty && wb_valid)","h":1}]},{"n":"fifo_empty_0","i":5,"b":[{"m":"(wb_valid && wb_ready)","h":1}]},{"n":"fifo_empty_1","i":6,"b":[{"m":"(wb_valid && wb_ready)","h":1}]}],"x":1,"p":66.66}]},"159":{"pr":"/lane_tb/dut/u_mul_sync/u_fifo","t":"inst","ce":[{"f":21,"l":41,"i":1,"s":"((wptr + 1) == rptr)","bi":0,"hp":0,"t":[{"n":"((wptr + 1) == rptr)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"((wptr + 1) == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"((wptr + 1) == rptr)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":21,"l":42,"i":1,"s":"(wptr == rptr)","bi":0,"hp":0,"t":[{"n":"(wptr == rptr)","c":1}],"r":[{"n":"(wptr == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wptr == rptr)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":21,"l":22,"i":1,"s":"(wr_en & ~full)","bi":0,"hp":0,"t":[{"n":"wr_en","c":1},{"n":"full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wr_en_0","i":1,"b":[{"m":"~full","h":1}]},{"n":"wr_en_1","i":2,"b":[{"m":"~full","h":1}]},{"n":"full_0","i":3,"b":[{"m":"wr_en","h":1}]},{"n":"full_1","i":4,"b":[{"m":"wr_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":33,"i":1,"s":"(rd_en & ~empty)","bi":0,"hp":0,"t":[{"n":"rd_en","c":1},{"n":"empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"rd_en_0","i":1,"b":[{"m":"~empty","h":1}]},{"n":"rd_en_1","i":2,"b":[{"m":"~empty","h":1}]},{"n":"empty_0","i":3,"b":[{"m":"rd_en","h":1}]},{"n":"empty_1","i":4,"b":[{"m":"rd_en","h":0}]}],"x":0,"p":50.00}]},"162":{"pr":"/lane_tb/dut/u_valu","t":"inst","ce":[{"f":23,"l":52,"i":1,"s":"(alu.in.valid_in & ready_in_reg)","bi":0,"hp":0,"t":[{"n":"alu.in.valid_in","c":1},{"n":"ready_in_reg","c":1}],"r":[{"n":"alu.in.valid_in_0","i":1,"b":[{"m":"ready_in_reg","h":1}]},{"n":"alu.in.valid_in_1","i":2,"b":[{"m":"ready_in_reg","h":1}]},{"n":"ready_in_reg_0","i":3,"b":[{"m":"alu.in.valid_in","h":1}]},{"n":"ready_in_reg_1","i":4,"b":[{"m":"alu.in.valid_in","h":1}]}],"x":1,"p":100.00},{"f":23,"l":79,"i":1,"s":"(&alu.in.operand1[14:7] && |alu.in.operand1[6:0])","bi":0,"hp":0,"t":[{"n":"&alu.in.operand1[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|alu.in.operand1[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&alu.in.operand1[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&alu.in.operand1[14:7]_1","i":2,"b":[{"m":"|alu.in.operand1[6:0]","h":0}]},{"n":"|alu.in.operand1[6:0]_0","i":3,"b":[{"m":"&alu.in.operand1[14:7]","h":0}]},{"n":"|alu.in.operand1[6:0]_1","i":4,"b":[{"m":"&alu.in.operand1[14:7]","h":0}]}],"x":1,"p":0.00},{"f":23,"l":80,"i":1,"s":"(&alu.in.operand2[14:7] && |alu.in.operand2[6:0])","bi":0,"hp":0,"t":[{"n":"&alu.in.operand2[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|alu.in.operand2[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&alu.in.operand2[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&alu.in.operand2[14:7]_1","i":2,"b":[{"m":"|alu.in.operand2[6:0]","h":0}]},{"n":"|alu.in.operand2[6:0]_0","i":3,"b":[{"m":"&alu.in.operand2[14:7]","h":0}]},{"n":"|alu.in.operand2[6:0]_1","i":4,"b":[{"m":"&alu.in.operand2[14:7]","h":0}]}],"x":1,"p":0.00},{"f":23,"l":81,"i":1,"s":"(a_is_nan_raw | b_is_nan_raw)","bi":0,"hp":0,"t":[{"n":"a_is_nan_raw","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"b_is_nan_raw","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"a_is_nan_raw_0","i":1,"b":[{"m":"~b_is_nan_raw","h":1}]},{"n":"a_is_nan_raw_1","i":2,"b":[{"m":"~b_is_nan_raw","h":0}]},{"n":"b_is_nan_raw_0","i":3,"b":[{"m":"~a_is_nan_raw","h":1}]},{"n":"b_is_nan_raw_1","i":4,"b":[{"m":"~a_is_nan_raw","h":0}]}],"x":1,"p":0.00},{"f":23,"l":88,"i":1,"s":"(((alu_op_s1 == VR_SUB) || (alu_op_s1 == VR_MIN)) || (alu_op_s1 == VR_MAX))","bi":0,"hp":0,"t":[{"n":"(alu_op_s1 == VR_SUB)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"(alu_op_s1 == VR_MIN)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"(alu_op_s1 == VR_MAX)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(alu_op_s1 == VR_SUB)_0","i":1,"b":[{"m":"(~(alu_op_s1 == VR_MAX) && ~(alu_op_s1 == VR_MIN))","h":0}]},{"n":"(alu_op_s1 == VR_SUB)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(alu_op_s1 == VR_MIN)_0","i":3,"b":[{"m":"(~(alu_op_s1 == VR_MAX) && ~(alu_op_s1 == VR_SUB))","h":0}]},{"n":"(alu_op_s1 == VR_MIN)_1","i":4,"b":[{"m":"~(alu_op_s1 == VR_SUB)","h":0}]},{"n":"(alu_op_s1 == VR_MAX)_0","i":5,"b":[{"m":"~((alu_op_s1 == VR_SUB) || (alu_op_s1 == VR_MIN))","h":0}]},{"n":"(alu_op_s1 == VR_MAX)_1","i":6,"b":[{"m":"~((alu_op_s1 == VR_SUB) || (alu_op_s1 == VR_MIN))","h":1}]}],"x":1,"p":0.00},{"f":23,"l":66,"i":1,"s":"(alu.out.valid_out && alu.in.ready_out)","bi":0,"hp":0,"t":[{"n":"alu.out.valid_out","c":1},{"n":"alu.in.ready_out","c":1}],"r":[{"n":"alu.out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"alu.out.valid_out_1","i":2,"b":[{"m":"alu.in.ready_out","h":1}]},{"n":"alu.in.ready_out_0","i":3,"b":[{"m":"alu.out.valid_out","h":1}]},{"n":"alu.in.ready_out_1","i":4,"b":[{"m":"alu.out.valid_out","h":1}]}],"x":0,"p":100.00},{"f":23,"l":155,"i":1,"s":"(alu.out.valid_out && alu.in.ready_out)","bi":0,"hp":0,"t":[{"n":"alu.out.valid_out","c":1},{"n":"alu.in.ready_out","c":1}],"r":[{"n":"alu.out.valid_out_0","i":1,"b":[{"m":"-","h":1}]},{"n":"alu.out.valid_out_1","i":2,"b":[{"m":"alu.in.ready_out","h":1}]},{"n":"alu.in.ready_out_0","i":3,"b":[{"m":"alu.out.valid_out","h":1}]},{"n":"alu.in.ready_out_1","i":4,"b":[{"m":"alu.out.valid_out","h":1}]}],"x":0,"p":100.00}]},"163":{"pr":"/lane_tb/dut/u_valu/adder","t":"inst","ce":[{"f":24,"l":18,"i":1,"s":"(&bf1_in[14:7] && |bf1_in[6:0])","bi":0,"hp":0,"t":[{"n":"&bf1_in[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|bf1_in[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&bf1_in[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&bf1_in[14:7]_1","i":2,"b":[{"m":"|bf1_in[6:0]","h":0}]},{"n":"|bf1_in[6:0]_0","i":3,"b":[{"m":"&bf1_in[14:7]","h":0}]},{"n":"|bf1_in[6:0]_1","i":4,"b":[{"m":"&bf1_in[14:7]","h":0}]}],"x":1,"p":0.00},{"f":24,"l":19,"i":1,"s":"(&bf2_modified[14:7] && |bf2_modified[6:0])","bi":0,"hp":0,"t":[{"n":"&bf2_modified[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"|bf2_modified[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&bf2_modified[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&bf2_modified[14:7]_1","i":2,"b":[{"m":"|bf2_modified[6:0]","h":0}]},{"n":"|bf2_modified[6:0]_0","i":3,"b":[{"m":"&bf2_modified[14:7]","h":0}]},{"n":"|bf2_modified[6:0]_1","i":4,"b":[{"m":"&bf2_modified[14:7]","h":0}]}],"x":1,"p":0.00},{"f":24,"l":22,"i":1,"s":"(&bf1_in[14:7] && ~|bf1_in[6:0])","bi":0,"hp":0,"t":[{"n":"&bf1_in[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|bf1_in[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&bf1_in[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&bf1_in[14:7]_1","i":2,"b":[{"m":"~|bf1_in[6:0]","h":0}]},{"n":"~|bf1_in[6:0]_0","i":3,"b":[{"m":"&bf1_in[14:7]","h":0}]},{"n":"~|bf1_in[6:0]_1","i":4,"b":[{"m":"&bf1_in[14:7]","h":0}]}],"x":1,"p":0.00},{"f":24,"l":23,"i":1,"s":"(&bf2_modified[14:7] && ~|bf2_modified[6:0])","bi":0,"hp":0,"t":[{"n":"&bf2_modified[14:7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|bf2_modified[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"&bf2_modified[14:7]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"&bf2_modified[14:7]_1","i":2,"b":[{"m":"~|bf2_modified[6:0]","h":0}]},{"n":"~|bf2_modified[6:0]_0","i":3,"b":[{"m":"&bf2_modified[14:7]","h":0}]},{"n":"~|bf2_modified[6:0]_1","i":4,"b":[{"m":"&bf2_modified[14:7]","h":0}]}],"x":1,"p":0.00},{"f":24,"l":26,"i":1,"s":"((is_nan1 || is_nan2) || ((is_inf1 && is_inf2) && (bf1_in[15] == bf2_modified[15])))","bi":0,"hp":0,"t":[{"n":"is_nan1","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_nan2","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_inf1","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_inf2","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"(bf1_in[15] == bf2_modified[15])","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"is_nan1_0","i":1,"b":[{"m":"(~((is_inf1 && is_inf2) && (bf1_in[15] == bf2_modified[15])) && ~is_nan2)","h":1}]},{"n":"is_nan1_1","i":2,"b":[{"m":"-","h":0}]},{"n":"is_nan2_0","i":3,"b":[{"m":"(~((is_inf1 && is_inf2) && (bf1_in[15] == bf2_modified[15])) && ~is_nan1)","h":1}]},{"n":"is_nan2_1","i":4,"b":[{"m":"~is_nan1","h":0}]},{"n":"is_inf1_0","i":5,"b":[{"m":"~(is_nan1 || is_nan2)","h":1}]},{"n":"is_inf1_1","i":6,"b":[{"m":"(~(is_nan1 || is_nan2) && (bf1_in[15] == bf2_modified[15]) && is_inf2)","h":0}]},{"n":"is_inf2_0","i":7,"b":[{"m":"(~(is_nan1 || is_nan2) && is_inf1)","h":0}]},{"n":"is_inf2_1","i":8,"b":[{"m":"(~(is_nan1 || is_nan2) && (bf1_in[15] == bf2_modified[15]) && is_inf1)","h":0}]},{"n":"(bf1_in[15] == bf2_modified[15])_0","i":9,"b":[{"m":"(~(is_nan1 || is_nan2) && (is_inf1 && is_inf2))","h":0}]},{"n":"(bf1_in[15] == bf2_modified[15])_1","i":10,"b":[{"m":"(~(is_nan1 || is_nan2) && (is_inf1 && is_inf2))","h":0}]}],"x":1,"p":0.00},{"f":24,"l":123,"i":1,"s":"(sign_shifted ^ sign_not_shifted)","bi":1,"hp":0,"t":[{"n":"sign_shifted","c":0,"r":"Both rows hit for same output ->1","h":"Hit either row for output ->0"},{"n":"sign_not_shifted","c":0,"r":"Both rows hit for same output ->1","h":"Hit either row for output ->0"}],"r":[{"n":"sign_shifted_0","i":1,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"sign_shifted_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"sign_not_shifted_0","i":3,"b":[{"m":"-","h":0},{"m":"-","h":1}]},{"n":"sign_not_shifted_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":1}]}],"x":1,"p":0.00},{"f":24,"l":161,"i":1,"s":"(sign_shifted_l & sign_not_shifted_l)","bi":0,"hp":0,"t":[{"n":"sign_shifted_l","c":0,"r":"No hits","h":"Hit '_0' and '_1'"},{"n":"sign_not_shifted_l","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"sign_shifted_l_0","i":1,"b":[{"m":"sign_not_shifted_l","h":0}]},{"n":"sign_shifted_l_1","i":2,"b":[{"m":"sign_not_shifted_l","h":0}]},{"n":"sign_not_shifted_l_0","i":3,"b":[{"m":"sign_shifted_l","h":0}]},{"n":"sign_not_shifted_l_1","i":4,"b":[{"m":"sign_shifted_l","h":0}]}],"x":1,"p":0.00},{"f":24,"l":169,"i":1,"s":"(bf1_in[15] & bf2_modified[15])","bi":0,"hp":0,"t":[{"n":"bf1_in[15]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"bf2_modified[15]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"bf1_in[15]_0","i":1,"b":[{"m":"bf2_modified[15]","h":1}]},{"n":"bf1_in[15]_1","i":2,"b":[{"m":"bf2_modified[15]","h":0}]},{"n":"bf2_modified[15]_0","i":3,"b":[{"m":"bf1_in[15]","h":0}]},{"n":"bf2_modified[15]_1","i":4,"b":[{"m":"bf1_in[15]","h":0}]}],"x":1,"p":0.00},{"f":24,"l":188,"i":1,"s":"((exp_max_l == 255) || (mantissa_overflow && (exp_max_l == 254)))","bi":0,"hp":0,"t":[{"n":"(exp_max_l == 255)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"mantissa_overflow","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(exp_max_l == 254)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(exp_max_l == 255)_0","i":1,"b":[{"m":"~(mantissa_overflow && (exp_max_l == 254))","h":1}]},{"n":"(exp_max_l == 255)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"mantissa_overflow_0","i":3,"b":[{"m":"~(exp_max_l == 255)","h":1}]},{"n":"mantissa_overflow_1","i":4,"b":[{"m":"(~(exp_max_l == 255) && (exp_max_l == 254))","h":0}]},{"n":"(exp_max_l == 254)_0","i":5,"b":[{"m":"(~(exp_max_l == 255) && mantissa_overflow)","h":0}]},{"n":"(exp_max_l == 254)_1","i":6,"b":[{"m":"(~(exp_max_l == 255) && mantissa_overflow)","h":0}]}],"x":1,"p":0.00},{"f":24,"l":192,"i":1,"s":"((exp_minus_shift_amount == 0) || (|exp_minus_shift_amount[7:6] && ~exp_minus_shift_amount[7]))","bi":0,"hp":0,"t":[{"n":"(exp_minus_shift_amount == 0)","c":1},{"n":"|exp_minus_shift_amount[7:6]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"exp_minus_shift_amount[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(exp_minus_shift_amount == 0)_0","i":1,"b":[{"m":"~(|exp_minus_shift_amount[7:6] && ~exp_minus_shift_amount[7])","h":1}]},{"n":"(exp_minus_shift_amount == 0)_1","i":2,"b":[{"m":"-","h":1}]},{"n":"|exp_minus_shift_amount[7:6]_0","i":3,"b":[{"m":"~(exp_minus_shift_amount == 0)","h":1}]},{"n":"|exp_minus_shift_amount[7:6]_1","i":4,"b":[{"m":"(~(exp_minus_shift_amount == 0) && ~exp_minus_shift_amount[7])","h":0}]},{"n":"exp_minus_shift_amount[7]_0","i":5,"b":[{"m":"(~(exp_minus_shift_amount == 0) && |exp_minus_shift_amount[7:6])","h":0}]},{"n":"exp_minus_shift_amount[7]_1","i":6,"b":[{"m":"(~(exp_minus_shift_amount == 0) && |exp_minus_shift_amount[7:6])","h":1}]}],"x":1,"p":33.33},{"f":24,"l":35,"i":1,"s":"(bf1_in[14:7] < bf2_modified[14:7])","bi":0,"hp":0,"t":[{"n":"(bf1_in[14:7] < bf2_modified[14:7])","c":1}],"r":[{"n":"(bf1_in[14:7] < bf2_modified[14:7])_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(bf1_in[14:7] < bf2_modified[14:7])_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":24,"l":52,"i":1,"s":"(bf1_in[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(bf1_in[14:7] == 0)","c":1}],"r":[{"n":"(bf1_in[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(bf1_in[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":24,"l":57,"i":1,"s":"(bf2_modified[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(bf2_modified[14:7] == 0)","c":1}],"r":[{"n":"(bf2_modified[14:7] == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(bf2_modified[14:7] == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":24,"l":75,"i":1,"s":"(exp_diff[7] | ~|bf1_in[14:7])","bi":0,"hp":0,"t":[{"n":"exp_diff[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|bf1_in[14:7]","c":1}],"r":[{"n":"exp_diff[7]_0","i":1,"b":[{"m":"~~|bf1_in[14:7]","h":1}]},{"n":"exp_diff[7]_1","i":2,"b":[{"m":"~~|bf1_in[14:7]","h":0}]},{"n":"~|bf1_in[14:7]_0","i":3,"b":[{"m":"~exp_diff[7]","h":1}]},{"n":"~|bf1_in[14:7]_1","i":4,"b":[{"m":"~exp_diff[7]","h":1}]}],"x":0,"p":50.00},{"f":24,"l":89,"i":1,"s":"(exp_diff[7] | ~|bf1_in[14:7])","bi":0,"hp":0,"t":[{"n":"exp_diff[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"~|bf1_in[14:7]","c":1}],"r":[{"n":"exp_diff[7]_0","i":1,"b":[{"m":"~~|bf1_in[14:7]","h":1}]},{"n":"exp_diff[7]_1","i":2,"b":[{"m":"~~|bf1_in[14:7]","h":0}]},{"n":"~|bf1_in[14:7]_0","i":3,"b":[{"m":"~exp_diff[7]","h":1}]},{"n":"~|bf1_in[14:7]_1","i":4,"b":[{"m":"~exp_diff[7]","h":1}]}],"x":0,"p":50.00},{"f":24,"l":112,"i":1,"s":"(frac_shifted > frac_not_shifted)","bi":0,"hp":0,"t":[{"n":"(frac_shifted > frac_not_shifted)","c":1}],"r":[{"n":"(frac_shifted > frac_not_shifted)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(frac_shifted > frac_not_shifted)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":24,"l":168,"i":1,"s":"(~|bf1_in[14:0] & ~|bf2_modified[1:0])","bi":0,"hp":0,"t":[{"n":"~|bf1_in[14:0]","c":1},{"n":"~|bf2_modified[1:0]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"~|bf1_in[14:0]_0","i":1,"b":[{"m":"~|bf2_modified[1:0]","h":1}]},{"n":"~|bf1_in[14:0]_1","i":2,"b":[{"m":"~|bf2_modified[1:0]","h":1}]},{"n":"~|bf2_modified[1:0]_0","i":3,"b":[{"m":"~|bf1_in[14:0]","h":0}]},{"n":"~|bf2_modified[1:0]_1","i":4,"b":[{"m":"~|bf1_in[14:0]","h":1}]}],"x":0,"p":50.00},{"f":24,"l":258,"i":1,"s":"(G & (R | sticky_bit))","bi":0,"hp":0,"t":[{"n":"G","c":1},{"n":"R","c":1},{"n":"sticky_bit","c":1}],"r":[{"n":"G_0","i":1,"b":[{"m":"(R | sticky_bit)","h":1}]},{"n":"G_1","i":2,"b":[{"m":"(R | sticky_bit)","h":1}]},{"n":"R_0","i":3,"b":[{"m":"(G && ~sticky_bit)","h":1}]},{"n":"R_1","i":4,"b":[{"m":"(G && ~sticky_bit)","h":1}]},{"n":"sticky_bit_0","i":5,"b":[{"m":"(G && ~R)","h":1}]},{"n":"sticky_bit_1","i":6,"b":[{"m":"(G && ~R)","h":1}]}],"x":0,"p":100.00},{"f":24,"l":274,"i":1,"s":"((is_inf1 & is_inf2) & (bf1_in[15] ^ bf2_modified[15]))","bi":1,"hp":0,"t":[{"n":"is_inf1","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"is_inf2","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"bf1_in[15]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"bf2_modified[15]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"}],"r":[{"n":"is_inf1_0","i":1,"b":[{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf2)","h":0},{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf2)","h":0}]},{"n":"is_inf1_1","i":2,"b":[{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf2)","h":0},{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf2)","h":0}]},{"n":"is_inf2_0","i":3,"b":[{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf1)","h":0},{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf1)","h":0}]},{"n":"is_inf2_1","i":4,"b":[{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf1)","h":0},{"m":"((bf1_in[15] ^ bf2_modified[15]) && is_inf1)","h":0}]},{"n":"bf1_in[15]_0","i":5,"b":[{"m":"(is_inf1 & is_inf2)","h":0},{"m":"(is_inf1 & is_inf2)","h":0}]},{"n":"bf1_in[15]_1","i":6,"b":[{"m":"(is_inf1 & is_inf2)","h":0},{"m":"(is_inf1 & is_inf2)","h":0}]},{"n":"bf2_modified[15]_0","i":7,"b":[{"m":"(is_inf1 & is_inf2)","h":0},{"m":"(is_inf1 & is_inf2)","h":0}]},{"n":"bf2_modified[15]_1","i":8,"b":[{"m":"(is_inf1 & is_inf2)","h":0},{"m":"(is_inf1 & is_inf2)","h":0}]}],"x":0,"p":0.00},{"f":24,"l":277,"i":1,"s":"((((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) | ((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])))","bi":1,"hp":0,"t":[{"n":"bf1_in[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"&bf1_in[14:8]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"&bf1_in[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"|bf2_modified[14:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"bf2_modified[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"&bf2_modified[14:8]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"&bf2_modified[6:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"|bf1_in[14:0]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"bf1_in[15]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"},{"n":"bf2_modified[15]","c":0,"r":"No hits","h":"Hit '_0' and '_1' for different outputs"}],"r":[{"n":"bf1_in[7]_0","i":1,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && &bf1_in[14:8])","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && &bf1_in[14:8])","h":0}]},{"n":"bf1_in[7]_1","i":2,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && &bf1_in[14:8])","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && &bf1_in[14:8])","h":0}]},{"n":"&bf1_in[14:8]_0","i":3,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && ~bf1_in[7])","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && ~bf1_in[7])","h":0}]},{"n":"&bf1_in[14:8]_1","i":4,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && ~bf1_in[7])","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && &bf1_in[6:0] && ~bf1_in[7])","h":0}]},{"n":"&bf1_in[6:0]_0","i":5,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && (~bf1_in[7] & &bf1_in[14:8]))","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && (~bf1_in[7] & &bf1_in[14:8]))","h":0}]},{"n":"&bf1_in[6:0]_1","i":6,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && (~bf1_in[7] & &bf1_in[14:8]))","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && |bf2_modified[14:0] && (~bf1_in[7] & &bf1_in[14:8]))","h":0}]},{"n":"|bf2_modified[14:0]_0","i":7,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && ((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]))","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && ((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]))","h":0}]},{"n":"|bf2_modified[14:0]_1","i":8,"b":[{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && ((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]))","h":0},{"m":"(~((((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]) & (bf1_in[15] ~^ bf2_modified[15])) && ((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]))","h":0}]},{"n":"bf2_modified[7]_0","i":9,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && &bf2_modified[14:8])","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && &bf2_modified[14:8])","h":0}]},{"n":"bf2_modified[7]_1","i":10,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && &bf2_modified[14:8])","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && &bf2_modified[14:8])","h":0}]},{"n":"&bf2_modified[14:8]_0","i":11,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && ~bf2_modified[7])","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && ~bf2_modified[7])","h":0}]},{"n":"&bf2_modified[14:8]_1","i":12,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && ~bf2_modified[7])","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && &bf2_modified[6:0] && ~bf2_modified[7])","h":0}]},{"n":"&bf2_modified[6:0]_0","i":13,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && (~bf2_modified[7] & &bf2_modified[14:8]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && (~bf2_modified[7] & &bf2_modified[14:8]))","h":0}]},{"n":"&bf2_modified[6:0]_1","i":14,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && (~bf2_modified[7] & &bf2_modified[14:8]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && |bf1_in[14:0] && (~bf2_modified[7] & &bf2_modified[14:8]))","h":0}]},{"n":"|bf1_in[14:0]_0","i":15,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && ((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && ((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]))","h":0}]},{"n":"|bf1_in[14:0]_1","i":16,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && ((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (bf1_in[15] ~^ bf2_modified[15]) && ((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]))","h":0}]},{"n":"bf1_in[15]_0","i":17,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0}]},{"n":"bf1_in[15]_1","i":18,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0}]},{"n":"bf2_modified[15]_0","i":19,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0}]},{"n":"bf2_modified[15]_1","i":20,"b":[{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0},{"m":"(~(((~bf1_in[7] & &bf1_in[14:8]) & &bf1_in[6:0]) & |bf2_modified[14:0]) && (((~bf2_modified[7] & &bf2_modified[14:8]) & &bf2_modified[6:0]) & |bf1_in[14:0]))","h":0}]}],"x":0,"p":0.00},{"f":24,"l":280,"i":1,"s":"(is_inf1 | is_nan1)","bi":0,"hp":0,"t":[{"n":"is_inf1","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_nan1","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"is_inf1_0","i":1,"b":[{"m":"~is_nan1","h":1}]},{"n":"is_inf1_1","i":2,"b":[{"m":"~is_nan1","h":0}]},{"n":"is_nan1_0","i":3,"b":[{"m":"~is_inf1","h":1}]},{"n":"is_nan1_1","i":4,"b":[{"m":"~is_inf1","h":0}]}],"x":0,"p":0.00},{"f":24,"l":282,"i":1,"s":"(is_inf2 | is_nan2)","bi":0,"hp":0,"t":[{"n":"is_inf2","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"is_nan2","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"is_inf2_0","i":1,"b":[{"m":"~is_nan2","h":1}]},{"n":"is_inf2_1","i":2,"b":[{"m":"~is_nan2","h":0}]},{"n":"is_nan2_0","i":3,"b":[{"m":"~is_inf2","h":1}]},{"n":"is_nan2_1","i":4,"b":[{"m":"~is_inf2","h":0}]}],"x":0,"p":0.00},{"f":24,"l":285,"i":1,"s":"(xor_out[15] & ~|xor_out[14:7])","bi":0,"hp":0,"t":[{"n":"xor_out[15]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"~|xor_out[14:7]","c":1}],"r":[{"n":"xor_out[15]_0","i":1,"b":[{"m":"~|xor_out[14:7]","h":0}]},{"n":"xor_out[15]_1","i":2,"b":[{"m":"~|xor_out[14:7]","h":1}]},{"n":"~|xor_out[14:7]_0","i":3,"b":[{"m":"xor_out[15]","h":1}]},{"n":"~|xor_out[14:7]_1","i":4,"b":[{"m":"xor_out[15]","h":1}]}],"x":0,"p":50.00}]},"165":{"pr":"/lane_tb/dut/u_valu_sync","t":"inst","ce":[{"f":20,"l":33,"i":1,"s":"(fu_ready && ~fifo_full)","bi":0,"hp":0,"t":[{"n":"fu_ready","c":1},{"n":"fifo_full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"fu_ready_0","i":1,"b":[{"m":"-","h":1}]},{"n":"fu_ready_1","i":2,"b":[{"m":"~fifo_full","h":1}]},{"n":"fifo_full_0","i":3,"b":[{"m":"fu_ready","h":1}]},{"n":"fifo_full_1","i":4,"b":[{"m":"fu_ready","h":0}]}],"x":1,"p":50.00},{"f":20,"l":36,"i":1,"s":"(issue_valid && sync_ready)","bi":0,"hp":0,"t":[{"n":"issue_valid","c":1},{"n":"sync_ready","c":1}],"r":[{"n":"issue_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"issue_valid_1","i":2,"b":[{"m":"sync_ready","h":1}]},{"n":"sync_ready_0","i":3,"b":[{"m":"issue_valid","h":1}]},{"n":"sync_ready_1","i":4,"b":[{"m":"issue_valid","h":1}]}],"x":1,"p":100.00},{"f":20,"l":39,"i":1,"s":"((wb_valid && wb_ready) && ~fifo_empty)","bi":0,"hp":0,"t":[{"n":"wb_valid","c":1},{"n":"wb_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"fifo_empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wb_valid_0","i":1,"b":[{"m":"-","h":1}]},{"n":"wb_valid_1","i":2,"b":[{"m":"(~fifo_empty && wb_ready)","h":1}]},{"n":"wb_ready_0","i":3,"b":[{"m":"wb_valid","h":0}]},{"n":"wb_ready_1","i":4,"b":[{"m":"(~fifo_empty && wb_valid)","h":1}]},{"n":"fifo_empty_0","i":5,"b":[{"m":"(wb_valid && wb_ready)","h":1}]},{"n":"fifo_empty_1","i":6,"b":[{"m":"(wb_valid && wb_ready)","h":0}]}],"x":1,"p":33.33}]},"166":{"pr":"/lane_tb/dut/u_valu_sync/u_fifo","t":"inst","ce":[{"f":21,"l":41,"i":1,"s":"((wptr + 1) == rptr)","bi":0,"hp":0,"t":[{"n":"((wptr + 1) == rptr)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"((wptr + 1) == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"((wptr + 1) == rptr)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":21,"l":42,"i":1,"s":"(wptr == rptr)","bi":0,"hp":0,"t":[{"n":"(wptr == rptr)","c":1}],"r":[{"n":"(wptr == rptr)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wptr == rptr)_1","i":2,"b":[{"m":"-","h":1}]}],"x":1,"p":100.00},{"f":21,"l":22,"i":1,"s":"(wr_en & ~full)","bi":0,"hp":0,"t":[{"n":"wr_en","c":1},{"n":"full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wr_en_0","i":1,"b":[{"m":"~full","h":1}]},{"n":"wr_en_1","i":2,"b":[{"m":"~full","h":1}]},{"n":"full_0","i":3,"b":[{"m":"wr_en","h":1}]},{"n":"full_1","i":4,"b":[{"m":"wr_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":33,"i":1,"s":"(rd_en & ~empty)","bi":0,"hp":0,"t":[{"n":"rd_en","c":1},{"n":"empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"rd_en_0","i":1,"b":[{"m":"~empty","h":1}]},{"n":"rd_en_1","i":2,"b":[{"m":"~empty","h":1}]},{"n":"empty_0","i":3,"b":[{"m":"rd_en","h":1}]},{"n":"empty_1","i":4,"b":[{"m":"rd_en","h":0}]}],"x":0,"p":50.00}]},"27":{"pr":"/lane_tb","t":"inst","ce":[{"f":2,"l":106,"i":1,"s":"(nRST ~& dir_monitor_en)","bi":0,"hp":0,"t":[{"n":"nRST","c":1},{"n":"dir_monitor_en","c":1}],"r":[{"n":"nRST_0","i":1,"b":[{"m":"dir_monitor_en","h":1}]},{"n":"nRST_1","i":2,"b":[{"m":"dir_monitor_en","h":1}]},{"n":"dir_monitor_en_0","i":3,"b":[{"m":"nRST","h":1}]},{"n":"dir_monitor_en_1","i":4,"b":[{"m":"nRST","h":1}]}],"x":0,"p":100.00},{"f":2,"l":131,"i":1,"s":"(nRST ~& dir_monitor_en_div)","bi":0,"hp":0,"t":[{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"dir_monitor_en_div","c":1}],"r":[{"n":"nRST_0","i":1,"b":[{"m":"dir_monitor_en_div","h":0}]},{"n":"nRST_1","i":2,"b":[{"m":"dir_monitor_en_div","h":1}]},{"n":"dir_monitor_en_div_0","i":3,"b":[{"m":"nRST","h":1}]},{"n":"dir_monitor_en_div_1","i":4,"b":[{"m":"nRST","h":1}]}],"x":0,"p":50.00},{"f":2,"l":192,"i":1,"s":"((~lane_out.ready_o[4] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[4]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[4]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[4]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[4]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[4])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[4] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[4] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":197,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":229,"i":1,"s":"((~lane_out.ready_o[3] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[3]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[3]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[3]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[3]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[3])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[3] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[3] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":234,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":294,"i":1,"s":"((dir_seen_results < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":300,"i":1,"s":"(dir_seen_results !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":334,"i":1,"s":"((dir_seen_results < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":340,"i":1,"s":"(dir_seen_results !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":399,"i":1,"s":"((dir_seen_results_div < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results_div < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results_div < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results_div < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":405,"i":1,"s":"(dir_seen_results_div !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results_div !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":439,"i":1,"s":"((dir_seen_results_div < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results_div < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results_div < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results_div < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":445,"i":1,"s":"(dir_seen_results_div !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results_div !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":485,"i":1,"s":"(lane_out.vd[VALU] !== 1)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[VALU] !== 1)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[VALU] !== 1)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[VALU] !== 1)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":581,"i":1,"s":"(((base_vd == 7) || (base_vd == 9)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 7)","c":1},{"n":"(base_vd == 9)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 7)_0","i":1,"b":[{"m":"~(base_vd == 9)","h":1}]},{"n":"(base_vd == 7)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 9)_0","i":3,"b":[{"m":"~(base_vd == 7)","h":1}]},{"n":"(base_vd == 9)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 7))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 7) || (base_vd == 9))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 7) || (base_vd == 9))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":589,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":635,"i":1,"s":"(((base_vd == 17) || (base_vd == 19)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 17)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(base_vd == 19)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mask != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(base_vd == 17)_0","i":1,"b":[{"m":"~(base_vd == 19)","h":1}]},{"n":"(base_vd == 17)_1","i":2,"b":[{"m":"(mask != 0)","h":0}]},{"n":"(base_vd == 19)_0","i":3,"b":[{"m":"~(base_vd == 17)","h":1}]},{"n":"(base_vd == 19)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 17))","h":0}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 17) || (base_vd == 19))","h":0}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 17) || (base_vd == 19))","h":0}]}],"x":0,"p":0.00},{"f":2,"l":643,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":668,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":670,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":671,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":680,"i":1,"s":"(lane_out.valid_o[2] && lane_in.ready_in[2])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[2]","c":1},{"n":"lane_in.ready_in[2]","c":1}],"r":[{"n":"lane_out.valid_o[2]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[2]_1","i":2,"b":[{"m":"lane_in.ready_in[2]","h":1}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"lane_out.valid_o[2]","h":1}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"lane_out.valid_o[2]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":683,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":689,"i":1,"s":"(lane_out.vd[2] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[2] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[2] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[2] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":696,"i":1,"s":"(lane_out.elem_idx[2] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":718,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[2] && driver_done_sqrt)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[2]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"driver_done_sqrt","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[2] && driver_done_sqrt)","h":1}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":0}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_sqrt)","h":1}]},{"n":"driver_done_sqrt_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[2])","h":0}]},{"n":"driver_done_sqrt_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[2])","h":1}]}],"x":0,"p":33.33},{"f":2,"l":725,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":770,"i":1,"s":"(((base_vd == 41) || (base_vd == 43)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 41)","c":1},{"n":"(base_vd == 43)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 41)_0","i":1,"b":[{"m":"~(base_vd == 43)","h":1}]},{"n":"(base_vd == 41)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 43)_0","i":3,"b":[{"m":"~(base_vd == 41)","h":1}]},{"n":"(base_vd == 43)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 41))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 41) || (base_vd == 43))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 41) || (base_vd == 43))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":778,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":800,"i":1,"s":"((~lane_out.ready_o[0] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[0]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[0]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[0]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[0]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[0])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[0] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[0] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":805,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":862,"i":1,"s":"(((base_vd == 31) || (base_vd == 33)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 31)","c":1},{"n":"(base_vd == 33)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 31)_0","i":1,"b":[{"m":"~(base_vd == 33)","h":1}]},{"n":"(base_vd == 31)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 33)_0","i":3,"b":[{"m":"~(base_vd == 31)","h":1}]},{"n":"(base_vd == 33)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 31))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 31) || (base_vd == 33))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 31) || (base_vd == 33))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":870,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":900,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":902,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":903,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":912,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":1}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":1}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":915,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":921,"i":1,"s":"(lane_out.vd[0] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[0] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":928,"i":1,"s":"(lane_out.elem_idx[0] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":956,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[0] && driver_done_valu)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[0]","c":1},{"n":"driver_done_valu","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[0] && driver_done_valu)","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_valu)","h":1}]},{"n":"driver_done_valu_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[0])","h":1}]},{"n":"driver_done_valu_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[0])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":972,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1008,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1010,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1011,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1020,"i":1,"s":"(lane_out.valid_o[4] && lane_in.ready_in[4])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[4]","c":1},{"n":"lane_in.ready_in[4]","c":1}],"r":[{"n":"lane_out.valid_o[4]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[4]_1","i":2,"b":[{"m":"lane_in.ready_in[4]","h":1}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"lane_out.valid_o[4]","h":1}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"lane_out.valid_o[4]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1023,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1029,"i":1,"s":"(lane_out.vd[4] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[4] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[4] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[4] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1036,"i":1,"s":"(lane_out.elem_idx[4] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1064,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[4] && driver_done_div)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[4]","c":1},{"n":"driver_done_div","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[4] && driver_done_div)","h":1}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_div)","h":1}]},{"n":"driver_done_div_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[4])","h":1}]},{"n":"driver_done_div_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[4])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1080,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1113,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1115,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1116,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1125,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":1}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":1}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1128,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1134,"i":1,"s":"(lane_out.vd[3] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[3] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1141,"i":1,"s":"(lane_out.elem_idx[3] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1169,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[3] && driver_done_mul)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[3]","c":1},{"n":"driver_done_mul","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[3] && driver_done_mul)","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_mul)","h":1}]},{"n":"driver_done_mul_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[3])","h":1}]},{"n":"driver_done_mul_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[3])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1185,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1232,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1237,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1256,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1261,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1285,"i":1,"s":"(cycles_5 < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5 < 200000)","c":1}],"r":[{"n":"(cycles_5 < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5 < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1289,"i":1,"s":"(lane_out.valid_o[2] && lane_in.ready_in[2])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[2]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[2]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[2]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[2]_1","i":2,"b":[{"m":"lane_in.ready_in[2]","h":0}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"lane_out.valid_o[2]","h":0}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"lane_out.valid_o[2]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1299,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1304,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1325,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1330,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1361,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1367,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1396,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1402,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1429,"i":1,"s":"(cycles_5 < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5 < 200000)","c":1}],"r":[{"n":"(cycles_5 < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5 < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1433,"i":1,"s":"(lane_out.valid_o[4] && lane_in.ready_in[4])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[4]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[4]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[4]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[4]_1","i":2,"b":[{"m":"lane_in.ready_in[4]","h":0}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"lane_out.valid_o[4]","h":0}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"lane_out.valid_o[4]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1447,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1452,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1479,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1485,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1534,"i":1,"s":"((seen < expected_results) && (cycles_1mul < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_1mul < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_1mul < 200000)","h":1}]},{"n":"(cycles_1mul < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_1mul < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1538,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1541,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1548,"i":1,"s":"((lane_out.vd[3] !== exp_item.vd) || (lane_out.elem_idx[3] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[3] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[3] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1568,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1573,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1618,"i":1,"s":"((seen < expected_results) && (cycles_2mul < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_2mul < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_2mul < 200000)","h":1}]},{"n":"(cycles_2mul < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_2mul < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1622,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1625,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1632,"i":1,"s":"((lane_out.vd[3] !== exp_item.vd) || (lane_out.elem_idx[3] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[3] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[3] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1652,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1657,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1681,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1687,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1709,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1715,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1753,"i":1,"s":"(cycles_5mul < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5mul < 200000)","c":1}],"r":[{"n":"(cycles_5mul < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5mul < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1757,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[3]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":0}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1771,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1776,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1800,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1806,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1856,"i":1,"s":"((seen < expected_results) && (cycles_1valu < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_1valu < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_1valu < 200000)","h":1}]},{"n":"(cycles_1valu < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_1valu < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1860,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1863,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1870,"i":1,"s":"((lane_out.vd[0] !== exp_item.vd) || (lane_out.elem_idx[0] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[0] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[0] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1890,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1895,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1940,"i":1,"s":"((seen < expected_results) && (cycles_2valu < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_2valu < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_2valu < 200000)","h":1}]},{"n":"(cycles_2valu < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_2valu < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1944,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1947,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1954,"i":1,"s":"((lane_out.vd[0] !== exp_item.vd) || (lane_out.elem_idx[0] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[0] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[0] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1974,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1979,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2003,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2009,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2031,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2037,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2075,"i":1,"s":"(cycles_5valu < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5valu < 200000)","c":1}],"r":[{"n":"(cycles_5valu < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5valu < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":2079,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":0}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2093,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2098,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2122,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2128,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2140,"i":1,"s":"(total_errors == 0)","bi":0,"hp":0,"t":[{"n":"(total_errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(total_errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(total_errors == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00}]},"14":{"pr":"work.adder_8b","t":"du","ce":[{"f":15,"l":38,"i":1,"s":"((r_sum[7] && ~r_exp1[7]) && ~r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"r_exp1[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp2[7]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"-","h":2}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"(~r_exp2[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp1[7]_0","i":3,"b":[{"m":"(~r_exp2[7] && r_sum[7])","h":0}]},{"n":"r_exp1[7]_1","i":4,"b":[{"m":"r_sum[7]","h":1}]},{"n":"r_exp2[7]_0","i":5,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":6,"b":[{"m":"(r_sum[7] && ~r_exp1[7])","h":0}]}],"x":1,"p":0.00},{"f":15,"l":39,"i":1,"s":"(((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7]) && r_exp2[7])","bi":0,"hp":0,"t":[{"n":"r_sum[7]","c":1},{"n":"carry","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(sum != 255)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp1[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"r_exp2[7]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"r_sum[7]_0","i":1,"b":[{"m":"(r_exp2[7] && r_exp1[7] && (~carry || (sum != 255)))","h":2}]},{"n":"r_sum[7]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"carry_0","i":3,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7])","h":2}]},{"n":"carry_1","i":4,"b":[{"m":"(~r_sum[7] && ~(sum != 255))","h":0}]},{"n":"(sum != 255)_0","i":5,"b":[{"m":"(~r_sum[7] && carry)","h":0}]},{"n":"(sum != 255)_1","i":6,"b":[{"m":"(r_exp2[7] && r_exp1[7] && ~r_sum[7] && carry)","h":1}]},{"n":"r_exp1[7]_0","i":7,"b":[{"m":"(~r_sum[7] && (~carry || (sum != 255)))","h":0}]},{"n":"r_exp1[7]_1","i":8,"b":[{"m":"(r_exp2[7] && (~r_sum[7] && (~carry || (sum != 255))))","h":2}]},{"n":"r_exp2[7]_0","i":9,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":0}]},{"n":"r_exp2[7]_1","i":10,"b":[{"m":"((~r_sum[7] && (~carry || (sum != 255))) && r_exp1[7])","h":2}]}],"x":1,"p":20.00}]},"13":{"pr":"work.fa","t":"du","ce":[{"f":14,"l":9,"i":1,"s":"((a ^ b) ^ cin)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":76},{"m":"-","h":38}]},{"n":"a_1","i":2,"b":[{"m":"-","h":35},{"m":"-","h":51}]},{"n":"b_0","i":3,"b":[{"m":"-","h":76},{"m":"-","h":58}]},{"n":"b_1","i":4,"b":[{"m":"-","h":45},{"m":"-","h":37}]},{"n":"cin_0","i":5,"b":[{"m":"-","h":76},{"m":"-","h":46}]},{"n":"cin_1","i":6,"b":[{"m":"-","h":32},{"m":"-","h":48}]}],"x":1,"p":100.00},{"f":14,"l":10,"i":1,"s":"((a & b) | (cin & (a ^ b)))","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1},{"n":"cin","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"(~(cin & (a ^ b)) && b), cin","h":76},{"m":"(~(cin & (a ^ b)) && b), cin","h":23}]},{"n":"a_1","i":2,"b":[{"m":"b, (~(a & b) && cin)","h":0},{"m":"b, (~(a & b) && cin)","h":76}]},{"n":"b_0","i":3,"b":[{"m":"(~(cin & (a ^ b)) && a), cin","h":76},{"m":"(~(cin & (a ^ b)) && a), cin","h":34}]},{"n":"b_1","i":4,"b":[{"m":"a, (~(a & b) && cin)","h":0},{"m":"a, (~(a & b) && cin)","h":75}]},{"n":"cin_0","i":5,"b":[{"m":"(~(a & b) && (a ^ b))","h":76},{"m":"(~(a & b) && (a ^ b))","h":0}]},{"n":"cin_1","i":6,"b":[{"m":"(~(a & b) && (a ^ b))","h":0},{"m":"(~(a & b) && (a ^ b))","h":76}]}],"x":1,"p":100.00}]},"12":{"pr":"work.ha","t":"du","ce":[{"f":13,"l":10,"i":1,"s":"(a ^ b)","bi":1,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"-","h":30},{"m":"-","h":13}]},{"n":"a_1","i":2,"b":[{"m":"-","h":11},{"m":"-","h":21}]},{"n":"b_0","i":3,"b":[{"m":"-","h":30},{"m":"-","h":17}]},{"n":"b_1","i":4,"b":[{"m":"-","h":13},{"m":"-","h":18}]}],"x":1,"p":100.00},{"f":13,"l":11,"i":1,"s":"(a & b)","bi":0,"hp":0,"t":[{"n":"a","c":1},{"n":"b","c":1}],"r":[{"n":"a_0","i":1,"b":[{"m":"b","h":29}]},{"n":"a_1","i":2,"b":[{"m":"b","h":29}]},{"n":"b_0","i":3,"b":[{"m":"a","h":30}]},{"n":"b_1","i":4,"b":[{"m":"a","h":29}]}],"x":1,"p":100.00}]},"17":{"pr":"work.lane_fu_pt","t":"du","ce":[{"f":20,"l":33,"i":1,"s":"(fu_ready && ~fifo_full)","bi":0,"hp":0,"t":[{"n":"fu_ready","c":1},{"n":"fifo_full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"fu_ready_0","i":1,"b":[{"m":"-","h":4}]},{"n":"fu_ready_1","i":2,"b":[{"m":"~fifo_full","h":4}]},{"n":"fifo_full_0","i":3,"b":[{"m":"fu_ready","h":4}]},{"n":"fifo_full_1","i":4,"b":[{"m":"fu_ready","h":0}]}],"x":1,"p":50.00},{"f":20,"l":36,"i":1,"s":"(issue_valid && sync_ready)","bi":0,"hp":0,"t":[{"n":"issue_valid","c":1},{"n":"sync_ready","c":1}],"r":[{"n":"issue_valid_0","i":1,"b":[{"m":"-","h":4}]},{"n":"issue_valid_1","i":2,"b":[{"m":"sync_ready","h":4}]},{"n":"sync_ready_0","i":3,"b":[{"m":"issue_valid","h":4}]},{"n":"sync_ready_1","i":4,"b":[{"m":"issue_valid","h":4}]}],"x":1,"p":100.00},{"f":20,"l":39,"i":1,"s":"((wb_valid && wb_ready) && ~fifo_empty)","bi":0,"hp":0,"t":[{"n":"wb_valid","c":1},{"n":"wb_ready","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"fifo_empty","c":1}],"r":[{"n":"wb_valid_0","i":1,"b":[{"m":"-","h":4}]},{"n":"wb_valid_1","i":2,"b":[{"m":"(~fifo_empty && wb_ready)","h":4}]},{"n":"wb_ready_0","i":3,"b":[{"m":"wb_valid","h":0}]},{"n":"wb_ready_1","i":4,"b":[{"m":"(~fifo_empty && wb_valid)","h":4}]},{"n":"fifo_empty_0","i":5,"b":[{"m":"(wb_valid && wb_ready)","h":4}]},{"n":"fifo_empty_1","i":6,"b":[{"m":"(wb_valid && wb_ready)","h":2}]}],"x":1,"p":66.66}]},"2":{"pr":"work.lane_tb","t":"du","ce":[{"f":2,"l":106,"i":1,"s":"(nRST ~& dir_monitor_en)","bi":0,"hp":0,"t":[{"n":"nRST","c":1},{"n":"dir_monitor_en","c":1}],"r":[{"n":"nRST_0","i":1,"b":[{"m":"dir_monitor_en","h":1}]},{"n":"nRST_1","i":2,"b":[{"m":"dir_monitor_en","h":1}]},{"n":"dir_monitor_en_0","i":3,"b":[{"m":"nRST","h":1}]},{"n":"dir_monitor_en_1","i":4,"b":[{"m":"nRST","h":1}]}],"x":0,"p":100.00},{"f":2,"l":131,"i":1,"s":"(nRST ~& dir_monitor_en_div)","bi":0,"hp":0,"t":[{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"dir_monitor_en_div","c":1}],"r":[{"n":"nRST_0","i":1,"b":[{"m":"dir_monitor_en_div","h":0}]},{"n":"nRST_1","i":2,"b":[{"m":"dir_monitor_en_div","h":1}]},{"n":"dir_monitor_en_div_0","i":3,"b":[{"m":"nRST","h":1}]},{"n":"dir_monitor_en_div_1","i":4,"b":[{"m":"nRST","h":1}]}],"x":0,"p":50.00},{"f":2,"l":192,"i":1,"s":"((~lane_out.ready_o[4] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[4]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[4]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[4]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[4]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[4])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[4] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[4] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":197,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":229,"i":1,"s":"((~lane_out.ready_o[3] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[3]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[3]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[3]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[3]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[3])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[3] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[3] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":234,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":294,"i":1,"s":"((dir_seen_results < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":300,"i":1,"s":"(dir_seen_results !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":334,"i":1,"s":"((dir_seen_results < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":340,"i":1,"s":"(dir_seen_results !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":399,"i":1,"s":"((dir_seen_results_div < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results_div < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results_div < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results_div < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":405,"i":1,"s":"(dir_seen_results_div !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results_div !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":439,"i":1,"s":"((dir_seen_results_div < expected_results) && (cycles < 200000))","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div < expected_results)","c":1},{"n":"(cycles < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(dir_seen_results_div < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div < expected_results)_1","i":2,"b":[{"m":"(cycles < 200000)","h":1}]},{"n":"(cycles < 200000)_0","i":3,"b":[{"m":"(dir_seen_results_div < expected_results)","h":0}]},{"n":"(cycles < 200000)_1","i":4,"b":[{"m":"(dir_seen_results_div < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":445,"i":1,"s":"(dir_seen_results_div !== expected_results)","bi":0,"hp":0,"t":[{"n":"(dir_seen_results_div !== expected_results)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(dir_seen_results_div !== expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(dir_seen_results_div !== expected_results)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":485,"i":1,"s":"(lane_out.vd[VALU] !== 1)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[VALU] !== 1)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[VALU] !== 1)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[VALU] !== 1)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":581,"i":1,"s":"(((base_vd == 7) || (base_vd == 9)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 7)","c":1},{"n":"(base_vd == 9)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 7)_0","i":1,"b":[{"m":"~(base_vd == 9)","h":1}]},{"n":"(base_vd == 7)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 9)_0","i":3,"b":[{"m":"~(base_vd == 7)","h":1}]},{"n":"(base_vd == 9)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 7))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 7) || (base_vd == 9))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 7) || (base_vd == 9))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":589,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":635,"i":1,"s":"(((base_vd == 17) || (base_vd == 19)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 17)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(base_vd == 19)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(mask != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(base_vd == 17)_0","i":1,"b":[{"m":"~(base_vd == 19)","h":1}]},{"n":"(base_vd == 17)_1","i":2,"b":[{"m":"(mask != 0)","h":0}]},{"n":"(base_vd == 19)_0","i":3,"b":[{"m":"~(base_vd == 17)","h":1}]},{"n":"(base_vd == 19)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 17))","h":0}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 17) || (base_vd == 19))","h":0}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 17) || (base_vd == 19))","h":0}]}],"x":0,"p":0.00},{"f":2,"l":643,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":668,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":670,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":671,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":680,"i":1,"s":"(lane_out.valid_o[2] && lane_in.ready_in[2])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[2]","c":1},{"n":"lane_in.ready_in[2]","c":1}],"r":[{"n":"lane_out.valid_o[2]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[2]_1","i":2,"b":[{"m":"lane_in.ready_in[2]","h":1}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"lane_out.valid_o[2]","h":1}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"lane_out.valid_o[2]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":683,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":689,"i":1,"s":"(lane_out.vd[2] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[2] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[2] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[2] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":696,"i":1,"s":"(lane_out.elem_idx[2] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[2] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":718,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[2] && driver_done_sqrt)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[2]","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"driver_done_sqrt","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[2] && driver_done_sqrt)","h":1}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":0}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_sqrt)","h":1}]},{"n":"driver_done_sqrt_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[2])","h":0}]},{"n":"driver_done_sqrt_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[2])","h":1}]}],"x":0,"p":33.33},{"f":2,"l":725,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":770,"i":1,"s":"(((base_vd == 41) || (base_vd == 43)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 41)","c":1},{"n":"(base_vd == 43)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 41)_0","i":1,"b":[{"m":"~(base_vd == 43)","h":1}]},{"n":"(base_vd == 41)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 43)_0","i":3,"b":[{"m":"~(base_vd == 41)","h":1}]},{"n":"(base_vd == 43)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 41))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 41) || (base_vd == 43))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 41) || (base_vd == 43))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":778,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":800,"i":1,"s":"((~lane_out.ready_o[0] && nRST) && (wait_cycles < 1000))","bi":0,"hp":0,"t":[{"n":"lane_out.ready_o[0]","c":1},{"n":"nRST","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(wait_cycles < 1000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.ready_o[0]_0","i":1,"b":[{"m":"((wait_cycles < 1000) && nRST)","h":1}]},{"n":"lane_out.ready_o[0]_1","i":2,"b":[{"m":"-","h":1}]},{"n":"nRST_0","i":3,"b":[{"m":"~lane_out.ready_o[0]","h":0}]},{"n":"nRST_1","i":4,"b":[{"m":"((wait_cycles < 1000) && ~lane_out.ready_o[0])","h":1}]},{"n":"(wait_cycles < 1000)_0","i":5,"b":[{"m":"(~lane_out.ready_o[0] && nRST)","h":0}]},{"n":"(wait_cycles < 1000)_1","i":6,"b":[{"m":"(~lane_out.ready_o[0] && nRST)","h":1}]}],"x":0,"p":33.33},{"f":2,"l":805,"i":1,"s":"(wait_cycles >= 1000)","bi":0,"hp":0,"t":[{"n":"(wait_cycles >= 1000)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(wait_cycles >= 1000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(wait_cycles >= 1000)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":862,"i":1,"s":"(((base_vd == 31) || (base_vd == 33)) && (mask != 0))","bi":0,"hp":0,"t":[{"n":"(base_vd == 31)","c":1},{"n":"(base_vd == 33)","c":1},{"n":"(mask != 0)","c":1}],"r":[{"n":"(base_vd == 31)_0","i":1,"b":[{"m":"~(base_vd == 33)","h":1}]},{"n":"(base_vd == 31)_1","i":2,"b":[{"m":"(mask != 0)","h":1}]},{"n":"(base_vd == 33)_0","i":3,"b":[{"m":"~(base_vd == 31)","h":1}]},{"n":"(base_vd == 33)_1","i":4,"b":[{"m":"((mask != 0) && ~(base_vd == 31))","h":1}]},{"n":"(mask != 0)_0","i":5,"b":[{"m":"((base_vd == 31) || (base_vd == 33))","h":1}]},{"n":"(mask != 0)_1","i":6,"b":[{"m":"((base_vd == 31) || (base_vd == 33))","h":1}]}],"x":0,"p":100.00},{"f":2,"l":870,"i":1,"s":"($urandom_range(99,0) > back_to_back_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) > back_to_back_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) > back_to_back_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) > back_to_back_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":900,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":902,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":903,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":912,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":1}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":1}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":915,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":921,"i":1,"s":"(lane_out.vd[0] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[0] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":928,"i":1,"s":"(lane_out.elem_idx[0] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":956,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[0] && driver_done_valu)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[0]","c":1},{"n":"driver_done_valu","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[0] && driver_done_valu)","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_valu)","h":1}]},{"n":"driver_done_valu_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[0])","h":1}]},{"n":"driver_done_valu_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[0])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":972,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1008,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1010,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1011,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1020,"i":1,"s":"(lane_out.valid_o[4] && lane_in.ready_in[4])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[4]","c":1},{"n":"lane_in.ready_in[4]","c":1}],"r":[{"n":"lane_out.valid_o[4]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[4]_1","i":2,"b":[{"m":"lane_in.ready_in[4]","h":1}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"lane_out.valid_o[4]","h":1}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"lane_out.valid_o[4]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1023,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1029,"i":1,"s":"(lane_out.vd[4] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[4] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[4] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[4] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1036,"i":1,"s":"(lane_out.elem_idx[4] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[4] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1064,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[4] && driver_done_div)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[4]","c":1},{"n":"driver_done_div","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[4] && driver_done_div)","h":1}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_div)","h":1}]},{"n":"driver_done_div_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[4])","h":1}]},{"n":"driver_done_div_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[4])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1080,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1113,"i":1,"s":"(cycles < max_cycles)","bi":0,"hp":0,"t":[{"n":"(cycles < max_cycles)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(cycles < max_cycles)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(cycles < max_cycles)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1115,"i":1,"s":"(stall_prob > 0)","bi":0,"hp":0,"t":[{"n":"(stall_prob > 0)","c":1}],"r":[{"n":"(stall_prob > 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(stall_prob > 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1116,"i":1,"s":"($urandom_range(99,0) < stall_prob)","bi":0,"hp":0,"t":[{"n":"($urandom_range(99,0) < stall_prob)","c":1}],"r":[{"n":"($urandom_range(99,0) < stall_prob)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"($urandom_range(99,0) < stall_prob)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1125,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":1}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":1}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1128,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1134,"i":1,"s":"(lane_out.vd[3] !== exp.vd)","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp.vd)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.vd[3] !== exp.vd)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1141,"i":1,"s":"(lane_out.elem_idx[3] !== exp.elem_idx)","bi":0,"hp":0,"t":[{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp.elem_idx)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1169,"i":1,"s":"((size(exp_q) == 0) && lane_in.ready_in[3] && driver_done_mul)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":1},{"n":"lane_in.ready_in[3]","c":1},{"n":"driver_done_mul","c":1}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"(lane_in.ready_in[3] && driver_done_mul)","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"((size(exp_q) == 0) && driver_done_mul)","h":1}]},{"n":"driver_done_mul_0","i":5,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[3])","h":1}]},{"n":"driver_done_mul_1","i":6,"b":[{"m":"((size(exp_q) == 0) && lane_in.ready_in[3])","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1185,"i":1,"s":"((cycles >= max_cycles) && (size(exp_q) != 0))","bi":0,"hp":0,"t":[{"n":"(cycles >= max_cycles)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(size(exp_q) != 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(cycles >= max_cycles)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles >= max_cycles)_1","i":2,"b":[{"m":"(size(exp_q) != 0)","h":0}]},{"n":"(size(exp_q) != 0)_0","i":3,"b":[{"m":"(cycles >= max_cycles)","h":0}]},{"n":"(size(exp_q) != 0)_1","i":4,"b":[{"m":"(cycles >= max_cycles)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1232,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1237,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1256,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1261,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1285,"i":1,"s":"(cycles_5 < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5 < 200000)","c":1}],"r":[{"n":"(cycles_5 < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5 < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1289,"i":1,"s":"(lane_out.valid_o[2] && lane_in.ready_in[2])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[2]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[2]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[2]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[2]_1","i":2,"b":[{"m":"lane_in.ready_in[2]","h":0}]},{"n":"lane_in.ready_in[2]_0","i":3,"b":[{"m":"lane_out.valid_o[2]","h":0}]},{"n":"lane_in.ready_in[2]_1","i":4,"b":[{"m":"lane_out.valid_o[2]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1299,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1304,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1325,"i":1,"s":"((errors == 0) && (size(exp_q) == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(size(exp_q) == 0)","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1330,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1361,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1367,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1396,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1402,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1429,"i":1,"s":"(cycles_5 < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5 < 200000)","c":1}],"r":[{"n":"(cycles_5 < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5 < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1433,"i":1,"s":"(lane_out.valid_o[4] && lane_in.ready_in[4])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[4]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[4]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[4]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[4]_1","i":2,"b":[{"m":"lane_in.ready_in[4]","h":0}]},{"n":"lane_in.ready_in[4]_0","i":3,"b":[{"m":"lane_out.valid_o[4]","h":0}]},{"n":"lane_in.ready_in[4]_1","i":4,"b":[{"m":"lane_out.valid_o[4]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1447,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1452,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1479,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1485,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1534,"i":1,"s":"((seen < expected_results) && (cycles_1mul < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_1mul < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_1mul < 200000)","h":1}]},{"n":"(cycles_1mul < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_1mul < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1538,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1541,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1548,"i":1,"s":"((lane_out.vd[3] !== exp_item.vd) || (lane_out.elem_idx[3] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[3] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[3] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1568,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1573,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1618,"i":1,"s":"((seen < expected_results) && (cycles_2mul < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_2mul < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_2mul < 200000)","h":1}]},{"n":"(cycles_2mul < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_2mul < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1622,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":1},{"n":"lane_in.ready_in[3]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":1}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1625,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1632,"i":1,"s":"((lane_out.vd[3] !== exp_item.vd) || (lane_out.elem_idx[3] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[3] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[3] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[3] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[3] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[3] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[3] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1652,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1657,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1681,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1687,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1709,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1715,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1753,"i":1,"s":"(cycles_5mul < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5mul < 200000)","c":1}],"r":[{"n":"(cycles_5mul < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5mul < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":1757,"i":1,"s":"(lane_out.valid_o[3] && lane_in.ready_in[3])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[3]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[3]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[3]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[3]_1","i":2,"b":[{"m":"lane_in.ready_in[3]","h":0}]},{"n":"lane_in.ready_in[3]_0","i":3,"b":[{"m":"lane_out.valid_o[3]","h":0}]},{"n":"lane_in.ready_in[3]_1","i":4,"b":[{"m":"lane_out.valid_o[3]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1771,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1776,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1800,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1806,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1856,"i":1,"s":"((seen < expected_results) && (cycles_1valu < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_1valu < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_1valu < 200000)","h":1}]},{"n":"(cycles_1valu < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_1valu < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1860,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1863,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1870,"i":1,"s":"((lane_out.vd[0] !== exp_item.vd) || (lane_out.elem_idx[0] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[0] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[0] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1890,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1895,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1940,"i":1,"s":"((seen < expected_results) && (cycles_2valu < 200000))","bi":0,"hp":0,"t":[{"n":"(seen < expected_results)","c":1},{"n":"(cycles_2valu < 200000)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(seen < expected_results)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(seen < expected_results)_1","i":2,"b":[{"m":"(cycles_2valu < 200000)","h":1}]},{"n":"(cycles_2valu < 200000)_0","i":3,"b":[{"m":"(seen < expected_results)","h":0}]},{"n":"(cycles_2valu < 200000)_1","i":4,"b":[{"m":"(seen < expected_results)","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1944,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":1},{"n":"lane_in.ready_in[0]","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":1}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":1}]}],"x":0,"p":50.00},{"f":2,"l":1947,"i":1,"s":"(size(exp_q) == 0)","bi":0,"hp":0,"t":[{"n":"(size(exp_q) == 0)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(size(exp_q) == 0)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(size(exp_q) == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1954,"i":1,"s":"((lane_out.vd[0] !== exp_item.vd) || (lane_out.elem_idx[0] !== exp_item.elem_idx))","bi":0,"hp":0,"t":[{"n":"(lane_out.vd[0] !== exp_item.vd)","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"(lane_out.vd[0] !== exp_item.vd)_0","i":1,"b":[{"m":"~(lane_out.elem_idx[0] !== exp_item.elem_idx)","h":1}]},{"n":"(lane_out.vd[0] !== exp_item.vd)_1","i":2,"b":[{"m":"-","h":0}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_0","i":3,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":1}]},{"n":"(lane_out.elem_idx[0] !== exp_item.elem_idx)_1","i":4,"b":[{"m":"~(lane_out.vd[0] !== exp_item.vd)","h":0}]}],"x":0,"p":0.00},{"f":2,"l":1974,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == expected_results))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == expected_results)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == expected_results))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == expected_results))","h":1}]},{"n":"(seen == expected_results)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == expected_results)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":1979,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2003,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2009,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2031,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2037,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2075,"i":1,"s":"(cycles_5valu < 200000)","bi":0,"hp":0,"t":[{"n":"(cycles_5valu < 200000)","c":1}],"r":[{"n":"(cycles_5valu < 200000)_0","i":1,"b":[{"m":"-","h":1}]},{"n":"(cycles_5valu < 200000)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":100.00},{"f":2,"l":2079,"i":1,"s":"(lane_out.valid_o[0] && lane_in.ready_in[0])","bi":0,"hp":0,"t":[{"n":"lane_out.valid_o[0]","c":0,"r":"'_1' not hit","h":"Hit '_1'"},{"n":"lane_in.ready_in[0]","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"lane_out.valid_o[0]_0","i":1,"b":[{"m":"-","h":1}]},{"n":"lane_out.valid_o[0]_1","i":2,"b":[{"m":"lane_in.ready_in[0]","h":0}]},{"n":"lane_in.ready_in[0]_0","i":3,"b":[{"m":"lane_out.valid_o[0]","h":0}]},{"n":"lane_in.ready_in[0]_1","i":4,"b":[{"m":"lane_out.valid_o[0]","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2093,"i":1,"s":"((errors == 0) && (seen == 0))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"(seen == 0)","h":1}]},{"n":"(seen == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(seen == 0)_1","i":4,"b":[{"m":"(errors == 0)","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2098,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2122,"i":1,"s":"((errors == 0) && (size(exp_q) == 0) && (seen == exp_total))","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(size(exp_q) == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"},{"n":"(seen == exp_total)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"((size(exp_q) == 0) && (seen == exp_total))","h":1}]},{"n":"(size(exp_q) == 0)_0","i":3,"b":[{"m":"(errors == 0)","h":0}]},{"n":"(size(exp_q) == 0)_1","i":4,"b":[{"m":"((errors == 0) && (seen == exp_total))","h":1}]},{"n":"(seen == exp_total)_0","i":5,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":0}]},{"n":"(seen == exp_total)_1","i":6,"b":[{"m":"((errors == 0) && (size(exp_q) == 0))","h":1}]}],"x":0,"p":0.00},{"f":2,"l":2128,"i":1,"s":"(errors == 0)","bi":0,"hp":0,"t":[{"n":"(errors == 0)","c":0,"r":"No hits","h":"Hit '_0' and '_1'"}],"r":[{"n":"(errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(errors == 0)_1","i":2,"b":[{"m":"-","h":0}]}],"x":0,"p":0.00},{"f":2,"l":2140,"i":1,"s":"(total_errors == 0)","bi":0,"hp":0,"t":[{"n":"(total_errors == 0)","c":0,"r":"'_0' not hit","h":"Hit '_0'"}],"r":[{"n":"(total_errors == 0)_0","i":1,"b":[{"m":"-","h":0}]},{"n":"(total_errors == 0)_1","i":2,"b":[{"m":"-","h":1}]}],"x":0,"p":0.00}]},"10":{"pr":"work.mul_bf16","t":"du","ce":[{"f":11,"l":40,"i":1,"s":"(a_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(a_latched[14:7] == 0)","c":1}],"r":[{"n":"(a_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":2}]},{"n":"(a_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":2}]}],"x":0,"p":100.00},{"f":11,"l":47,"i":1,"s":"(b_latched[14:7] == 0)","bi":0,"hp":0,"t":[{"n":"(b_latched[14:7] == 0)","c":1}],"r":[{"n":"(b_latched[14:7] == 0)_0","i":1,"b":[{"m":"-","h":2}]},{"n":"(b_latched[14:7] == 0)_1","i":2,"b":[{"m":"-","h":2}]}],"x":0,"p":100.00},{"f":11,"l":98,"i":1,"s":"(mul_frac_product[1] & ((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2]))","bi":0,"hp":0,"t":[{"n":"mul_frac_product[1]","c":1},{"n":"mul_frac_product[0]","c":1},{"n":"mul_round_loss","c":1},{"n":"mul_frac_product[2]","c":1}],"r":[{"n":"mul_frac_product[1]_0","i":1,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":2}]},{"n":"mul_frac_product[1]_1","i":2,"b":[{"m":"((mul_frac_product[0] | mul_round_loss) | mul_frac_product[2])","h":2}]},{"n":"mul_frac_product[0]_0","i":3,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":1}]},{"n":"mul_frac_product[0]_1","i":4,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_round_loss)","h":1}]},{"n":"mul_round_loss_0","i":5,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":1}]},{"n":"mul_round_loss_1","i":6,"b":[{"m":"(mul_frac_product[1] && ~mul_frac_product[2] && ~mul_frac_product[0])","h":2}]},{"n":"mul_frac_product[2]_0","i":7,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":1}]},{"n":"mul_frac_product[2]_1","i":8,"b":[{"m":"(mul_frac_product[1] && ~(mul_frac_product[0] | mul_round_loss))","h":2}]}],"x":0,"p":100.00},{"f":11,"l":106,"i":1,"s":"(mul_product == 0)","bi":0,"hp":0,"t":[{"n":"(mul_product == 0)","c":1}],"r":[{"n":"(mul_product == 0)_0","i":1,"b":[{"m":"-","h":2}]},{"n":"(mul_product == 0)_1","i":2,"b":[{"m":"-","h":2}]}],"x":0,"p":100.00},{"f":11,"l":74,"i":1,"s":"(a_latched[15] ^ b_latched[15])","bi":1,"hp":0,"t":[{"n":"a_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"},{"n":"b_latched[15]","c":0,"r":"'_0' hit but '_1' is not hit","h":"Hit '_1' for output ->1"}],"r":[{"n":"a_latched[15]_0","i":1,"b":[{"m":"-","h":2},{"m":"-","h":0}]},{"n":"a_latched[15]_1","i":2,"b":[{"m":"-","h":0},{"m":"-","h":0}]},{"n":"b_latched[15]_0","i":3,"b":[{"m":"-","h":2},{"m":"-","h":0}]},{"n":"b_latched[15]_1","i":4,"b":[{"m":"-","h":0},{"m":"-","h":0}]}],"x":1,"p":0.00}]},"18":{"pr":"work.sync_fifo","t":"du","ce":[{"f":21,"l":22,"i":1,"s":"(wr_en & ~full)","bi":0,"hp":0,"t":[{"n":"wr_en","c":1},{"n":"full","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"wr_en_0","i":1,"b":[{"m":"~full","h":4}]},{"n":"wr_en_1","i":2,"b":[{"m":"~full","h":4}]},{"n":"full_0","i":3,"b":[{"m":"wr_en","h":4}]},{"n":"full_1","i":4,"b":[{"m":"wr_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":33,"i":1,"s":"(rd_en & ~empty)","bi":0,"hp":0,"t":[{"n":"rd_en","c":1},{"n":"empty","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"rd_en_0","i":1,"b":[{"m":"~empty","h":4}]},{"n":"rd_en_1","i":2,"b":[{"m":"~empty","h":4}]},{"n":"empty_0","i":3,"b":[{"m":"rd_en","h":4}]},{"n":"empty_1","i":4,"b":[{"m":"rd_en","h":0}]}],"x":0,"p":50.00},{"f":21,"l":41,"i":1,"s":"((wptr + 1) == rptr)","bi":0,"hp":0,"t":[{"n":"((wptr + 1) == rptr)","c":0,"r":"'_1' not hit","h":"Hit '_1'"}],"r":[{"n":"((wptr + 1) == rptr)_0","i":1,"b":[{"m":"-","h":4}]},{"n":"((wptr + 1) == rptr)_1","i":2,"b":[{"m":"-","h":0}]}],"x":1,"p":0.00},{"f":21,"l":42,"i":1,"s":"(wptr == rptr)","bi":0,"hp":0,"t":[{"n":"(wptr == rptr)","c":1}],"r":[{"n":"(wptr == rptr)_0","i":1,"b":[{"m":"-","h":4}]},{"n":"(wptr == rptr)_1","i":2,"b":[{"m":"-","h":4}]}],"x":1,"p":100.00}]},"11":{"pr":"work.wallacetree_8b","t":"du","ce":[{"f":12,"l":28,"i":1,"s":"(a_latched[0] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":28,"i":1,"s":"(a_latched[3] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":29,"i":1,"s":"(a_latched[2] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[2]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":29,"i":1,"s":"(a_latched[5] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[5]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":1,"s":"(a_latched[0] & b_latched[1])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":1,"s":"(a_latched[3] & b_latched[1])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[1] & b_latched[0])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":31,"i":2,"s":"(a_latched[4] & b_latched[0])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":1,"s":"(a_latched[1] & frac_leading_bit_fp2)","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[1]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":1,"s":"(a_latched[4] & frac_leading_bit_fp2)","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[4]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":2,"s":"(a_latched[2] & b_latched[6])","gi":" (GI=0)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":32,"i":2,"s":"(a_latched[5] & b_latched[6])","gi":" (GI=1)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[2])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[3])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[4])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[5])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & b_latched[6])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[0]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[0] & frac_leading_bit_fp2)","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[0]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[0]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[0]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[0]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[0]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[2])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[3])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[4])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[5])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & b_latched[6])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[3]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":1,"s":"(a_latched[3] & frac_leading_bit_fp2)","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[3]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[3]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[3]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[3]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[3]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[1])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[2])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[3])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[4])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[5])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[1] & b_latched[6])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[1]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[1]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[1]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[1]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[1]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[1])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[2])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[3])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[4])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[5])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":2,"s":"(a_latched[4] & b_latched[6])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[4]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[4]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[4]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[4]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[4]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[0])","gi":" (GI=0,2)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[1])","gi":" (GI=0,3)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[2])","gi":" (GI=0,4)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[3])","gi":" (GI=0,5)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[4])","gi":" (GI=0,6)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[2] & b_latched[5])","gi":" (GI=0,7)","bi":0,"hp":0,"t":[{"n":"a_latched[2]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[2]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[2]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[2]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[2]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[0])","gi":" (GI=1,2)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[1])","gi":" (GI=1,3)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[2])","gi":" (GI=1,4)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[3])","gi":" (GI=1,5)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[4])","gi":" (GI=1,6)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":36,"i":3,"s":"(a_latched[5] & b_latched[5])","gi":" (GI=1,7)","bi":0,"hp":0,"t":[{"n":"a_latched[5]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[5]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[5]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[5]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[5]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":78,"i":1,"s":"(a_latched[6] & b_latched[0])","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[0]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[1])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[1]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[2])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[2]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[3])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[4])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[5])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":1,"s":"(a_latched[6] & b_latched[6])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"a_latched[6]","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[0])","gi":" (GI=2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[0]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[0]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[0]","h":2}]},{"n":"b_latched[0]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[0]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[1])","gi":" (GI=3)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[1]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[1]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[1]","h":2}]},{"n":"b_latched[1]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[1]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[2])","gi":" (GI=4)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[2]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[2]","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[2]","h":2}]},{"n":"b_latched[2]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[2]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[3])","gi":" (GI=5)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[3]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[3]","h":2}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[3]","h":2}]},{"n":"b_latched[3]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[3]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[4])","gi":" (GI=6)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[4]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[4]","h":2}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[4]","h":2}]},{"n":"b_latched[4]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[4]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":84,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[5])","gi":" (GI=7)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[5]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[5]","h":2}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[5]","h":2}]},{"n":"b_latched[5]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[5]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":89,"i":1,"s":"(a_latched[6] & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"a_latched[6]","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"a_latched[6]_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"a_latched[6]_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"a_latched[6]","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"a_latched[6]","h":2}]}],"x":1,"p":100.00},{"f":12,"l":89,"i":2,"s":"(frac_leading_bit_fp1 & b_latched[6])","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"b_latched[6]","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"b_latched[6]","h":2}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"b_latched[6]","h":2}]},{"n":"b_latched[6]_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":2}]},{"n":"b_latched[6]_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00},{"f":12,"l":92,"i":1,"s":"(frac_leading_bit_fp1 & frac_leading_bit_fp2)","bi":0,"hp":0,"t":[{"n":"frac_leading_bit_fp1","c":1},{"n":"frac_leading_bit_fp2","c":1}],"r":[{"n":"frac_leading_bit_fp1_0","i":1,"b":[{"m":"frac_leading_bit_fp2","h":1}]},{"n":"frac_leading_bit_fp1_1","i":2,"b":[{"m":"frac_leading_bit_fp2","h":2}]},{"n":"frac_leading_bit_fp2_0","i":3,"b":[{"m":"frac_leading_bit_fp1","h":1}]},{"n":"frac_leading_bit_fp2_1","i":4,"b":[{"m":"frac_leading_bit_fp1","h":2}]}],"x":1,"p":100.00}]}}; +processCondExprData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/du.js b/covhtmlreport/files/du.js new file mode 100644 index 000000000..ecb71953e --- /dev/null +++ b/covhtmlreport/files/du.js @@ -0,0 +1,2 @@ +var g_data = {"data":[{"n":"work.add_bf16","id":15,"zf":1,"tc":71.38,"s":97.64,"b":91.66,"fc":100.00,"fe":0.00,"t":67.61},{"n":"work.adder_8b","id":14,"zf":1,"tc":64.46,"s":100.00,"fe":12.50,"t":80.88},{"n":"work.addsub_bf16","id":26,"zf":1,"tc":57.18,"s":93.40,"b":80.00,"fc":33.33,"fe":4.00,"t":75.19},{"n":"work.div","id":20,"zf":1,"tc":51.18,"s":85.71,"b":79.16,"fc":35.29,"fe":11.11,"t":44.64},{"n":"work.div_if","id":19,"zf":1,"tc":46.15,"t":46.15},{"n":"work.fa","id":13,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"work.ha","id":12,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"work.lane","id":6,"zf":1,"tc":80.87,"s":99.42,"b":97.43,"fc":81.25,"fe":78.04,"t":48.22},{"n":"work.lane_fu_pt","id":17,"zf":1,"tc":76.14,"s":88.88,"b":100.00,"fe":71.42,"t":44.24},{"n":"work.lane_sequencer","id":8,"zf":1,"tc":86.65,"s":100.00,"b":100.00,"t":59.95},{"n":"work.lane_tb","id":2,"zf":1,"tc":45.68,"s":84.63,"b":58.11,"fc":28.90,"t":11.05},{"n":"work.left_shift","id":16,"zf":1,"tc":93.76,"s":91.30,"b":90.00,"t":100.00},{"n":"work.mant_div","id":21,"zf":1,"tc":28.23,"s":66.66,"b":45.45,"fc":0.00,"t":0.81},{"n":"work.mul_bf16","id":10,"zf":1,"tc":76.34,"s":100.00,"b":93.75,"fc":100.00,"fe":0.00,"t":88.00},{"n":"work.mul_bf16_fu","id":23,"zf":1,"tc":86.37,"s":100.00,"b":100.00,"fc":57.14,"fe":100.00,"fs":100.00,"ft":75.00,"t":72.46},{"n":"work.mul_if","id":22,"zf":1,"tc":70.19,"t":70.19},{"n":"work.sqrt_bf16","id":9,"zf":1,"tc":71.11,"s":90.17,"b":87.50,"fc":60.71,"fe":52.94,"t":64.22},{"n":"work.sqrt_if","id":7,"zf":1,"tc":77.77,"t":77.77},{"n":"work.sync_fifo","id":18,"zf":1,"tc":75.86,"s":100.00,"b":100.00,"fc":50.00,"fe":50.00,"t":79.31},{"n":"work.valu","id":25,"zf":1,"tc":70.65,"s":93.61,"b":78.57,"fc":100.00,"fe":18.18,"t":62.88},{"n":"work.valu_if","id":24,"zf":1,"tc":62.96,"t":62.96},{"n":"work.vector_if","id":3,"zf":1,"tc":1.07,"t":1.07},{"n":"work.wallacetree_8b","id":11,"zf":1,"tc":99.78,"s":100.00,"fe":100.00,"t":99.35}]}; +processDuData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/dulink.js b/covhtmlreport/files/dulink.js new file mode 100644 index 000000000..b7ec2c5c4 --- /dev/null +++ b/covhtmlreport/files/dulink.js @@ -0,0 +1,2 @@ +var g_data = {"15":["work.add_bf16",71.38,1],"14":["work.adder_8b",64.46,1],"26":["work.addsub_bf16",57.18,1],"20":["work.div",51.18,1],"19":["work.div_if",46.15,1],"13":["work.fa",100.00,1],"12":["work.ha",100.00,1],"6":["work.lane",80.87,1],"17":["work.lane_fu_pt",76.14,1],"8":["work.lane_sequencer",86.65,1],"2":["work.lane_tb",45.68,1],"16":["work.left_shift",93.76,1],"21":["work.mant_div",28.23,1],"10":["work.mul_bf16",76.34,1],"23":["work.mul_bf16_fu",86.37,1],"22":["work.mul_if",70.19,1],"9":["work.sqrt_bf16",71.11,1],"7":["work.sqrt_if",77.77,1],"18":["work.sync_fifo",75.86,1],"25":["work.valu",70.65,1],"24":["work.valu_if",62.96,1],"3":["work.vector_if",1.07,1],"11":["work.wallacetree_8b",99.78,1]}; +processDuLinks(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/fsm1.js b/covhtmlreport/files/fsm1.js new file mode 100644 index 000000000..4d67820f3 --- /dev/null +++ b/covhtmlreport/files/fsm1.js @@ -0,0 +1,2 @@ +var g_data = {"101":{"pr":"/lane_tb/dut/u_mul","fsms":[["state",10,95,[["IDLE",0,10,95,340," 0"],["BUSY",0,10,103,246," 1"],["HAVE_RES",0,10,113,131," 2"],["IDLE -> BUSY",1,10,97,123,0],["BUSY -> HAVE_RES",1,10,105,123,1],["BUSY -> IDLE",1,10,58,0,2],["HAVE_RES -> IDLE",1,10,115,123,3]],100.00,75.00]]}}; +processFsmData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/instlink.js b/covhtmlreport/files/instlink.js new file mode 100644 index 000000000..380d89b4f --- /dev/null +++ b/covhtmlreport/files/instlink.js @@ -0,0 +1,2 @@ +var g_data = {"28":[27,"lane_if",1],"30":[29,"sqrt_bus",1],"31":[29,"u_seq_sqrt",1],"35":[34,"genblk5[13]/fa_s4_l1",1],"36":[34,"genblk5[12]/fa_s4_l1",1],"37":[34,"genblk5[11]/fa_s4_l1",1],"38":[34,"genblk5[10]/fa_s4_l1",1],"39":[34,"genblk5[9]/fa_s4_l1",1],"40":[34,"genblk5[8]/fa_s4_l1",1],"41":[34,"genblk5[7]/fa_s4_l1",1],"42":[34,"genblk4[10]/fa_s3_l1",1],"43":[34,"genblk4[9]/fa_s3_l1",1],"44":[34,"genblk4[8]/fa_s3_l1",1],"45":[34,"genblk4[7]/fa_s3_l1",1],"46":[34,"genblk4[6]/fa_s3_l1",1],"47":[34,"genblk4[5]/fa_s3_l1",1],"48":[34,"genblk3[7]/fa_s2_l2",1],"49":[34,"genblk3[6]/fa_s2_l2",1],"50":[34,"genblk3[5]/fa_s2_l2",1],"51":[34,"genblk3[4]/fa_s2_l2",1],"52":[34,"genblk3[3]/fa_s2_l2",1],"53":[34,"genblk3[2]/fa_s2_l2",1],"54":[34,"genblk2[9]/fa_s2_l1",1],"55":[34,"genblk2[8]/fa_s2_l1",1],"56":[34,"genblk2[7]/fa_s2_l1",1],"57":[34,"genblk2[6]/fa_s2_l1",1],"58":[34,"genblk2[5]/fa_s2_l1",1],"59":[34,"genblk2[4]/fa_s2_l1",1],"60":[34,"genblk2[3]/fa_s2_l1",1],"61":[34,"genblk1[1]/genblk1[7]/fa_00",1],"62":[34,"genblk1[1]/genblk1[6]/fa_00",1],"63":[34,"genblk1[1]/genblk1[5]/fa_00",1],"64":[34,"genblk1[1]/genblk1[4]/fa_00",1],"65":[34,"genblk1[1]/genblk1[3]/fa_00",1],"66":[34,"genblk1[1]/genblk1[2]/fa_00",1],"67":[34,"genblk1[1]/ha_00_first",1],"68":[34,"genblk1[1]/ha_00_last",1],"69":[34,"genblk1[0]/genblk1[7]/fa_00",1],"70":[34,"genblk1[0]/genblk1[6]/fa_00",1],"71":[34,"genblk1[0]/genblk1[5]/fa_00",1],"72":[34,"genblk1[0]/genblk1[4]/fa_00",1],"73":[34,"genblk1[0]/genblk1[3]/fa_00",1],"74":[34,"genblk1[0]/genblk1[2]/fa_00",1],"75":[34,"genblk1[0]/ha_00_first",1],"76":[34,"genblk1[0]/ha_00_last",1],"77":[34,"ha_s2_l1_b2",1],"78":[34,"ha_s2_l2_b1",1],"79":[34,"ha_s2_l2_b8",1],"80":[34,"ha_s3_l1_b3",1],"81":[34,"ha_s3_l1_b4",1],"82":[34,"ha_s3_l1_b11",1],"83":[34,"ha_s3_l1_b12",1],"84":[34,"ha_s4_l1_b4",1],"85":[34,"ha_s4_l1_b5",1],"86":[34,"ha_s4_l1_b6",1],"87":[34,"ha_s4_l1_b14",1],"34":[33,"wallaca",1],"88":[33,"add_EXPs",1],"33":[32,"mul1",1],"90":[89,"normalizer",1],"89":[32,"add1",1],"32":[29,"u_sqrt_bf16",1],"92":[91,"u_fifo",1],"91":[29,"u_sqrt_sync",1],"93":[29,"div_bus",1],"94":[29,"u_seq_div",1],"96":[95,"m_div",1],"95":[29,"u_div",1],"98":[97,"u_fifo",1],"97":[29,"u_div_sync",1],"99":[29,"mul_bus",1],"100":[29,"u_seq_mul",1],"104":[103,"genblk5[13]/fa_s4_l1",1],"105":[103,"genblk5[12]/fa_s4_l1",1],"106":[103,"genblk5[11]/fa_s4_l1",1],"107":[103,"genblk5[10]/fa_s4_l1",1],"108":[103,"genblk5[9]/fa_s4_l1",1],"109":[103,"genblk5[8]/fa_s4_l1",1],"110":[103,"genblk5[7]/fa_s4_l1",1],"111":[103,"genblk4[10]/fa_s3_l1",1],"112":[103,"genblk4[9]/fa_s3_l1",1],"113":[103,"genblk4[8]/fa_s3_l1",1],"114":[103,"genblk4[7]/fa_s3_l1",1],"115":[103,"genblk4[6]/fa_s3_l1",1],"116":[103,"genblk4[5]/fa_s3_l1",1],"117":[103,"genblk3[7]/fa_s2_l2",1],"118":[103,"genblk3[6]/fa_s2_l2",1],"119":[103,"genblk3[5]/fa_s2_l2",1],"120":[103,"genblk3[4]/fa_s2_l2",1],"121":[103,"genblk3[3]/fa_s2_l2",1],"122":[103,"genblk3[2]/fa_s2_l2",1],"123":[103,"genblk2[9]/fa_s2_l1",1],"124":[103,"genblk2[8]/fa_s2_l1",1],"125":[103,"genblk2[7]/fa_s2_l1",1],"126":[103,"genblk2[6]/fa_s2_l1",1],"127":[103,"genblk2[5]/fa_s2_l1",1],"128":[103,"genblk2[4]/fa_s2_l1",1],"129":[103,"genblk2[3]/fa_s2_l1",1],"130":[103,"genblk1[1]/genblk1[7]/fa_00",1],"131":[103,"genblk1[1]/genblk1[6]/fa_00",1],"132":[103,"genblk1[1]/genblk1[5]/fa_00",1],"133":[103,"genblk1[1]/genblk1[4]/fa_00",1],"134":[103,"genblk1[1]/genblk1[3]/fa_00",1],"135":[103,"genblk1[1]/genblk1[2]/fa_00",1],"136":[103,"genblk1[1]/ha_00_first",1],"137":[103,"genblk1[1]/ha_00_last",1],"138":[103,"genblk1[0]/genblk1[7]/fa_00",1],"139":[103,"genblk1[0]/genblk1[6]/fa_00",1],"140":[103,"genblk1[0]/genblk1[5]/fa_00",1],"141":[103,"genblk1[0]/genblk1[4]/fa_00",1],"142":[103,"genblk1[0]/genblk1[3]/fa_00",1],"143":[103,"genblk1[0]/genblk1[2]/fa_00",1],"144":[103,"genblk1[0]/ha_00_first",1],"145":[103,"genblk1[0]/ha_00_last",1],"146":[103,"ha_s2_l1_b2",1],"147":[103,"ha_s2_l2_b1",1],"148":[103,"ha_s2_l2_b8",1],"149":[103,"ha_s3_l1_b3",1],"150":[103,"ha_s3_l1_b4",1],"151":[103,"ha_s3_l1_b11",1],"152":[103,"ha_s3_l1_b12",1],"153":[103,"ha_s4_l1_b4",1],"154":[103,"ha_s4_l1_b5",1],"155":[103,"ha_s4_l1_b6",1],"156":[103,"ha_s4_l1_b14",1],"103":[102,"wallaca",1],"157":[102,"add_EXPs",1],"102":[101,"u_mul_core",1],"101":[29,"u_mul",1],"159":[158,"u_fifo",1],"158":[29,"u_mul_sync",1],"160":[29,"valu_bus",1],"161":[29,"u_seq_valu",1],"164":[163,"normalizer",1],"163":[162,"adder",1],"162":[29,"u_valu",1],"166":[165,"u_fifo",1],"165":[29,"u_valu_sync",1],"29":[27,"dut",1],"27":[-1,"lane_tb",1]}; +processInstLinks(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/overalldu.js b/covhtmlreport/files/overalldu.js new file mode 100644 index 000000000..b39337a01 --- /dev/null +++ b/covhtmlreport/files/overalldu.js @@ -0,0 +1,2 @@ +var g_data = {"ds_list":{"28":[27,"lane_if",1.07,1],"29":[27,"dut",79.97,1],"27":[-1,"lane_tb",68.56,1]},"ds":{"s":[1903,1733,91.06],"b":[639,499,78.09],"fe":[1052,889,84.50],"fc":[354,142,40.11],"t":[54720,6098,11.14],"fs":[3,3,100.00],"ft":[4,3,75.00],"tc":68.56},"du":{"s":[1484,1325,89.28],"b":[526,391,74.33],"fe":[321,196,61.05],"fc":[335,132,39.40],"t":[51526,4263,8.27],"fs":[3,3,100.00],"ft":[4,3,75.00],"tc":63.90}}; +processOverallduData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/s1.js b/covhtmlreport/files/s1.js new file mode 100644 index 000000000..a61c77667 --- /dev/null +++ b/covhtmlreport/files/s1.js @@ -0,0 +1,2 @@ +var g_data = {"29":{"pr":"/lane_tb/dut","stmts":[{"f":6,"cov":[{"l":43,"i":[{"h":671,"in":1}]},{"l":55,"i":[{"h":738,"in":1}]},{"l":56,"i":[{"h":738,"in":1}]},{"l":59,"i":[{"h":738,"in":1}]},{"l":60,"i":[{"h":738,"in":1}]},{"l":61,"i":[{"h":738,"in":1}]},{"l":62,"i":[{"h":738,"in":1}]},{"l":63,"i":[{"h":738,"in":1}]},{"l":64,"i":[{"h":738,"in":1}]},{"l":65,"i":[{"h":738,"in":1}]},{"l":71,"i":[{"h":464,"in":1}]},{"l":73,"i":[{"h":274,"in":1}]},{"l":94,"i":[{"h":1279,"in":1}]},{"l":96,"i":[{"h":1279,"in":1}]},{"l":99,"i":[{"h":1279,"in":1}]},{"l":102,"i":[{"h":1279,"in":1}]},{"l":109,"i":[{"h":387,"in":1}]},{"l":115,"i":[{"h":8,"in":1}]},{"l":116,"i":[{"h":286,"in":1}]},{"l":147,"i":[{"h":2811,"in":1}]},{"l":149,"i":[{"h":2,"in":1}]},{"l":150,"i":[{"h":2,"in":1}]},{"l":151,"i":[{"h":2,"in":1}]},{"l":152,"i":[{"h":2,"in":1}]},{"l":153,"i":[{"h":2,"in":1}]},{"l":157,"i":[{"h":124,"in":1}]},{"l":158,"i":[{"h":124,"in":1}]},{"l":159,"i":[{"h":124,"in":1}]},{"l":160,"i":[{"h":124,"in":1}]},{"l":161,"i":[{"h":124,"in":1}]},{"l":165,"i":[{"h":124,"in":1}]},{"l":166,"i":[{"h":124,"in":1}]},{"l":193,"i":[{"h":636,"in":1}]},{"l":206,"i":[{"h":702,"in":1}]},{"l":207,"i":[{"h":702,"in":1}]},{"l":210,"i":[{"h":702,"in":1}]},{"l":211,"i":[{"h":702,"in":1}]},{"l":212,"i":[{"h":702,"in":1}]},{"l":213,"i":[{"h":702,"in":1}]},{"l":214,"i":[{"h":702,"in":1}]},{"l":215,"i":[{"h":702,"in":1}]},{"l":216,"i":[{"h":702,"in":1}]},{"l":222,"i":[{"h":419,"in":1}]},{"l":224,"i":[{"h":283,"in":1}]},{"l":245,"i":[{"h":1179,"in":1}]},{"l":247,"i":[{"h":1179,"in":1}]},{"l":248,"i":[{"h":1179,"in":1}]},{"l":251,"i":[{"h":1179,"in":1}]},{"l":254,"i":[{"h":1179,"in":1}]},{"l":262,"i":[{"h":315,"in":1}]},{"l":269,"i":[{"h":232,"in":1}]},{"l":271,"i":[{"h":2,"in":1}]},{"l":273,"i":[{"h":108,"in":1}]},{"l":277,"i":[{"h":8,"in":1}]},{"l":278,"i":[{"h":286,"in":1}]},{"l":308,"i":[{"h":2808,"in":1}]},{"l":310,"i":[{"h":2,"in":1}]},{"l":311,"i":[{"h":2,"in":1}]},{"l":312,"i":[{"h":2,"in":1}]},{"l":313,"i":[{"h":2,"in":1}]},{"l":314,"i":[{"h":2,"in":1}]},{"l":315,"i":[{"h":2,"in":1}]},{"l":319,"i":[{"h":108,"in":1}]},{"l":320,"i":[{"h":108,"in":1}]},{"l":321,"i":[{"h":108,"in":1}]},{"l":322,"i":[{"h":108,"in":1}]},{"l":323,"i":[{"h":108,"in":1}]},{"l":324,"i":[{"h":108,"in":1}]},{"l":328,"i":[{"h":108,"in":1}]},{"l":329,"i":[{"h":108,"in":1}]},{"l":348,"i":[{"h":655,"in":1}]},{"l":357,"i":[{"h":637,"in":1}]},{"l":358,"i":[{"h":637,"in":1}]},{"l":360,"i":[{"h":637,"in":1}]},{"l":361,"i":[{"h":637,"in":1}]},{"l":362,"i":[{"h":637,"in":1}]},{"l":363,"i":[{"h":637,"in":1}]},{"l":364,"i":[{"h":637,"in":1}]},{"l":365,"i":[{"h":637,"in":1}]},{"l":366,"i":[{"h":637,"in":1}]},{"l":369,"i":[{"h":382,"in":1}]},{"l":371,"i":[{"h":255,"in":1}]},{"l":389,"i":[{"h":911,"in":1}]},{"l":390,"i":[{"h":911,"in":1}]},{"l":391,"i":[{"h":911,"in":1}]},{"l":392,"i":[{"h":911,"in":1}]},{"l":393,"i":[{"h":911,"in":1}]},{"l":401,"i":[{"h":349,"in":1}]},{"l":406,"i":[{"h":8,"in":1}]},{"l":407,"i":[{"h":286,"in":1}]},{"l":433,"i":[{"h":2763,"in":1}]},{"l":435,"i":[{"h":2,"in":1}]},{"l":436,"i":[{"h":2,"in":1}]},{"l":437,"i":[{"h":2,"in":1}]},{"l":438,"i":[{"h":2,"in":1}]},{"l":439,"i":[{"h":2,"in":1}]},{"l":443,"i":[{"h":123,"in":1}]},{"l":444,"i":[{"h":123,"in":1}]},{"l":445,"i":[{"h":123,"in":1}]},{"l":446,"i":[{"h":123,"in":1}]},{"l":447,"i":[{"h":123,"in":1}]},{"l":451,"i":[{"h":112,"in":1}]},{"l":452,"i":[{"h":112,"in":1}]},{"l":461,"i":[{"h":3336,"in":1}]},{"l":463,"i":[{"h":2,"in":1}]},{"l":464,"i":[{"h":2,"in":1}]},{"l":466,"i":[{"h":123,"in":1}]},{"l":467,"i":[{"h":123,"in":1}]},{"l":473,"i":[{"h":0,"in":1}]},{"l":513,"i":[{"h":403,"in":1}]},{"l":519,"i":[{"h":687,"in":1}]},{"l":526,"i":[{"h":634,"in":1}]},{"l":527,"i":[{"h":634,"in":1}]},{"l":530,"i":[{"h":634,"in":1}]},{"l":531,"i":[{"h":634,"in":1}]},{"l":532,"i":[{"h":634,"in":1}]},{"l":533,"i":[{"h":634,"in":1}]},{"l":534,"i":[{"h":634,"in":1}]},{"l":535,"i":[{"h":634,"in":1}]},{"l":536,"i":[{"h":634,"in":1}]},{"l":543,"i":[{"h":384,"in":1}]},{"l":545,"i":[{"h":250,"in":1}]},{"l":566,"i":[{"h":928,"in":1}]},{"l":568,"i":[{"h":928,"in":1}]},{"l":569,"i":[{"h":928,"in":1}]},{"l":572,"i":[{"h":928,"in":1}]},{"l":575,"i":[{"h":928,"in":1}]},{"l":579,"i":[{"h":928,"in":1}]},{"l":587,"i":[{"h":379,"in":1}]},{"l":592,"i":[{"h":9,"in":1}]},{"l":593,"i":[{"h":287,"in":1}]},{"l":598,"i":[{"h":2,"in":1}]},{"l":624,"i":[{"h":267,"in":1}]},{"l":630,"i":[{"h":2750,"in":1}]},{"l":632,"i":[{"h":2,"in":1}]},{"l":633,"i":[{"h":2,"in":1}]},{"l":634,"i":[{"h":2,"in":1}]},{"l":635,"i":[{"h":2,"in":1}]},{"l":636,"i":[{"h":2,"in":1}]},{"l":641,"i":[{"h":125,"in":1}]},{"l":642,"i":[{"h":125,"in":1}]},{"l":643,"i":[{"h":125,"in":1}]},{"l":644,"i":[{"h":125,"in":1}]},{"l":645,"i":[{"h":125,"in":1}]},{"l":649,"i":[{"h":113,"in":1}]},{"l":650,"i":[{"h":113,"in":1}]},{"l":658,"i":[{"h":2188,"in":1}]},{"l":659,"i":[{"h":2188,"in":1}]},{"l":662,"i":[{"h":2188,"in":1}]},{"l":663,"i":[{"h":2188,"in":1}]},{"l":664,"i":[{"h":2188,"in":1}]},{"l":665,"i":[{"h":2188,"in":1}]},{"l":666,"i":[{"h":2188,"in":1}]},{"l":667,"i":[{"h":2188,"in":1}]},{"l":670,"i":[{"h":2188,"in":1}]},{"l":671,"i":[{"h":2188,"in":1}]},{"l":672,"i":[{"h":2188,"in":1}]},{"l":673,"i":[{"h":2188,"in":1}]},{"l":674,"i":[{"h":2188,"in":1}]},{"l":675,"i":[{"h":2188,"in":1}]},{"l":678,"i":[{"h":2188,"in":1}]},{"l":679,"i":[{"h":2188,"in":1}]},{"l":680,"i":[{"h":2188,"in":1}]},{"l":681,"i":[{"h":2188,"in":1}]},{"l":682,"i":[{"h":2188,"in":1}]},{"l":683,"i":[{"h":2188,"in":1}]},{"l":687,"i":[{"h":2188,"in":1}]},{"l":688,"i":[{"h":2188,"in":1}]},{"l":689,"i":[{"h":2188,"in":1}]},{"l":690,"i":[{"h":2188,"in":1}]},{"l":691,"i":[{"h":2188,"in":1}]},{"l":692,"i":[{"h":2188,"in":1}]},{"l":695,"i":[{"h":2188,"in":1}]}],"mi":1}]},"31":{"pr":"/lane_tb/dut/u_seq_sqrt","stmts":[{"f":4,"cov":[{"l":30,"i":[{"h":1148,"in":1}]},{"l":36,"i":[{"h":712,"in":1}]},{"l":38,"i":[{"h":712,"in":1}]},{"l":40,"i":[{"h":712,"in":1}]},{"l":43,"i":[{"h":712,"in":1}]},{"l":44,"i":[{"h":712,"in":1}]},{"l":45,"i":[{"h":712,"in":1}]},{"l":48,"i":[{"h":712,"in":1}]},{"l":49,"i":[{"h":712,"in":1}]},{"l":50,"i":[{"h":712,"in":1}]},{"l":55,"i":[{"h":712,"in":1}]},{"l":58,"i":[{"h":712,"in":1}]},{"l":64,"i":[{"h":697,"in":1}]},{"l":66,"i":[{"h":2,"in":1}]},{"l":67,"i":[{"h":2,"in":1}]},{"l":68,"i":[{"h":2,"in":1}]},{"l":70,"i":[{"h":695,"in":1}]},{"l":74,"i":[{"h":296,"in":1}]},{"l":78,"i":[{"h":142,"in":1}]},{"l":82,"i":[{"h":284,"in":1}]},{"l":91,"i":[{"h":1158,"in":1}]},{"l":92,"i":[{"h":1158,"in":1}]},{"l":93,"i":[{"h":1158,"in":1}]},{"l":94,"i":[{"h":1158,"in":1}]},{"l":99,"i":[{"h":427,"in":1}]},{"l":103,"i":[{"h":142,"in":1}]},{"l":109,"i":[{"h":729,"in":1}]},{"l":114,"i":[{"h":237,"in":1}]},{"l":117,"i":[{"h":168,"in":1}]}],"mi":1}]},"32":{"pr":"/lane_tb/dut/u_sqrt_bf16","stmts":[{"f":17,"cov":[{"l":74,"i":[{"h":251,"in":1}]},{"l":76,"i":[{"h":2,"in":1}]},{"l":77,"i":[{"h":2,"in":1}]},{"l":78,"i":[{"h":2,"in":1}]},{"l":79,"i":[{"h":2,"in":1}]},{"l":80,"i":[{"h":2,"in":1}]},{"l":81,"i":[{"h":2,"in":1}]},{"l":84,"i":[{"h":249,"in":1}]},{"l":85,"i":[{"h":249,"in":1}]},{"l":86,"i":[{"h":249,"in":1}]},{"l":87,"i":[{"h":249,"in":1}]},{"l":88,"i":[{"h":249,"in":1}]},{"l":89,"i":[{"h":249,"in":1}]},{"l":94,"i":[{"h":790,"in":1}]},{"l":96,"i":[{"h":124,"in":1}]},{"l":97,"i":[{"h":124,"in":1}]},{"l":98,"i":[{"h":124,"in":1}]},{"l":99,"i":[{"h":124,"in":1}]},{"l":100,"i":[{"h":124,"in":1}]},{"l":101,"i":[{"h":124,"in":1}]},{"l":104,"i":[{"h":666,"in":1}]},{"l":105,"i":[{"h":666,"in":1}]},{"l":106,"i":[{"h":666,"in":1}]},{"l":107,"i":[{"h":666,"in":1}]},{"l":108,"i":[{"h":666,"in":1}]},{"l":109,"i":[{"h":666,"in":1}]},{"l":116,"i":[{"h":747,"in":1}]},{"l":118,"i":[{"h":2,"in":1}]},{"l":120,"i":[{"h":124,"in":1}]},{"l":122,"i":[{"h":124,"in":1}]},{"l":132,"i":[{"h":747,"in":1}]},{"l":134,"i":[{"h":2,"in":1}]},{"l":135,"i":[{"h":2,"in":1}]},{"l":138,"i":[{"h":745,"in":1}]},{"l":139,"i":[{"h":745,"in":1}]},{"l":144,"i":[{"h":1224,"in":1}]},{"l":146,"i":[{"h":248,"in":1}]},{"l":147,"i":[{"h":248,"in":1}]},{"l":148,"i":[{"h":248,"in":1}]},{"l":151,"i":[{"h":372,"in":1}]},{"l":152,"i":[{"h":372,"in":1}]},{"l":153,"i":[{"h":372,"in":1}]},{"l":156,"i":[{"h":604,"in":1}]},{"l":157,"i":[{"h":604,"in":1}]},{"l":158,"i":[{"h":604,"in":1}]},{"l":175,"i":[{"h":746,"in":1}]},{"l":179,"i":[{"h":546,"in":1}]},{"l":181,"i":[{"h":2,"in":1}]},{"l":183,"i":[{"h":544,"in":1}]},{"l":187,"i":[{"h":375,"in":1}]},{"l":189,"i":[{"h":2,"in":1}]},{"l":191,"i":[{"h":373,"in":1}]},{"l":195,"i":[{"h":747,"in":1}]},{"l":197,"i":[{"h":2,"in":1}]},{"l":198,"i":[{"h":2,"in":1}]},{"l":202,"i":[{"h":124,"in":1}]},{"l":204,"i":[{"h":124,"in":1}]},{"l":206,"i":[{"h":124,"in":1}]},{"l":207,"i":[{"h":124,"in":1}]},{"l":213,"i":[{"h":747,"in":1}]},{"l":215,"i":[{"h":2,"in":1}]},{"l":216,"i":[{"h":2,"in":1}]},{"l":220,"i":[{"h":248,"in":1}]},{"l":221,"i":[{"h":248,"in":1}]},{"l":224,"i":[{"h":497,"in":1}]},{"l":232,"i":[{"h":108,"in":1}]},{"l":233,"i":[{"h":108,"in":1}]},{"l":234,"i":[{"h":108,"in":1}]},{"l":235,"i":[{"h":108,"in":1}]},{"l":239,"i":[{"h":840,"in":1}]},{"l":241,"i":[{"h":2,"in":1}]},{"l":243,"i":[{"h":248,"in":1}]},{"l":247,"i":[{"h":747,"in":1}]},{"l":249,"i":[{"h":2,"in":1}]},{"l":251,"i":[{"h":124,"in":1}]},{"l":256,"i":[{"h":747,"in":1}]},{"l":258,"i":[{"h":2,"in":1}]},{"l":261,"i":[{"h":745,"in":1}]},{"l":277,"i":[{"h":124,"in":1}]},{"l":278,"i":[{"h":124,"in":1}]},{"l":279,"i":[{"h":124,"in":1}]},{"l":281,"i":[{"h":124,"in":1}]},{"l":282,"i":[{"h":124,"in":1}]},{"l":283,"i":[{"h":124,"in":1}]},{"l":284,"i":[{"h":124,"in":1}]},{"l":285,"i":[{"h":124,"in":1}]},{"l":287,"i":[{"h":0,"in":1}]},{"l":288,"i":[{"h":0,"in":1}]},{"l":291,"i":[{"h":0,"in":1}]},{"l":292,"i":[{"h":0,"in":1}]},{"l":295,"i":[{"h":0,"in":1}]},{"l":296,"i":[{"h":0,"in":1}]},{"l":299,"i":[{"h":0,"in":1}]},{"l":300,"i":[{"h":0,"in":1}]},{"l":303,"i":[{"h":18,"in":1}]},{"l":304,"i":[{"h":18,"in":1}]},{"l":308,"i":[{"h":803,"in":1}]},{"l":310,"i":[{"h":2,"in":1}]},{"l":311,"i":[{"h":2,"in":1}]},{"l":314,"i":[{"h":124,"in":1}]},{"l":315,"i":[{"h":124,"in":1}]},{"l":318,"i":[{"h":124,"in":1}]},{"l":319,"i":[{"h":124,"in":1}]},{"l":325,"i":[{"h":161,"in":1}]},{"l":329,"i":[{"h":753,"in":1}]},{"l":331,"i":[{"h":2,"in":1}]},{"l":332,"i":[{"h":2,"in":1}]},{"l":336,"i":[{"h":0,"in":1}]},{"l":337,"i":[{"h":0,"in":1}]},{"l":340,"i":[{"h":0,"in":1}]},{"l":347,"i":[{"h":251,"in":1}]},{"l":348,"i":[{"h":143,"in":1}]}],"mi":1}]},"33":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1","stmts":[{"f":11,"cov":[{"l":13,"i":[{"h":995,"in":1}]},{"l":15,"i":[{"h":2,"in":1}]},{"l":16,"i":[{"h":2,"in":1}]},{"l":17,"i":[{"h":2,"in":1}]},{"l":20,"i":[{"h":993,"in":1}]},{"l":21,"i":[{"h":993,"in":1}]},{"l":22,"i":[{"h":993,"in":1}]},{"l":25,"i":[{"h":372,"in":1}]},{"l":26,"i":[{"h":372,"in":1}]},{"l":27,"i":[{"h":372,"in":1}]},{"l":39,"i":[{"h":374,"in":1}]},{"l":41,"i":[{"h":1,"in":1}]},{"l":44,"i":[{"h":373,"in":1}]},{"l":48,"i":[{"h":1,"in":1}]},{"l":51,"i":[{"h":373,"in":1}]},{"l":74,"i":[{"h":2,"in":1}]},{"l":92,"i":[{"h":811,"in":1}]},{"l":97,"i":[{"h":313,"in":1}]},{"l":99,"i":[{"h":93,"in":1}]},{"l":101,"i":[{"h":220,"in":1}]},{"l":106,"i":[{"h":1261,"in":1}]},{"l":107,"i":[{"h":918,"in":1}]}],"mi":1}]},"35":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[13]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":271,"in":1}]},{"l":10,"i":[{"h":271,"in":1}]}],"mi":1}]},"36":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[12]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":357,"in":1}]},{"l":10,"i":[{"h":357,"in":1}]}],"mi":1}]},"37":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[11]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":443,"in":1}]},{"l":10,"i":[{"h":443,"in":1}]}],"mi":1}]},"38":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[10]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":543,"in":1}]},{"l":10,"i":[{"h":543,"in":1}]}],"mi":1}]},"39":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[9]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":494,"in":1}]},{"l":10,"i":[{"h":494,"in":1}]}],"mi":1}]},"40":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[8]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":469,"in":1}]},{"l":10,"i":[{"h":469,"in":1}]}],"mi":1}]},"41":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[7]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":393,"in":1}]},{"l":10,"i":[{"h":393,"in":1}]}],"mi":1}]},"42":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[10]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":477,"in":1}]},{"l":10,"i":[{"h":477,"in":1}]}],"mi":1}]},"43":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[9]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":553,"in":1}]},{"l":10,"i":[{"h":553,"in":1}]}],"mi":1}]},"44":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[8]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":428,"in":1}]},{"l":10,"i":[{"h":428,"in":1}]}],"mi":1}]},"45":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[7]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":416,"in":1}]},{"l":10,"i":[{"h":416,"in":1}]}],"mi":1}]},"46":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[6]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":349,"in":1}]},{"l":10,"i":[{"h":349,"in":1}]}],"mi":1}]},"47":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[5]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":295,"in":1}]},{"l":10,"i":[{"h":295,"in":1}]}],"mi":1}]},"48":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[7]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":197,"in":1}]},{"l":10,"i":[{"h":197,"in":1}]}],"mi":1}]},"49":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[6]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":232,"in":1}]},{"l":10,"i":[{"h":232,"in":1}]}],"mi":1}]},"50":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[5]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":269,"in":1}]},{"l":10,"i":[{"h":269,"in":1}]}],"mi":1}]},"51":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[4]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":228,"in":1}]},{"l":10,"i":[{"h":228,"in":1}]}],"mi":1}]},"52":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[3]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":285,"in":1}]},{"l":10,"i":[{"h":285,"in":1}]}],"mi":1}]},"53":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[2]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":247,"in":1}]},{"l":10,"i":[{"h":247,"in":1}]}],"mi":1}]},"54":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[9]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":374,"in":1}]},{"l":10,"i":[{"h":374,"in":1}]}],"mi":1}]},"55":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[8]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":247,"in":1}]},{"l":10,"i":[{"h":247,"in":1}]}],"mi":1}]},"56":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[7]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":245,"in":1}]},{"l":10,"i":[{"h":245,"in":1}]}],"mi":1}]},"57":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[6]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":258,"in":1}]},{"l":10,"i":[{"h":258,"in":1}]}],"mi":1}]},"58":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[5]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":266,"in":1}]},{"l":10,"i":[{"h":266,"in":1}]}],"mi":1}]},"59":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[4]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":262,"in":1}]},{"l":10,"i":[{"h":262,"in":1}]}],"mi":1}]},"60":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[3]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":280,"in":1}]},{"l":10,"i":[{"h":280,"in":1}]}],"mi":1}]},"61":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[7]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":230,"in":1}]},{"l":10,"i":[{"h":230,"in":1}]}],"mi":1}]},"62":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[6]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":244,"in":1}]},{"l":10,"i":[{"h":244,"in":1}]}],"mi":1}]},"63":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[5]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":186,"in":1}]},{"l":10,"i":[{"h":186,"in":1}]}],"mi":1}]},"64":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[4]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":219,"in":1}]},{"l":10,"i":[{"h":219,"in":1}]}],"mi":1}]},"65":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[3]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":240,"in":1}]},{"l":10,"i":[{"h":240,"in":1}]}],"mi":1}]},"66":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[2]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":228,"in":1}]},{"l":10,"i":[{"h":228,"in":1}]}],"mi":1}]},"67":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_first","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":192,"in":1}]},{"l":11,"i":[{"h":192,"in":1}]}],"mi":1}]},"68":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_last","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":222,"in":1}]},{"l":11,"i":[{"h":222,"in":1}]}],"mi":1}]},"69":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[7]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":268,"in":1}]},{"l":10,"i":[{"h":268,"in":1}]}],"mi":1}]},"70":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[6]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":207,"in":1}]},{"l":10,"i":[{"h":207,"in":1}]}],"mi":1}]},"71":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[5]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":214,"in":1}]},{"l":10,"i":[{"h":214,"in":1}]}],"mi":1}]},"72":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[4]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":227,"in":1}]},{"l":10,"i":[{"h":227,"in":1}]}],"mi":1}]},"73":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[3]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":226,"in":1}]},{"l":10,"i":[{"h":226,"in":1}]}],"mi":1}]},"74":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[2]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":224,"in":1}]},{"l":10,"i":[{"h":224,"in":1}]}],"mi":1}]},"75":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_first","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":169,"in":1}]},{"l":11,"i":[{"h":169,"in":1}]}],"mi":1}]},"76":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_last","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":190,"in":1}]},{"l":11,"i":[{"h":190,"in":1}]}],"mi":1}]},"77":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l1_b2","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":148,"in":1}]},{"l":11,"i":[{"h":148,"in":1}]}],"mi":1}]},"78":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b1","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":141,"in":1}]},{"l":11,"i":[{"h":141,"in":1}]}],"mi":1}]},"79":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b8","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":275,"in":1}]},{"l":11,"i":[{"h":275,"in":1}]}],"mi":1}]},"80":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b3","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":235,"in":1}]},{"l":11,"i":[{"h":235,"in":1}]}],"mi":1}]},"81":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b4","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":252,"in":1}]},{"l":11,"i":[{"h":252,"in":1}]}],"mi":1}]},"82":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b11","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":315,"in":1}]},{"l":11,"i":[{"h":315,"in":1}]}],"mi":1}]},"83":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b12","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":281,"in":1}]},{"l":11,"i":[{"h":281,"in":1}]}],"mi":1}]},"84":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b4","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":182,"in":1}]},{"l":11,"i":[{"h":182,"in":1}]}],"mi":1}]},"85":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b5","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":201,"in":1}]},{"l":11,"i":[{"h":201,"in":1}]}],"mi":1}]},"86":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b6","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":273,"in":1}]},{"l":11,"i":[{"h":273,"in":1}]}],"mi":1}]},"87":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b14","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":71,"in":1}]},{"l":11,"i":[{"h":71,"in":1}]}],"mi":1}]},"34":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca","stmts":[{"f":12,"cov":[{"l":28,"i":[{"h":243,"in":1,"gi":" (GI=0)"},{"h":196,"in":1,"gi":" (GI=1)"}]},{"l":29,"i":[{"h":189,"in":1,"gi":" (GI=0)"},{"h":191,"in":1,"gi":" (GI=1)"}]},{"l":56,"i":[{"h":273,"in":1}]},{"l":70,"i":[{"h":582,"in":1}]},{"l":75,"i":[{"h":28,"in":1}]},{"l":92,"i":[{"h":4,"in":1}]},{"l":107,"i":[{"h":833,"in":1}]},{"l":126,"i":[{"h":487,"in":1}]},{"l":139,"i":[{"h":1348,"in":1}]},{"l":161,"i":[{"h":1291,"in":1}]},{"l":164,"i":[{"h":1309,"in":1}]},{"l":167,"i":[{"h":980,"in":1}]},{"l":168,"i":[{"h":980,"in":1}]}],"mi":1}]},"88":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/add_EXPs","stmts":[{"f":15,"cov":[{"l":31,"i":[{"h":374,"in":1}]},{"l":32,"i":[{"h":374,"in":1}]},{"l":33,"i":[{"h":374,"in":1}]},{"l":34,"i":[{"h":374,"in":1}]},{"l":37,"i":[{"h":677,"in":1}]},{"l":38,"i":[{"h":3,"in":1}]},{"l":39,"i":[{"h":981,"in":1}]}],"mi":1}]},"89":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1","stmts":[{"f":18,"cov":[{"l":14,"i":[{"h":480,"in":1}]},{"l":16,"i":[{"h":480,"in":1}]},{"l":17,"i":[{"h":480,"in":1}]},{"l":20,"i":[{"h":480,"in":1}]},{"l":21,"i":[{"h":480,"in":1}]},{"l":24,"i":[{"h":480,"in":1}]},{"l":32,"i":[{"h":375,"in":1}]},{"l":34,"i":[{"h":131,"in":1}]},{"l":35,"i":[{"h":131,"in":1}]},{"l":36,"i":[{"h":131,"in":1}]},{"l":39,"i":[{"h":244,"in":1}]},{"l":40,"i":[{"h":244,"in":1}]},{"l":41,"i":[{"h":244,"in":1}]},{"l":49,"i":[{"h":375,"in":1}]},{"l":51,"i":[{"h":2,"in":1}]},{"l":53,"i":[{"h":373,"in":1}]},{"l":56,"i":[{"h":1,"in":1}]},{"l":58,"i":[{"h":374,"in":1}]},{"l":67,"i":[{"h":855,"in":1}]},{"l":68,"i":[{"h":855,"in":1}]},{"l":77,"i":[{"h":0,"in":1}]},{"l":80,"i":[{"h":366,"in":1}]},{"l":83,"i":[{"h":366,"in":1}]},{"l":84,"i":[{"h":366,"in":1}]},{"l":85,"i":[{"h":366,"in":1}]},{"l":86,"i":[{"h":366,"in":1}]},{"l":91,"i":[{"h":0,"in":1}]},{"l":94,"i":[{"h":489,"in":1}]},{"l":97,"i":[{"h":489,"in":1}]},{"l":98,"i":[{"h":489,"in":1}]},{"l":99,"i":[{"h":489,"in":1}]},{"l":100,"i":[{"h":489,"in":1}]},{"l":112,"i":[{"h":481,"in":1}]},{"l":114,"i":[{"h":58,"in":1}]},{"l":115,"i":[{"h":58,"in":1}]},{"l":116,"i":[{"h":58,"in":1}]},{"l":119,"i":[{"h":423,"in":1}]},{"l":120,"i":[{"h":423,"in":1}]},{"l":121,"i":[{"h":423,"in":1}]},{"l":124,"i":[{"h":481,"in":1}]},{"l":133,"i":[{"h":481,"in":1}]},{"l":135,"i":[{"h":2,"in":1}]},{"l":136,"i":[{"h":2,"in":1}]},{"l":137,"i":[{"h":2,"in":1}]},{"l":138,"i":[{"h":2,"in":1}]},{"l":139,"i":[{"h":2,"in":1}]},{"l":140,"i":[{"h":2,"in":1}]},{"l":141,"i":[{"h":2,"in":1}]},{"l":144,"i":[{"h":479,"in":1}]},{"l":145,"i":[{"h":479,"in":1}]},{"l":146,"i":[{"h":479,"in":1}]},{"l":147,"i":[{"h":479,"in":1}]},{"l":148,"i":[{"h":479,"in":1}]},{"l":149,"i":[{"h":479,"in":1}]},{"l":150,"i":[{"h":479,"in":1}]},{"l":154,"i":[{"h":480,"in":1}]},{"l":160,"i":[{"h":479,"in":1}]},{"l":161,"i":[{"h":479,"in":1}]},{"l":164,"i":[{"h":1,"in":1}]},{"l":165,"i":[{"h":1,"in":1}]},{"l":168,"i":[{"h":480,"in":1}]},{"l":172,"i":[{"h":835,"in":1}]},{"l":174,"i":[{"h":367,"in":1}]},{"l":176,"i":[{"h":468,"in":1}]},{"l":183,"i":[{"h":901,"in":1}]},{"l":185,"i":[{"h":901,"in":1}]},{"l":189,"i":[{"h":901,"in":1}]},{"l":223,"i":[{"h":530,"in":1}]},{"l":224,"i":[{"h":530,"in":1}]},{"l":225,"i":[{"h":530,"in":1}]},{"l":226,"i":[{"h":530,"in":1}]},{"l":228,"i":[{"h":529,"in":1}]},{"l":236,"i":[{"h":1486,"in":1}]},{"l":240,"i":[{"h":720,"in":1}]},{"l":241,"i":[{"h":720,"in":1}]},{"l":244,"i":[{"h":766,"in":1}]},{"l":245,"i":[{"h":766,"in":1}]},{"l":268,"i":[{"h":1018,"in":1}]},{"l":270,"i":[{"h":1018,"in":1}]},{"l":271,"i":[{"h":1018,"in":1}]},{"l":276,"i":[{"h":169,"in":1}]},{"l":277,"i":[{"h":169,"in":1}]},{"l":282,"i":[{"h":1018,"in":1}]},{"l":283,"i":[{"h":1018,"in":1}]},{"l":287,"i":[{"h":756,"in":1}]}],"mi":1}]},"90":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1/normalizer","stmts":[{"f":19,"cov":[{"l":23,"i":[{"h":480,"in":1}]},{"l":24,"i":[{"h":480,"in":1}]},{"l":25,"i":[{"h":480,"in":1}]},{"l":28,"i":[{"h":64,"in":1}]},{"l":29,"i":[{"h":64,"in":1}]},{"l":32,"i":[{"h":60,"in":1}]},{"l":33,"i":[{"h":60,"in":1}]},{"l":36,"i":[{"h":24,"in":1}]},{"l":37,"i":[{"h":24,"in":1}]},{"l":40,"i":[{"h":19,"in":1}]},{"l":41,"i":[{"h":19,"in":1}]},{"l":44,"i":[{"h":9,"in":1}]},{"l":45,"i":[{"h":9,"in":1}]},{"l":48,"i":[{"h":2,"in":1}]},{"l":49,"i":[{"h":2,"in":1}]},{"l":52,"i":[{"h":4,"in":1}]},{"l":53,"i":[{"h":4,"in":1}]},{"l":56,"i":[{"h":1,"in":1}]},{"l":57,"i":[{"h":1,"in":1}]},{"l":60,"i":[{"h":0,"in":1}]},{"l":61,"i":[{"h":0,"in":1}]},{"l":64,"i":[{"h":297,"in":1}]},{"l":65,"i":[{"h":297,"in":1}]}],"mi":1}]},"91":{"pr":"/lane_tb/dut/u_sqrt_sync","stmts":[{"f":20,"cov":[{"l":33,"i":[{"h":250,"in":1}]},{"l":36,"i":[{"h":499,"in":1}]},{"l":39,"i":[{"h":636,"in":1}]},{"l":43,"i":[{"h":382,"in":1}]},{"l":45,"i":[{"h":2,"in":1}]},{"l":46,"i":[{"h":2,"in":1}]},{"l":48,"i":[{"h":124,"in":1}]},{"l":49,"i":[{"h":124,"in":1}]},{"l":55,"i":[{"h":0,"in":1}]}],"mi":1}]},"92":{"pr":"/lane_tb/dut/u_sqrt_sync/u_fifo","stmts":[{"f":21,"cov":[{"l":18,"i":[{"h":474,"in":1}]},{"l":20,"i":[{"h":2,"in":1}]},{"l":23,"i":[{"h":124,"in":1}]},{"l":24,"i":[{"h":124,"in":1}]},{"l":29,"i":[{"h":375,"in":1}]},{"l":31,"i":[{"h":2,"in":1}]},{"l":34,"i":[{"h":124,"in":1}]},{"l":40,"i":[{"h":199,"in":1}]},{"l":41,"i":[{"h":250,"in":1}]},{"l":42,"i":[{"h":250,"in":1}]}],"mi":1}]},"94":{"pr":"/lane_tb/dut/u_seq_div","stmts":[{"f":4,"cov":[{"l":30,"i":[{"h":1104,"in":1}]},{"l":36,"i":[{"h":712,"in":1}]},{"l":38,"i":[{"h":712,"in":1}]},{"l":40,"i":[{"h":712,"in":1}]},{"l":43,"i":[{"h":712,"in":1}]},{"l":44,"i":[{"h":712,"in":1}]},{"l":45,"i":[{"h":712,"in":1}]},{"l":48,"i":[{"h":712,"in":1}]},{"l":49,"i":[{"h":712,"in":1}]},{"l":50,"i":[{"h":712,"in":1}]},{"l":55,"i":[{"h":712,"in":1}]},{"l":58,"i":[{"h":712,"in":1}]},{"l":64,"i":[{"h":813,"in":1}]},{"l":66,"i":[{"h":2,"in":1}]},{"l":67,"i":[{"h":2,"in":1}]},{"l":68,"i":[{"h":2,"in":1}]},{"l":70,"i":[{"h":811,"in":1}]},{"l":74,"i":[{"h":431,"in":1}]},{"l":78,"i":[{"h":142,"in":1}]},{"l":82,"i":[{"h":284,"in":1}]},{"l":91,"i":[{"h":1125,"in":1}]},{"l":92,"i":[{"h":1125,"in":1}]},{"l":93,"i":[{"h":1125,"in":1}]},{"l":94,"i":[{"h":1125,"in":1}]},{"l":99,"i":[{"h":427,"in":1}]},{"l":103,"i":[{"h":142,"in":1}]},{"l":109,"i":[{"h":696,"in":1}]},{"l":114,"i":[{"h":224,"in":1}]},{"l":117,"i":[{"h":168,"in":1}]}],"mi":1}]},"95":{"pr":"/lane_tb/dut/u_div","stmts":[{"f":22,"cov":[{"l":33,"i":[{"h":992,"in":1}]},{"l":35,"i":[{"h":1398,"in":1}]},{"l":37,"i":[{"h":2,"in":1}]},{"l":40,"i":[{"h":1396,"in":1}]},{"l":48,"i":[{"h":804634,"in":1}]},{"l":50,"i":[{"h":6,"in":1}]},{"l":51,"i":[{"h":6,"in":1}]},{"l":52,"i":[{"h":6,"in":1}]},{"l":54,"i":[{"h":1,"in":1}]},{"l":55,"i":[{"h":804628,"in":1}]},{"l":58,"i":[{"h":108,"in":1}]},{"l":59,"i":[{"h":108,"in":1}]},{"l":61,"i":[{"h":108,"in":1}]},{"l":62,"i":[{"h":108,"in":1}]},{"l":84,"i":[{"h":990,"in":1}]},{"l":101,"i":[{"h":646,"in":1}]},{"l":104,"i":[{"h":108,"in":1}]},{"l":105,"i":[{"h":108,"in":1}]},{"l":108,"i":[{"h":538,"in":1}]},{"l":109,"i":[{"h":538,"in":1}]},{"l":113,"i":[{"h":111,"in":1}]},{"l":115,"i":[{"h":2,"in":1}]},{"l":116,"i":[{"h":2,"in":1}]},{"l":118,"i":[{"h":109,"in":1}]},{"l":119,"i":[{"h":109,"in":1}]},{"l":129,"i":[{"h":110,"in":1}]},{"l":130,"i":[{"h":109,"in":1}]},{"l":134,"i":[{"h":2,"in":1}]},{"l":141,"i":[{"h":2,"in":1}]},{"l":142,"i":[{"h":2,"in":1}]},{"l":143,"i":[{"h":110,"in":1}]},{"l":144,"i":[{"h":109,"in":1}]},{"l":145,"i":[{"h":110,"in":1}]},{"l":146,"i":[{"h":109,"in":1}]},{"l":150,"i":[{"h":2,"in":1}]},{"l":151,"i":[{"h":3,"in":1}]},{"l":152,"i":[{"h":3,"in":1}]},{"l":153,"i":[{"h":2,"in":1}]},{"l":158,"i":[{"h":2,"in":1}]},{"l":180,"i":[{"h":3,"in":1}]},{"l":182,"i":[{"h":0,"in":1}]},{"l":183,"i":[{"h":0,"in":1}]},{"l":185,"i":[{"h":0,"in":1}]},{"l":186,"i":[{"h":0,"in":1}]},{"l":188,"i":[{"h":0,"in":1}]},{"l":189,"i":[{"h":0,"in":1}]},{"l":191,"i":[{"h":3,"in":1}]},{"l":192,"i":[{"h":3,"in":1}]},{"l":195,"i":[{"h":2,"in":1}]},{"l":198,"i":[{"h":4,"in":1}]},{"l":199,"i":[{"h":2,"in":1}]},{"l":202,"i":[{"h":4,"in":1}]},{"l":204,"i":[{"h":3,"in":1}]},{"l":206,"i":[{"h":0,"in":1}]},{"l":208,"i":[{"h":0,"in":1}]},{"l":210,"i":[{"h":1,"in":1}]}],"mi":1}]},"96":{"pr":"/lane_tb/dut/u_div/m_div","stmts":[{"f":22,"cov":[{"l":236,"i":[{"h":3,"in":1}]},{"l":238,"i":[{"h":2,"in":1}]},{"l":239,"i":[{"h":2,"in":1}]},{"l":240,"i":[{"h":2,"in":1}]},{"l":241,"i":[{"h":2,"in":1}]},{"l":242,"i":[{"h":2,"in":1}]},{"l":244,"i":[{"h":1,"in":1}]},{"l":245,"i":[{"h":1,"in":1}]},{"l":246,"i":[{"h":1,"in":1}]},{"l":247,"i":[{"h":1,"in":1}]},{"l":248,"i":[{"h":1,"in":1}]},{"l":252,"i":[{"h":111,"in":1}]},{"l":253,"i":[{"h":111,"in":1}]},{"l":254,"i":[{"h":111,"in":1}]},{"l":255,"i":[{"h":111,"in":1}]},{"l":256,"i":[{"h":111,"in":1}]},{"l":257,"i":[{"h":111,"in":1}]},{"l":261,"i":[{"h":0,"in":1}]},{"l":262,"i":[{"h":0,"in":1}]},{"l":263,"i":[{"h":0,"in":1}]},{"l":265,"i":[{"h":0,"in":1}]},{"l":266,"i":[{"h":0,"in":1}]},{"l":270,"i":[{"h":0,"in":1}]},{"l":271,"i":[{"h":0,"in":1}]},{"l":272,"i":[{"h":0,"in":1}]},{"l":273,"i":[{"h":0,"in":1}]},{"l":279,"i":[{"h":2,"in":1}]}],"mi":1}]},"97":{"pr":"/lane_tb/dut/u_div_sync","stmts":[{"f":20,"cov":[{"l":33,"i":[{"h":219,"in":1}]},{"l":36,"i":[{"h":436,"in":1}]},{"l":39,"i":[{"h":423,"in":1}]},{"l":43,"i":[{"h":339,"in":1}]},{"l":45,"i":[{"h":2,"in":1}]},{"l":46,"i":[{"h":2,"in":1}]},{"l":48,"i":[{"h":108,"in":1}]},{"l":49,"i":[{"h":108,"in":1}]},{"l":55,"i":[{"h":0,"in":1}]}],"mi":1}]},"98":{"pr":"/lane_tb/dut/u_div_sync/u_fifo","stmts":[{"f":21,"cov":[{"l":18,"i":[{"h":445,"in":1}]},{"l":20,"i":[{"h":2,"in":1}]},{"l":23,"i":[{"h":108,"in":1}]},{"l":24,"i":[{"h":108,"in":1}]},{"l":29,"i":[{"h":327,"in":1}]},{"l":31,"i":[{"h":2,"in":1}]},{"l":34,"i":[{"h":108,"in":1}]},{"l":40,"i":[{"h":218,"in":1}]},{"l":41,"i":[{"h":218,"in":1}]},{"l":42,"i":[{"h":218,"in":1}]}],"mi":1}]},"100":{"pr":"/lane_tb/dut/u_seq_mul","stmts":[{"f":4,"cov":[{"l":30,"i":[{"h":1030,"in":1}]},{"l":36,"i":[{"h":712,"in":1}]},{"l":38,"i":[{"h":712,"in":1}]},{"l":40,"i":[{"h":712,"in":1}]},{"l":43,"i":[{"h":712,"in":1}]},{"l":44,"i":[{"h":712,"in":1}]},{"l":45,"i":[{"h":712,"in":1}]},{"l":48,"i":[{"h":712,"in":1}]},{"l":49,"i":[{"h":712,"in":1}]},{"l":50,"i":[{"h":712,"in":1}]},{"l":55,"i":[{"h":712,"in":1}]},{"l":58,"i":[{"h":712,"in":1}]},{"l":64,"i":[{"h":750,"in":1}]},{"l":66,"i":[{"h":2,"in":1}]},{"l":67,"i":[{"h":2,"in":1}]},{"l":68,"i":[{"h":2,"in":1}]},{"l":70,"i":[{"h":748,"in":1}]},{"l":74,"i":[{"h":430,"in":1}]},{"l":78,"i":[{"h":142,"in":1}]},{"l":82,"i":[{"h":284,"in":1}]},{"l":91,"i":[{"h":990,"in":1}]},{"l":92,"i":[{"h":990,"in":1}]},{"l":93,"i":[{"h":990,"in":1}]},{"l":94,"i":[{"h":990,"in":1}]},{"l":99,"i":[{"h":427,"in":1}]},{"l":103,"i":[{"h":142,"in":1}]},{"l":109,"i":[{"h":561,"in":1}]},{"l":114,"i":[{"h":207,"in":1}]},{"l":117,"i":[{"h":143,"in":1}]}],"mi":1}]},"101":{"pr":"/lane_tb/dut/u_mul","stmts":[{"f":10,"cov":[{"l":47,"i":[{"h":371,"in":1}]},{"l":51,"i":[{"h":371,"in":1}]},{"l":56,"i":[{"h":717,"in":1}]},{"l":58,"i":[{"h":2,"in":1}]},{"l":59,"i":[{"h":2,"in":1}]},{"l":60,"i":[{"h":2,"in":1}]},{"l":61,"i":[{"h":2,"in":1}]},{"l":62,"i":[{"h":2,"in":1}]},{"l":64,"i":[{"h":715,"in":1}]},{"l":67,"i":[{"h":715,"in":1}]},{"l":74,"i":[{"h":123,"in":1}]},{"l":75,"i":[{"h":123,"in":1}]},{"l":76,"i":[{"h":123,"in":1}]},{"l":81,"i":[{"h":123,"in":1}]},{"l":89,"i":[{"h":663,"in":1}]},{"l":90,"i":[{"h":663,"in":1}]},{"l":97,"i":[{"h":123,"in":1}]},{"l":105,"i":[{"h":130,"in":1}]},{"l":115,"i":[{"h":123,"in":1}]}],"mi":1}]},"102":{"pr":"/lane_tb/dut/u_mul/u_mul_core","stmts":[{"f":11,"cov":[{"l":13,"i":[{"h":249,"in":1}]},{"l":15,"i":[{"h":2,"in":1}]},{"l":16,"i":[{"h":2,"in":1}]},{"l":17,"i":[{"h":2,"in":1}]},{"l":20,"i":[{"h":247,"in":1}]},{"l":21,"i":[{"h":247,"in":1}]},{"l":22,"i":[{"h":247,"in":1}]},{"l":25,"i":[{"h":123,"in":1}]},{"l":26,"i":[{"h":123,"in":1}]},{"l":27,"i":[{"h":123,"in":1}]},{"l":39,"i":[{"h":119,"in":1}]},{"l":41,"i":[{"h":16,"in":1}]},{"l":44,"i":[{"h":103,"in":1}]},{"l":48,"i":[{"h":10,"in":1}]},{"l":51,"i":[{"h":109,"in":1}]},{"l":74,"i":[{"h":2,"in":1}]},{"l":92,"i":[{"h":415,"in":1}]},{"l":97,"i":[{"h":164,"in":1}]},{"l":99,"i":[{"h":73,"in":1}]},{"l":101,"i":[{"h":91,"in":1}]},{"l":106,"i":[{"h":546,"in":1}]},{"l":107,"i":[{"h":346,"in":1}]}],"mi":1}]},"104":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[13]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":152,"in":1}]},{"l":10,"i":[{"h":152,"in":1}]}],"mi":1}]},"105":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[12]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":216,"in":1}]},{"l":10,"i":[{"h":216,"in":1}]}],"mi":1}]},"106":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[11]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":219,"in":1}]},{"l":10,"i":[{"h":219,"in":1}]}],"mi":1}]},"107":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[10]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":259,"in":1}]},{"l":10,"i":[{"h":259,"in":1}]}],"mi":1}]},"108":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[9]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":237,"in":1}]},{"l":10,"i":[{"h":237,"in":1}]}],"mi":1}]},"109":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[8]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":249,"in":1}]},{"l":10,"i":[{"h":249,"in":1}]}],"mi":1}]},"110":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[7]/fa_s4_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":201,"in":1}]},{"l":10,"i":[{"h":201,"in":1}]}],"mi":1}]},"111":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[10]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":228,"in":1}]},{"l":10,"i":[{"h":228,"in":1}]}],"mi":1}]},"112":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[9]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":251,"in":1}]},{"l":10,"i":[{"h":251,"in":1}]}],"mi":1}]},"113":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[8]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":215,"in":1}]},{"l":10,"i":[{"h":215,"in":1}]}],"mi":1}]},"114":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[7]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":201,"in":1}]},{"l":10,"i":[{"h":201,"in":1}]}],"mi":1}]},"115":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[6]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":161,"in":1}]},{"l":10,"i":[{"h":161,"in":1}]}],"mi":1}]},"116":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[5]/fa_s3_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":134,"in":1}]},{"l":10,"i":[{"h":134,"in":1}]}],"mi":1}]},"117":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[7]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":116,"in":1}]},{"l":10,"i":[{"h":116,"in":1}]}],"mi":1}]},"118":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[6]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":147,"in":1}]},{"l":10,"i":[{"h":147,"in":1}]}],"mi":1}]},"119":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[5]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":129,"in":1}]},{"l":10,"i":[{"h":129,"in":1}]}],"mi":1}]},"120":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[4]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":118,"in":1}]},{"l":10,"i":[{"h":118,"in":1}]}],"mi":1}]},"121":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[3]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":119,"in":1}]},{"l":10,"i":[{"h":119,"in":1}]}],"mi":1}]},"122":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[2]/fa_s2_l2","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":127,"in":1}]},{"l":10,"i":[{"h":127,"in":1}]}],"mi":1}]},"123":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[9]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":142,"in":1}]},{"l":10,"i":[{"h":142,"in":1}]}],"mi":1}]},"124":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[8]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":115,"in":1}]},{"l":10,"i":[{"h":115,"in":1}]}],"mi":1}]},"125":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[7]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":120,"in":1}]},{"l":10,"i":[{"h":120,"in":1}]}],"mi":1}]},"126":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[6]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":100,"in":1}]},{"l":10,"i":[{"h":100,"in":1}]}],"mi":1}]},"127":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[5]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":96,"in":1}]},{"l":10,"i":[{"h":96,"in":1}]}],"mi":1}]},"128":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[4]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":102,"in":1}]},{"l":10,"i":[{"h":102,"in":1}]}],"mi":1}]},"129":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[3]/fa_s2_l1","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":138,"in":1}]},{"l":10,"i":[{"h":138,"in":1}]}],"mi":1}]},"130":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[7]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":114,"in":1}]},{"l":10,"i":[{"h":114,"in":1}]}],"mi":1}]},"131":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[6]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":92,"in":1}]},{"l":10,"i":[{"h":92,"in":1}]}],"mi":1}]},"132":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[5]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":92,"in":1}]},{"l":10,"i":[{"h":92,"in":1}]}],"mi":1}]},"133":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[4]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":90,"in":1}]},{"l":10,"i":[{"h":90,"in":1}]}],"mi":1}]},"134":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[3]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":92,"in":1}]},{"l":10,"i":[{"h":92,"in":1}]}],"mi":1}]},"135":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[2]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":97,"in":1}]},{"l":10,"i":[{"h":97,"in":1}]}],"mi":1}]},"136":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_first","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":86,"in":1}]},{"l":11,"i":[{"h":86,"in":1}]}],"mi":1}]},"137":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_last","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":87,"in":1}]},{"l":11,"i":[{"h":87,"in":1}]}],"mi":1}]},"138":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[7]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":113,"in":1}]},{"l":10,"i":[{"h":113,"in":1}]}],"mi":1}]},"139":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[6]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":87,"in":1}]},{"l":10,"i":[{"h":87,"in":1}]}],"mi":1}]},"140":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[5]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":85,"in":1}]},{"l":10,"i":[{"h":85,"in":1}]}],"mi":1}]},"141":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[4]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":92,"in":1}]},{"l":10,"i":[{"h":92,"in":1}]}],"mi":1}]},"142":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[3]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":94,"in":1}]},{"l":10,"i":[{"h":94,"in":1}]}],"mi":1}]},"143":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[2]/fa_00","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":89,"in":1}]},{"l":10,"i":[{"h":89,"in":1}]}],"mi":1}]},"144":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_first","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":69,"in":1}]},{"l":11,"i":[{"h":69,"in":1}]}],"mi":1}]},"145":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_last","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":92,"in":1}]},{"l":11,"i":[{"h":92,"in":1}]}],"mi":1}]},"146":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l1_b2","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":71,"in":1}]},{"l":11,"i":[{"h":71,"in":1}]}],"mi":1}]},"147":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b1","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":93,"in":1}]},{"l":11,"i":[{"h":93,"in":1}]}],"mi":1}]},"148":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b8","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":103,"in":1}]},{"l":11,"i":[{"h":103,"in":1}]}],"mi":1}]},"149":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b3","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":135,"in":1}]},{"l":11,"i":[{"h":135,"in":1}]}],"mi":1}]},"150":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b4","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":107,"in":1}]},{"l":11,"i":[{"h":107,"in":1}]}],"mi":1}]},"151":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b11","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":183,"in":1}]},{"l":11,"i":[{"h":183,"in":1}]}],"mi":1}]},"152":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b12","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":144,"in":1}]},{"l":11,"i":[{"h":144,"in":1}]}],"mi":1}]},"153":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b4","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":91,"in":1}]},{"l":11,"i":[{"h":91,"in":1}]}],"mi":1}]},"154":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b5","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":108,"in":1}]},{"l":11,"i":[{"h":108,"in":1}]}],"mi":1}]},"155":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b6","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":143,"in":1}]},{"l":11,"i":[{"h":143,"in":1}]}],"mi":1}]},"156":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b14","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":82,"in":1}]},{"l":11,"i":[{"h":82,"in":1}]}],"mi":1}]},"103":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca","stmts":[{"f":12,"cov":[{"l":28,"i":[{"h":101,"in":1,"gi":" (GI=0)"},{"h":106,"in":1,"gi":" (GI=1)"}]},{"l":29,"i":[{"h":89,"in":1,"gi":" (GI=0)"},{"h":86,"in":1,"gi":" (GI=1)"}]},{"l":56,"i":[{"h":109,"in":1}]},{"l":70,"i":[{"h":266,"in":1}]},{"l":75,"i":[{"h":20,"in":1}]},{"l":92,"i":[{"h":43,"in":1}]},{"l":107,"i":[{"h":376,"in":1}]},{"l":126,"i":[{"h":274,"in":1}]},{"l":139,"i":[{"h":657,"in":1}]},{"l":161,"i":[{"h":652,"in":1}]},{"l":164,"i":[{"h":660,"in":1}]},{"l":167,"i":[{"h":502,"in":1}]},{"l":168,"i":[{"h":502,"in":1}]}],"mi":1}]},"157":{"pr":"/lane_tb/dut/u_mul/u_mul_core/add_EXPs","stmts":[{"f":15,"cov":[{"l":31,"i":[{"h":119,"in":1}]},{"l":32,"i":[{"h":119,"in":1}]},{"l":33,"i":[{"h":119,"in":1}]},{"l":34,"i":[{"h":119,"in":1}]},{"l":37,"i":[{"h":193,"in":1}]},{"l":38,"i":[{"h":2,"in":1}]},{"l":39,"i":[{"h":250,"in":1}]}],"mi":1}]},"158":{"pr":"/lane_tb/dut/u_mul_sync","stmts":[{"f":20,"cov":[{"l":33,"i":[{"h":248,"in":1}]},{"l":36,"i":[{"h":495,"in":1}]},{"l":39,"i":[{"h":596,"in":1}]},{"l":43,"i":[{"h":429,"in":1}]},{"l":45,"i":[{"h":2,"in":1}]},{"l":46,"i":[{"h":2,"in":1}]},{"l":48,"i":[{"h":123,"in":1}]},{"l":49,"i":[{"h":123,"in":1}]},{"l":55,"i":[{"h":0,"in":1}]}],"mi":1}]},"159":{"pr":"/lane_tb/dut/u_mul_sync/u_fifo","stmts":[{"f":21,"cov":[{"l":18,"i":[{"h":445,"in":1}]},{"l":20,"i":[{"h":2,"in":1}]},{"l":23,"i":[{"h":123,"in":1}]},{"l":24,"i":[{"h":123,"in":1}]},{"l":29,"i":[{"h":372,"in":1}]},{"l":31,"i":[{"h":2,"in":1}]},{"l":34,"i":[{"h":123,"in":1}]},{"l":40,"i":[{"h":206,"in":1}]},{"l":41,"i":[{"h":248,"in":1}]},{"l":42,"i":[{"h":248,"in":1}]}],"mi":1}]},"161":{"pr":"/lane_tb/dut/u_seq_valu","stmts":[{"f":4,"cov":[{"l":30,"i":[{"h":1035,"in":1}]},{"l":36,"i":[{"h":715,"in":1}]},{"l":38,"i":[{"h":715,"in":1}]},{"l":40,"i":[{"h":715,"in":1}]},{"l":43,"i":[{"h":715,"in":1}]},{"l":44,"i":[{"h":715,"in":1}]},{"l":45,"i":[{"h":715,"in":1}]},{"l":48,"i":[{"h":715,"in":1}]},{"l":49,"i":[{"h":715,"in":1}]},{"l":50,"i":[{"h":715,"in":1}]},{"l":55,"i":[{"h":715,"in":1}]},{"l":58,"i":[{"h":715,"in":1}]},{"l":64,"i":[{"h":756,"in":1}]},{"l":66,"i":[{"h":2,"in":1}]},{"l":67,"i":[{"h":2,"in":1}]},{"l":68,"i":[{"h":2,"in":1}]},{"l":70,"i":[{"h":754,"in":1}]},{"l":74,"i":[{"h":432,"in":1}]},{"l":78,"i":[{"h":143,"in":1}]},{"l":82,"i":[{"h":285,"in":1}]},{"l":91,"i":[{"h":998,"in":1}]},{"l":92,"i":[{"h":998,"in":1}]},{"l":93,"i":[{"h":998,"in":1}]},{"l":94,"i":[{"h":998,"in":1}]},{"l":99,"i":[{"h":428,"in":1}]},{"l":103,"i":[{"h":143,"in":1}]},{"l":109,"i":[{"h":568,"in":1}]},{"l":114,"i":[{"h":210,"in":1}]},{"l":117,"i":[{"h":144,"in":1}]}],"mi":1}]},"162":{"pr":"/lane_tb/dut/u_valu","stmts":[{"f":23,"cov":[{"l":52,"i":[{"h":932,"in":1}]},{"l":59,"i":[{"h":669,"in":1}]},{"l":61,"i":[{"h":2,"in":1}]},{"l":65,"i":[{"h":125,"in":1}]},{"l":68,"i":[{"h":125,"in":1}]},{"l":78,"i":[{"h":555,"in":1}]},{"l":79,"i":[{"h":555,"in":1}]},{"l":80,"i":[{"h":555,"in":1}]},{"l":81,"i":[{"h":555,"in":1}]},{"l":84,"i":[{"h":555,"in":1}]},{"l":85,"i":[{"h":555,"in":1}]},{"l":88,"i":[{"h":555,"in":1}]},{"l":94,"i":[{"h":565,"in":1}]},{"l":96,"i":[{"h":2,"in":1}]},{"l":97,"i":[{"h":2,"in":1}]},{"l":98,"i":[{"h":2,"in":1}]},{"l":99,"i":[{"h":2,"in":1}]},{"l":100,"i":[{"h":2,"in":1}]},{"l":103,"i":[{"h":125,"in":1}]},{"l":104,"i":[{"h":125,"in":1}]},{"l":105,"i":[{"h":125,"in":1}]},{"l":106,"i":[{"h":125,"in":1}]},{"l":109,"i":[{"h":563,"in":1}]},{"l":114,"i":[{"h":253,"in":1}]},{"l":116,"i":[{"h":2,"in":1}]},{"l":117,"i":[{"h":2,"in":1}]},{"l":118,"i":[{"h":2,"in":1}]},{"l":119,"i":[{"h":2,"in":1}]},{"l":120,"i":[{"h":2,"in":1}]},{"l":122,"i":[{"h":251,"in":1}]},{"l":123,"i":[{"h":251,"in":1}]},{"l":124,"i":[{"h":251,"in":1}]},{"l":125,"i":[{"h":251,"in":1}]},{"l":126,"i":[{"h":251,"in":1}]},{"l":133,"i":[{"h":366,"in":1}]},{"l":135,"i":[{"h":0,"in":1}]},{"l":138,"i":[{"h":0,"in":1}]},{"l":139,"i":[{"h":0,"in":1}]},{"l":140,"i":[{"h":365,"in":1}]},{"l":141,"i":[{"h":1,"in":1}]},{"l":149,"i":[{"h":804634,"in":1}]},{"l":151,"i":[{"h":6,"in":1}]},{"l":152,"i":[{"h":6,"in":1}]},{"l":156,"i":[{"h":125,"in":1}]},{"l":163,"i":[{"h":125,"in":1}]},{"l":164,"i":[{"h":125,"in":1}]},{"l":170,"i":[{"h":127,"in":1}]}],"mi":1}]},"163":{"pr":"/lane_tb/dut/u_valu/adder","stmts":[{"f":24,"cov":[{"l":14,"i":[{"h":127,"in":1}]},{"l":16,"i":[{"h":127,"in":1}]},{"l":18,"i":[{"h":127,"in":1}]},{"l":19,"i":[{"h":127,"in":1}]},{"l":22,"i":[{"h":127,"in":1}]},{"l":23,"i":[{"h":127,"in":1}]},{"l":26,"i":[{"h":127,"in":1}]},{"l":34,"i":[{"h":123,"in":1}]},{"l":36,"i":[{"h":40,"in":1}]},{"l":37,"i":[{"h":40,"in":1}]},{"l":38,"i":[{"h":40,"in":1}]},{"l":41,"i":[{"h":83,"in":1}]},{"l":42,"i":[{"h":83,"in":1}]},{"l":43,"i":[{"h":83,"in":1}]},{"l":51,"i":[{"h":123,"in":1}]},{"l":53,"i":[{"h":16,"in":1}]},{"l":55,"i":[{"h":107,"in":1}]},{"l":58,"i":[{"h":21,"in":1}]},{"l":60,"i":[{"h":102,"in":1}]},{"l":69,"i":[{"h":237,"in":1}]},{"l":70,"i":[{"h":237,"in":1}]},{"l":76,"i":[{"h":16,"in":1}]},{"l":79,"i":[{"h":59,"in":1}]},{"l":82,"i":[{"h":75,"in":1}]},{"l":83,"i":[{"h":75,"in":1}]},{"l":84,"i":[{"h":75,"in":1}]},{"l":85,"i":[{"h":75,"in":1}]},{"l":90,"i":[{"h":16,"in":1}]},{"l":93,"i":[{"h":146,"in":1}]},{"l":96,"i":[{"h":162,"in":1}]},{"l":97,"i":[{"h":162,"in":1}]},{"l":98,"i":[{"h":162,"in":1}]},{"l":99,"i":[{"h":162,"in":1}]},{"l":111,"i":[{"h":125,"in":1}]},{"l":113,"i":[{"h":7,"in":1}]},{"l":114,"i":[{"h":7,"in":1}]},{"l":115,"i":[{"h":7,"in":1}]},{"l":118,"i":[{"h":118,"in":1}]},{"l":119,"i":[{"h":118,"in":1}]},{"l":120,"i":[{"h":118,"in":1}]},{"l":123,"i":[{"h":125,"in":1}]},{"l":132,"i":[{"h":125,"in":1}]},{"l":134,"i":[{"h":2,"in":1}]},{"l":135,"i":[{"h":2,"in":1}]},{"l":136,"i":[{"h":2,"in":1}]},{"l":137,"i":[{"h":2,"in":1}]},{"l":138,"i":[{"h":2,"in":1}]},{"l":139,"i":[{"h":2,"in":1}]},{"l":140,"i":[{"h":2,"in":1}]},{"l":143,"i":[{"h":123,"in":1}]},{"l":144,"i":[{"h":123,"in":1}]},{"l":145,"i":[{"h":123,"in":1}]},{"l":146,"i":[{"h":123,"in":1}]},{"l":147,"i":[{"h":123,"in":1}]},{"l":148,"i":[{"h":123,"in":1}]},{"l":149,"i":[{"h":123,"in":1}]},{"l":153,"i":[{"h":251,"in":1}]},{"l":160,"i":[{"h":2,"in":1}]},{"l":161,"i":[{"h":2,"in":1}]},{"l":164,"i":[{"h":249,"in":1}]},{"l":165,"i":[{"h":249,"in":1}]},{"l":169,"i":[{"h":4,"in":1}]},{"l":171,"i":[{"h":251,"in":1}]},{"l":175,"i":[{"h":221,"in":1}]},{"l":177,"i":[{"h":69,"in":1}]},{"l":179,"i":[{"h":152,"in":1}]},{"l":186,"i":[{"h":286,"in":1}]},{"l":188,"i":[{"h":286,"in":1}]},{"l":192,"i":[{"h":286,"in":1}]},{"l":209,"i":[{"h":181,"in":1}]},{"l":210,"i":[{"h":181,"in":1}]},{"l":211,"i":[{"h":181,"in":1}]},{"l":212,"i":[{"h":181,"in":1}]},{"l":222,"i":[{"h":425,"in":1}]},{"l":226,"i":[{"h":0,"in":1}]},{"l":227,"i":[{"h":0,"in":1}]},{"l":230,"i":[{"h":425,"in":1}]},{"l":231,"i":[{"h":425,"in":1}]},{"l":252,"i":[{"h":313,"in":1}]},{"l":255,"i":[{"h":313,"in":1}]},{"l":260,"i":[{"h":58,"in":1}]},{"l":265,"i":[{"h":313,"in":1}]},{"l":266,"i":[{"h":313,"in":1}]},{"l":270,"i":[{"h":127,"in":1}]},{"l":272,"i":[{"h":376,"in":1}]},{"l":275,"i":[{"h":0,"in":1}]},{"l":278,"i":[{"h":0,"in":1}]},{"l":281,"i":[{"h":0,"in":1}]},{"l":283,"i":[{"h":0,"in":1}]},{"l":286,"i":[{"h":63,"in":1}]},{"l":289,"i":[{"h":313,"in":1}]}],"mi":1}]},"164":{"pr":"/lane_tb/dut/u_valu/adder/normalizer","stmts":[{"f":19,"cov":[{"l":23,"i":[{"h":123,"in":1}]},{"l":24,"i":[{"h":123,"in":1}]},{"l":25,"i":[{"h":123,"in":1}]},{"l":28,"i":[{"h":27,"in":1}]},{"l":29,"i":[{"h":27,"in":1}]},{"l":32,"i":[{"h":12,"in":1}]},{"l":33,"i":[{"h":12,"in":1}]},{"l":36,"i":[{"h":1,"in":1}]},{"l":37,"i":[{"h":1,"in":1}]},{"l":40,"i":[{"h":2,"in":1}]},{"l":41,"i":[{"h":2,"in":1}]},{"l":44,"i":[{"h":1,"in":1}]},{"l":45,"i":[{"h":1,"in":1}]},{"l":48,"i":[{"h":0,"in":1}]},{"l":49,"i":[{"h":0,"in":1}]},{"l":52,"i":[{"h":0,"in":1}]},{"l":53,"i":[{"h":0,"in":1}]},{"l":56,"i":[{"h":0,"in":1}]},{"l":57,"i":[{"h":0,"in":1}]},{"l":60,"i":[{"h":0,"in":1}]},{"l":61,"i":[{"h":0,"in":1}]},{"l":64,"i":[{"h":80,"in":1}]},{"l":65,"i":[{"h":80,"in":1}]}],"mi":1}]},"165":{"pr":"/lane_tb/dut/u_valu_sync","stmts":[{"f":20,"cov":[{"l":33,"i":[{"h":252,"in":1}]},{"l":36,"i":[{"h":436,"in":1}]},{"l":39,"i":[{"h":504,"in":1}]},{"l":43,"i":[{"h":436,"in":1}]},{"l":45,"i":[{"h":2,"in":1}]},{"l":46,"i":[{"h":2,"in":1}]},{"l":48,"i":[{"h":125,"in":1}]},{"l":49,"i":[{"h":125,"in":1}]},{"l":55,"i":[{"h":0,"in":1}]}],"mi":1}]},"166":{"pr":"/lane_tb/dut/u_valu_sync/u_fifo","stmts":[{"f":21,"cov":[{"l":18,"i":[{"h":451,"in":1}]},{"l":20,"i":[{"h":2,"in":1}]},{"l":23,"i":[{"h":125,"in":1}]},{"l":24,"i":[{"h":125,"in":1}]},{"l":29,"i":[{"h":377,"in":1}]},{"l":31,"i":[{"h":2,"in":1}]},{"l":34,"i":[{"h":125,"in":1}]},{"l":40,"i":[{"h":200,"in":1}]},{"l":41,"i":[{"h":252,"in":1}]},{"l":42,"i":[{"h":252,"in":1}]}],"mi":1}]},"27":{"pr":"/lane_tb","stmts":[{"f":2,"cov":[{"l":27,"i":[{"h":1,"in":1}]},{"l":28,"i":[{"h":1,"in":1},{"h":1609266,"in":2},{"h":1609265,"in":3}]},{"l":33,"i":[{"h":1,"in":1}]},{"l":34,"i":[{"h":1,"in":1}]},{"l":35,"i":[{"h":1,"in":1}]},{"l":86,"i":[{"h":1,"in":1}]},{"l":87,"i":[{"h":1,"in":1}]},{"l":90,"i":[{"h":1,"in":1}]},{"l":91,"i":[{"h":1,"in":1}]},{"l":94,"i":[{"h":1,"in":1}]},{"l":95,"i":[{"h":1,"in":1}]},{"l":96,"i":[{"h":1,"in":1}]},{"l":97,"i":[{"h":1,"in":1}]},{"l":103,"i":[{"h":804634,"in":1}]},{"l":107,"i":[{"h":804586,"in":1}]},{"l":108,"i":[{"h":804586,"in":1}]},{"l":111,"i":[{"h":3,"in":1}]},{"l":113,"i":[{"h":3,"in":1}]},{"l":114,"i":[{"h":3,"in":1}]},{"l":115,"i":[{"h":3,"in":1}]},{"l":117,"i":[{"h":3,"in":1}]},{"l":128,"i":[{"h":804634,"in":1}]},{"l":132,"i":[{"h":804577,"in":1}]},{"l":133,"i":[{"h":804577,"in":1}]},{"l":136,"i":[{"h":3,"in":1}]},{"l":138,"i":[{"h":3,"in":1}]},{"l":139,"i":[{"h":3,"in":1}]},{"l":140,"i":[{"h":3,"in":1}]},{"l":142,"i":[{"h":3,"in":1}]},{"l":161,"i":[{"h":142,"in":1}]},{"l":162,"i":[{"h":142,"in":1}]},{"l":164,"i":[{"h":142,"in":1}]},{"l":165,"i":[{"h":142,"in":1}]},{"l":166,"i":[{"h":142,"in":1}]},{"l":167,"i":[{"h":142,"in":1}]},{"l":168,"i":[{"h":142,"in":1}]},{"l":169,"i":[{"h":142,"in":1}]},{"l":170,"i":[{"h":142,"in":1}]},{"l":171,"i":[{"h":142,"in":1}]},{"l":174,"i":[{"h":142,"in":1}]},{"l":175,"i":[{"h":142,"in":1}]},{"l":190,"i":[{"h":142,"in":1}]},{"l":191,"i":[{"h":142,"in":1}]},{"l":192,"i":[{"h":1063,"in":1}]},{"l":193,"i":[{"h":921,"in":1}]},{"l":194,"i":[{"h":921,"in":1}]},{"l":198,"i":[{"h":0,"in":1}]},{"l":201,"i":[{"h":142,"in":1}]},{"l":202,"i":[{"h":142,"in":1}]},{"l":203,"i":[{"h":142,"in":1}]},{"l":204,"i":[{"h":142,"in":1}]},{"l":205,"i":[{"h":142,"in":1}]},{"l":206,"i":[{"h":142,"in":1}]},{"l":207,"i":[{"h":142,"in":1}]},{"l":208,"i":[{"h":142,"in":1}]},{"l":211,"i":[{"h":142,"in":1}]},{"l":212,"i":[{"h":142,"in":1}]},{"l":227,"i":[{"h":142,"in":1}]},{"l":228,"i":[{"h":142,"in":1}]},{"l":229,"i":[{"h":506,"in":1}]},{"l":230,"i":[{"h":364,"in":1}]},{"l":231,"i":[{"h":364,"in":1}]},{"l":235,"i":[{"h":0,"in":1}]},{"l":238,"i":[{"h":142,"in":1}]},{"l":239,"i":[{"h":142,"in":1}]},{"l":240,"i":[{"h":142,"in":1}]},{"l":241,"i":[{"h":142,"in":1}]},{"l":242,"i":[{"h":142,"in":1}]},{"l":243,"i":[{"h":142,"in":1}]},{"l":244,"i":[{"h":142,"in":1}]},{"l":245,"i":[{"h":142,"in":1}]},{"l":248,"i":[{"h":142,"in":1}]},{"l":249,"i":[{"h":142,"in":1}]},{"l":266,"i":[{"h":1,"in":1}]},{"l":269,"i":[{"h":1,"in":1}]},{"l":270,"i":[{"h":1,"in":1}]},{"l":275,"i":[{"h":1,"in":1}]},{"l":276,"i":[{"h":1,"in":1}]},{"l":278,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":279,"i":[{"h":2,"in":1}]},{"l":280,"i":[{"h":2,"in":1}]},{"l":281,"i":[{"h":2,"in":1}]},{"l":283,"i":[{"h":1,"in":1}]},{"l":284,"i":[{"h":1,"in":1}]},{"l":286,"i":[{"h":1,"in":1}]},{"l":287,"i":[{"h":1,"in":1}]},{"l":288,"i":[{"h":1,"in":1}]},{"l":289,"i":[{"h":1,"in":1}]},{"l":291,"i":[{"h":1,"in":1}]},{"l":294,"i":[{"h":27,"in":1}]},{"l":296,"i":[{"h":26,"in":1}]},{"l":297,"i":[{"h":26,"in":1}]},{"l":301,"i":[{"h":0,"in":1}]},{"l":303,"i":[{"h":0,"in":1}]},{"l":305,"i":[{"h":1,"in":1}]},{"l":312,"i":[{"h":1,"in":1}]},{"l":313,"i":[{"h":1,"in":1}]},{"l":315,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":316,"i":[{"h":2,"in":1}]},{"l":317,"i":[{"h":2,"in":1}]},{"l":318,"i":[{"h":2,"in":1}]},{"l":320,"i":[{"h":1,"in":1}]},{"l":321,"i":[{"h":1,"in":1}]},{"l":323,"i":[{"h":1,"in":1}]},{"l":324,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":325,"i":[{"h":1,"in":1}]},{"l":328,"i":[{"h":1,"in":1}]},{"l":329,"i":[{"h":1,"in":1}]},{"l":330,"i":[{"h":1,"in":1}]},{"l":332,"i":[{"h":1,"in":1}]},{"l":334,"i":[{"h":16,"in":1}]},{"l":336,"i":[{"h":15,"in":1}]},{"l":337,"i":[{"h":15,"in":1}]},{"l":341,"i":[{"h":0,"in":1}]},{"l":343,"i":[{"h":0,"in":1}]},{"l":345,"i":[{"h":1,"in":1}]},{"l":349,"i":[{"h":1,"in":1}]},{"l":352,"i":[{"h":1,"in":1}]},{"l":369,"i":[{"h":1,"in":1}]},{"l":372,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":374,"i":[{"h":1,"in":1}]},{"l":375,"i":[{"h":1,"in":1}]},{"l":380,"i":[{"h":1,"in":1}]},{"l":381,"i":[{"h":1,"in":1}]},{"l":383,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":384,"i":[{"h":2,"in":1}]},{"l":385,"i":[{"h":2,"in":1}]},{"l":386,"i":[{"h":2,"in":1}]},{"l":388,"i":[{"h":1,"in":1}]},{"l":389,"i":[{"h":1,"in":1}]},{"l":391,"i":[{"h":1,"in":1}]},{"l":392,"i":[{"h":1,"in":1}]},{"l":393,"i":[{"h":1,"in":1}]},{"l":394,"i":[{"h":1,"in":1}]},{"l":396,"i":[{"h":1,"in":1}]},{"l":399,"i":[{"h":27,"in":1}]},{"l":401,"i":[{"h":26,"in":1}]},{"l":402,"i":[{"h":26,"in":1}]},{"l":406,"i":[{"h":0,"in":1}]},{"l":408,"i":[{"h":0,"in":1}]},{"l":410,"i":[{"h":1,"in":1}]},{"l":417,"i":[{"h":1,"in":1}]},{"l":418,"i":[{"h":1,"in":1}]},{"l":420,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":421,"i":[{"h":2,"in":1}]},{"l":422,"i":[{"h":2,"in":1}]},{"l":423,"i":[{"h":2,"in":1}]},{"l":425,"i":[{"h":1,"in":1}]},{"l":426,"i":[{"h":1,"in":1}]},{"l":428,"i":[{"h":1,"in":1}]},{"l":429,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":430,"i":[{"h":1,"in":1}]},{"l":433,"i":[{"h":1,"in":1}]},{"l":434,"i":[{"h":1,"in":1}]},{"l":435,"i":[{"h":1,"in":1}]},{"l":437,"i":[{"h":1,"in":1}]},{"l":439,"i":[{"h":16,"in":1}]},{"l":441,"i":[{"h":15,"in":1}]},{"l":442,"i":[{"h":15,"in":1}]},{"l":446,"i":[{"h":0,"in":1}]},{"l":448,"i":[{"h":0,"in":1}]},{"l":450,"i":[{"h":1,"in":1}]},{"l":454,"i":[{"h":1,"in":1}]},{"l":457,"i":[{"h":1,"in":1}]},{"l":465,"i":[{"h":1,"in":1}]},{"l":466,"i":[{"h":1,"in":1}]},{"l":469,"i":[{"h":1,"in":1}]},{"l":470,"i":[{"h":1,"in":1}]},{"l":471,"i":[{"h":1,"in":1}]},{"l":472,"i":[{"h":1,"in":1}]},{"l":473,"i":[{"h":1,"in":1}]},{"l":474,"i":[{"h":1,"in":1}]},{"l":475,"i":[{"h":1,"in":1}]},{"l":478,"i":[{"h":1,"in":1}]},{"l":479,"i":[{"h":1,"in":1}]},{"l":482,"i":[{"h":1,"in":1}]},{"l":484,"i":[{"h":1,"in":1}]},{"l":486,"i":[{"h":0,"in":1}]},{"l":503,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":505,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":506,"i":[{"h":40,"in":1}]},{"l":507,"i":[{"h":40,"in":1}]},{"l":508,"i":[{"h":40,"in":1}]},{"l":510,"i":[{"h":20,"in":1}]},{"l":513,"i":[{"h":20,"in":1}]},{"l":529,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":531,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":532,"i":[{"h":40,"in":1}]},{"l":533,"i":[{"h":40,"in":1}]},{"l":534,"i":[{"h":40,"in":1}]},{"l":536,"i":[{"h":20,"in":1}]},{"l":539,"i":[{"h":20,"in":1}]},{"l":558,"i":[{"h":3,"in":1}]},{"l":560,"i":[{"h":3,"in":1}]},{"l":562,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":564,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":565,"i":[{"h":240,"in":1}]},{"l":566,"i":[{"h":240,"in":1}]},{"l":567,"i":[{"h":240,"in":1}]},{"l":569,"i":[{"h":120,"in":1}]},{"l":572,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":574,"i":[{"h":121,"in":1}]},{"l":575,"i":[{"h":121,"in":1}]},{"l":576,"i":[{"h":121,"in":1}]},{"l":577,"i":[{"h":121,"in":1}]},{"l":582,"i":[{"h":15,"in":1}]},{"l":586,"i":[{"h":120,"in":1}]},{"l":590,"i":[{"h":14,"in":1},{"h":14,"in":2}]},{"l":595,"i":[{"h":3,"in":1}]},{"l":613,"i":[{"h":3,"in":1}]},{"l":614,"i":[{"h":3,"in":1}]},{"l":616,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":618,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":619,"i":[{"h":240,"in":1}]},{"l":620,"i":[{"h":240,"in":1}]},{"l":621,"i":[{"h":240,"in":1}]},{"l":623,"i":[{"h":120,"in":1}]},{"l":626,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":628,"i":[{"h":105,"in":1}]},{"l":629,"i":[{"h":105,"in":1}]},{"l":630,"i":[{"h":105,"in":1}]},{"l":631,"i":[{"h":105,"in":1}]},{"l":636,"i":[{"h":0,"in":1}]},{"l":640,"i":[{"h":120,"in":1}]},{"l":644,"i":[{"h":14,"in":1},{"h":14,"in":2}]},{"l":648,"i":[{"h":3,"in":1}]},{"l":664,"i":[{"h":3,"in":1}]},{"l":665,"i":[{"h":3,"in":1}]},{"l":666,"i":[{"h":3,"in":1}]},{"l":668,"i":[{"h":1470,"in":1}]},{"l":672,"i":[{"h":696,"in":1}]},{"l":674,"i":[{"h":684,"in":1}]},{"l":677,"i":[{"h":1470,"in":1}]},{"l":678,"i":[{"h":1470,"in":1}]},{"l":684,"i":[{"h":0,"in":1}]},{"l":685,"i":[{"h":0,"in":1}]},{"l":687,"i":[{"h":121,"in":1}]},{"l":690,"i":[{"h":0,"in":1}]},{"l":693,"i":[{"h":0,"in":1}]},{"l":697,"i":[{"h":0,"in":1}]},{"l":701,"i":[{"h":0,"in":1}]},{"l":704,"i":[{"h":121,"in":1}]},{"l":710,"i":[{"h":121,"in":1}]},{"l":721,"i":[{"h":3,"in":1}]},{"l":726,"i":[{"h":0,"in":1}]},{"l":728,"i":[{"h":0,"in":1}]},{"l":748,"i":[{"h":3,"in":1}]},{"l":749,"i":[{"h":3,"in":1}]},{"l":751,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":753,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":754,"i":[{"h":240,"in":1}]},{"l":755,"i":[{"h":240,"in":1}]},{"l":756,"i":[{"h":240,"in":1}]},{"l":758,"i":[{"h":120,"in":1}]},{"l":761,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":763,"i":[{"h":121,"in":1}]},{"l":764,"i":[{"h":121,"in":1}]},{"l":765,"i":[{"h":121,"in":1}]},{"l":766,"i":[{"h":121,"in":1}]},{"l":771,"i":[{"h":16,"in":1}]},{"l":775,"i":[{"h":120,"in":1}]},{"l":779,"i":[{"h":9,"in":1},{"h":9,"in":2}]},{"l":783,"i":[{"h":3,"in":1}]},{"l":798,"i":[{"h":142,"in":1}]},{"l":799,"i":[{"h":142,"in":1}]},{"l":800,"i":[{"h":504,"in":1}]},{"l":801,"i":[{"h":362,"in":1}]},{"l":802,"i":[{"h":362,"in":1}]},{"l":806,"i":[{"h":0,"in":1}]},{"l":809,"i":[{"h":142,"in":1}]},{"l":810,"i":[{"h":142,"in":1}]},{"l":811,"i":[{"h":142,"in":1}]},{"l":812,"i":[{"h":142,"in":1}]},{"l":813,"i":[{"h":142,"in":1}]},{"l":814,"i":[{"h":142,"in":1}]},{"l":815,"i":[{"h":142,"in":1}]},{"l":816,"i":[{"h":142,"in":1}]},{"l":819,"i":[{"h":142,"in":1}]},{"l":820,"i":[{"h":142,"in":1}]},{"l":840,"i":[{"h":3,"in":1}]},{"l":841,"i":[{"h":3,"in":1}]},{"l":843,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":845,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":846,"i":[{"h":240,"in":1}]},{"l":847,"i":[{"h":240,"in":1}]},{"l":848,"i":[{"h":240,"in":1}]},{"l":850,"i":[{"h":120,"in":1}]},{"l":853,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":855,"i":[{"h":120,"in":1}]},{"l":856,"i":[{"h":120,"in":1}]},{"l":857,"i":[{"h":120,"in":1}]},{"l":858,"i":[{"h":120,"in":1}]},{"l":863,"i":[{"h":16,"in":1}]},{"l":867,"i":[{"h":120,"in":1}]},{"l":871,"i":[{"h":5,"in":1},{"h":5,"in":2}]},{"l":875,"i":[{"h":3,"in":1}]},{"l":891,"i":[{"h":3,"in":1}]},{"l":892,"i":[{"h":3,"in":1}]},{"l":893,"i":[{"h":3,"in":1}]},{"l":900,"i":[{"h":727,"in":1}]},{"l":904,"i":[{"h":345,"in":1}]},{"l":906,"i":[{"h":314,"in":1}]},{"l":909,"i":[{"h":727,"in":1}]},{"l":910,"i":[{"h":727,"in":1}]},{"l":916,"i":[{"h":0,"in":1}]},{"l":917,"i":[{"h":0,"in":1}]},{"l":919,"i":[{"h":121,"in":1}]},{"l":922,"i":[{"h":0,"in":1}]},{"l":925,"i":[{"h":0,"in":1}]},{"l":929,"i":[{"h":0,"in":1}]},{"l":933,"i":[{"h":0,"in":1}]},{"l":936,"i":[{"h":121,"in":1}]},{"l":948,"i":[{"h":121,"in":1}]},{"l":963,"i":[{"h":3,"in":1}]},{"l":973,"i":[{"h":0,"in":1}]},{"l":975,"i":[{"h":0,"in":1}]},{"l":999,"i":[{"h":3,"in":1}]},{"l":1000,"i":[{"h":3,"in":1}]},{"l":1001,"i":[{"h":3,"in":1}]},{"l":1008,"i":[{"h":1327,"in":1}]},{"l":1012,"i":[{"h":616,"in":1}]},{"l":1014,"i":[{"h":600,"in":1}]},{"l":1017,"i":[{"h":1327,"in":1}]},{"l":1018,"i":[{"h":1327,"in":1}]},{"l":1024,"i":[{"h":0,"in":1}]},{"l":1025,"i":[{"h":0,"in":1}]},{"l":1027,"i":[{"h":105,"in":1}]},{"l":1030,"i":[{"h":0,"in":1}]},{"l":1033,"i":[{"h":0,"in":1}]},{"l":1037,"i":[{"h":0,"in":1}]},{"l":1041,"i":[{"h":0,"in":1}]},{"l":1044,"i":[{"h":105,"in":1}]},{"l":1056,"i":[{"h":105,"in":1}]},{"l":1071,"i":[{"h":3,"in":1}]},{"l":1085,"i":[{"h":0,"in":1}]},{"l":1087,"i":[{"h":0,"in":1}]},{"l":1104,"i":[{"h":3,"in":1}]},{"l":1105,"i":[{"h":3,"in":1}]},{"l":1106,"i":[{"h":3,"in":1}]},{"l":1113,"i":[{"h":711,"in":1}]},{"l":1117,"i":[{"h":327,"in":1}]},{"l":1119,"i":[{"h":315,"in":1}]},{"l":1122,"i":[{"h":711,"in":1}]},{"l":1123,"i":[{"h":711,"in":1}]},{"l":1129,"i":[{"h":0,"in":1}]},{"l":1130,"i":[{"h":0,"in":1}]},{"l":1132,"i":[{"h":120,"in":1}]},{"l":1135,"i":[{"h":0,"in":1}]},{"l":1138,"i":[{"h":0,"in":1}]},{"l":1142,"i":[{"h":0,"in":1}]},{"l":1146,"i":[{"h":0,"in":1}]},{"l":1149,"i":[{"h":120,"in":1}]},{"l":1161,"i":[{"h":120,"in":1}]},{"l":1176,"i":[{"h":3,"in":1}]},{"l":1190,"i":[{"h":0,"in":1}]},{"l":1192,"i":[{"h":0,"in":1}]},{"l":1206,"i":[{"h":1,"in":1}]},{"l":1208,"i":[{"h":1,"in":1}]},{"l":1211,"i":[{"h":1,"in":1}]},{"l":1213,"i":[{"h":1,"in":1}]},{"l":1218,"i":[{"h":1,"in":1}]},{"l":1219,"i":[{"h":1,"in":1}]},{"l":1220,"i":[{"h":1,"in":1}]},{"l":1221,"i":[{"h":1,"in":1}]},{"l":1225,"i":[{"h":1,"in":1}]},{"l":1226,"i":[{"h":1,"in":1}]},{"l":1233,"i":[{"h":1,"in":1}]},{"l":1235,"i":[{"h":0,"in":1}]},{"l":1237,"i":[{"h":0,"in":1}]},{"l":1243,"i":[{"h":1,"in":1}]},{"l":1244,"i":[{"h":1,"in":1}]},{"l":1245,"i":[{"h":1,"in":1}]},{"l":1249,"i":[{"h":1,"in":1}]},{"l":1250,"i":[{"h":1,"in":1}]},{"l":1257,"i":[{"h":1,"in":1}]},{"l":1259,"i":[{"h":0,"in":1}]},{"l":1261,"i":[{"h":0,"in":1}]},{"l":1268,"i":[{"h":1,"in":1}]},{"l":1269,"i":[{"h":1,"in":1}]},{"l":1270,"i":[{"h":1,"in":1}]},{"l":1271,"i":[{"h":1,"in":1}]},{"l":1276,"i":[{"h":1,"in":1}]},{"l":1280,"i":[{"h":1,"in":1}]},{"l":1281,"i":[{"h":1,"in":1}]},{"l":1282,"i":[{"h":1,"in":1}]},{"l":1285,"i":[{"h":200001,"in":1}]},{"l":1286,"i":[{"h":200000,"in":1}]},{"l":1287,"i":[{"h":200000,"in":1}]},{"l":1291,"i":[{"h":0,"in":1}]},{"l":1292,"i":[{"h":0,"in":1}]},{"l":1293,"i":[{"h":0,"in":1}]},{"l":1300,"i":[{"h":1,"in":1}]},{"l":1302,"i":[{"h":0,"in":1}]},{"l":1304,"i":[{"h":0,"in":1}]},{"l":1311,"i":[{"h":1,"in":1}]},{"l":1312,"i":[{"h":1,"in":1}]},{"l":1313,"i":[{"h":1,"in":1}]},{"l":1314,"i":[{"h":1,"in":1}]},{"l":1318,"i":[{"h":1,"in":1}]},{"l":1319,"i":[{"h":1,"in":1}]},{"l":1326,"i":[{"h":1,"in":1}]},{"l":1328,"i":[{"h":0,"in":1}]},{"l":1330,"i":[{"h":0,"in":1}]},{"l":1345,"i":[{"h":1,"in":1}]},{"l":1346,"i":[{"h":1,"in":1}]},{"l":1347,"i":[{"h":1,"in":1}]},{"l":1348,"i":[{"h":1,"in":1}]},{"l":1350,"i":[{"h":1,"in":1}]},{"l":1354,"i":[{"h":1,"in":1}]},{"l":1355,"i":[{"h":1,"in":1}]},{"l":1362,"i":[{"h":1,"in":1}]},{"l":1365,"i":[{"h":0,"in":1}]},{"l":1367,"i":[{"h":0,"in":1}]},{"l":1371,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1381,"i":[{"h":1,"in":1}]},{"l":1382,"i":[{"h":1,"in":1}]},{"l":1383,"i":[{"h":1,"in":1}]},{"l":1385,"i":[{"h":1,"in":1}]},{"l":1389,"i":[{"h":1,"in":1}]},{"l":1390,"i":[{"h":1,"in":1}]},{"l":1397,"i":[{"h":1,"in":1}]},{"l":1400,"i":[{"h":0,"in":1}]},{"l":1402,"i":[{"h":0,"in":1}]},{"l":1406,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1412,"i":[{"h":1,"in":1}]},{"l":1413,"i":[{"h":1,"in":1}]},{"l":1414,"i":[{"h":1,"in":1}]},{"l":1415,"i":[{"h":1,"in":1}]},{"l":1420,"i":[{"h":1,"in":1}]},{"l":1424,"i":[{"h":1,"in":1}]},{"l":1425,"i":[{"h":1,"in":1}]},{"l":1426,"i":[{"h":1,"in":1}]},{"l":1429,"i":[{"h":200001,"in":1}]},{"l":1430,"i":[{"h":200000,"in":1}]},{"l":1431,"i":[{"h":200000,"in":1}]},{"l":1435,"i":[{"h":0,"in":1}]},{"l":1440,"i":[{"h":0,"in":1}]},{"l":1441,"i":[{"h":0,"in":1}]},{"l":1448,"i":[{"h":1,"in":1}]},{"l":1450,"i":[{"h":0,"in":1}]},{"l":1452,"i":[{"h":0,"in":1}]},{"l":1463,"i":[{"h":1,"in":1}]},{"l":1464,"i":[{"h":1,"in":1}]},{"l":1465,"i":[{"h":1,"in":1}]},{"l":1466,"i":[{"h":1,"in":1}]},{"l":1468,"i":[{"h":1,"in":1}]},{"l":1472,"i":[{"h":1,"in":1}]},{"l":1473,"i":[{"h":1,"in":1}]},{"l":1480,"i":[{"h":1,"in":1}]},{"l":1483,"i":[{"h":0,"in":1}]},{"l":1485,"i":[{"h":0,"in":1}]},{"l":1489,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1494,"i":[{"h":1,"in":1}]},{"l":1499,"i":[{"h":1,"in":1}]},{"l":1500,"i":[{"h":1,"in":1}]},{"l":1501,"i":[{"h":1,"in":1}]},{"l":1502,"i":[{"h":1,"in":1}]},{"l":1512,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1513,"i":[{"h":2,"in":1}]},{"l":1514,"i":[{"h":2,"in":1}]},{"l":1515,"i":[{"h":2,"in":1}]},{"l":1518,"i":[{"h":1,"in":1}]},{"l":1521,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1522,"i":[{"h":2,"in":1}]},{"l":1523,"i":[{"h":2,"in":1}]},{"l":1524,"i":[{"h":2,"in":1}]},{"l":1527,"i":[{"h":1,"in":1}]},{"l":1529,"i":[{"h":1,"in":1}]},{"l":1530,"i":[{"h":1,"in":1}]},{"l":1531,"i":[{"h":1,"in":1}]},{"l":1534,"i":[{"h":10,"in":1}]},{"l":1535,"i":[{"h":9,"in":1}]},{"l":1536,"i":[{"h":9,"in":1}]},{"l":1542,"i":[{"h":0,"in":1}]},{"l":1543,"i":[{"h":0,"in":1}]},{"l":1546,"i":[{"h":2,"in":1}]},{"l":1550,"i":[{"h":0,"in":1}]},{"l":1554,"i":[{"h":0,"in":1}]},{"l":1557,"i":[{"h":2,"in":1}]},{"l":1563,"i":[{"h":2,"in":1}]},{"l":1569,"i":[{"h":1,"in":1}]},{"l":1571,"i":[{"h":0,"in":1}]},{"l":1573,"i":[{"h":0,"in":1}]},{"l":1577,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1582,"i":[{"h":1,"in":1}]},{"l":1583,"i":[{"h":1,"in":1}]},{"l":1584,"i":[{"h":1,"in":1}]},{"l":1585,"i":[{"h":1,"in":1}]},{"l":1595,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1596,"i":[{"h":2,"in":1}]},{"l":1597,"i":[{"h":2,"in":1}]},{"l":1598,"i":[{"h":2,"in":1}]},{"l":1601,"i":[{"h":1,"in":1}]},{"l":1602,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1604,"i":[{"h":1,"in":1}]},{"l":1605,"i":[{"h":1,"in":1}]},{"l":1606,"i":[{"h":1,"in":1}]},{"l":1607,"i":[{"h":1,"in":1}]},{"l":1611,"i":[{"h":1,"in":1}]},{"l":1613,"i":[{"h":1,"in":1}]},{"l":1614,"i":[{"h":1,"in":1}]},{"l":1615,"i":[{"h":1,"in":1}]},{"l":1618,"i":[{"h":7,"in":1}]},{"l":1619,"i":[{"h":6,"in":1}]},{"l":1620,"i":[{"h":6,"in":1}]},{"l":1626,"i":[{"h":0,"in":1}]},{"l":1627,"i":[{"h":0,"in":1}]},{"l":1630,"i":[{"h":1,"in":1}]},{"l":1634,"i":[{"h":0,"in":1}]},{"l":1638,"i":[{"h":0,"in":1}]},{"l":1641,"i":[{"h":1,"in":1}]},{"l":1647,"i":[{"h":1,"in":1}]},{"l":1653,"i":[{"h":1,"in":1}]},{"l":1655,"i":[{"h":0,"in":1}]},{"l":1657,"i":[{"h":0,"in":1}]},{"l":1661,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1666,"i":[{"h":1,"in":1}]},{"l":1667,"i":[{"h":1,"in":1}]},{"l":1668,"i":[{"h":1,"in":1}]},{"l":1669,"i":[{"h":1,"in":1}]},{"l":1671,"i":[{"h":1,"in":1}]},{"l":1674,"i":[{"h":1,"in":1}]},{"l":1675,"i":[{"h":1,"in":1}]},{"l":1682,"i":[{"h":1,"in":1}]},{"l":1685,"i":[{"h":0,"in":1}]},{"l":1687,"i":[{"h":0,"in":1}]},{"l":1690,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1695,"i":[{"h":1,"in":1}]},{"l":1696,"i":[{"h":1,"in":1}]},{"l":1697,"i":[{"h":1,"in":1}]},{"l":1699,"i":[{"h":1,"in":1}]},{"l":1702,"i":[{"h":1,"in":1}]},{"l":1703,"i":[{"h":1,"in":1}]},{"l":1710,"i":[{"h":1,"in":1}]},{"l":1713,"i":[{"h":0,"in":1}]},{"l":1715,"i":[{"h":0,"in":1}]},{"l":1718,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1724,"i":[{"h":1,"in":1}]},{"l":1725,"i":[{"h":1,"in":1}]},{"l":1726,"i":[{"h":1,"in":1}]},{"l":1727,"i":[{"h":1,"in":1}]},{"l":1736,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":1737,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":1738,"i":[{"h":40,"in":1}]},{"l":1739,"i":[{"h":40,"in":1}]},{"l":1740,"i":[{"h":40,"in":1}]},{"l":1743,"i":[{"h":20,"in":1}]},{"l":1748,"i":[{"h":1,"in":1}]},{"l":1749,"i":[{"h":1,"in":1}]},{"l":1750,"i":[{"h":1,"in":1}]},{"l":1753,"i":[{"h":200001,"in":1}]},{"l":1754,"i":[{"h":200000,"in":1}]},{"l":1755,"i":[{"h":200000,"in":1}]},{"l":1759,"i":[{"h":0,"in":1}]},{"l":1764,"i":[{"h":0,"in":1}]},{"l":1765,"i":[{"h":0,"in":1}]},{"l":1772,"i":[{"h":1,"in":1}]},{"l":1774,"i":[{"h":0,"in":1}]},{"l":1776,"i":[{"h":0,"in":1}]},{"l":1779,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1784,"i":[{"h":1,"in":1}]},{"l":1785,"i":[{"h":1,"in":1}]},{"l":1786,"i":[{"h":1,"in":1}]},{"l":1787,"i":[{"h":1,"in":1}]},{"l":1789,"i":[{"h":1,"in":1}]},{"l":1793,"i":[{"h":1,"in":1}]},{"l":1794,"i":[{"h":1,"in":1}]},{"l":1801,"i":[{"h":1,"in":1}]},{"l":1804,"i":[{"h":0,"in":1}]},{"l":1806,"i":[{"h":0,"in":1}]},{"l":1811,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1816,"i":[{"h":1,"in":1}]},{"l":1821,"i":[{"h":1,"in":1}]},{"l":1822,"i":[{"h":1,"in":1}]},{"l":1823,"i":[{"h":1,"in":1}]},{"l":1824,"i":[{"h":1,"in":1}]},{"l":1834,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1835,"i":[{"h":2,"in":1}]},{"l":1836,"i":[{"h":2,"in":1}]},{"l":1837,"i":[{"h":2,"in":1}]},{"l":1840,"i":[{"h":1,"in":1}]},{"l":1843,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1844,"i":[{"h":2,"in":1}]},{"l":1845,"i":[{"h":2,"in":1}]},{"l":1846,"i":[{"h":2,"in":1}]},{"l":1849,"i":[{"h":1,"in":1}]},{"l":1851,"i":[{"h":1,"in":1}]},{"l":1852,"i":[{"h":1,"in":1}]},{"l":1853,"i":[{"h":1,"in":1}]},{"l":1856,"i":[{"h":10,"in":1}]},{"l":1857,"i":[{"h":9,"in":1}]},{"l":1858,"i":[{"h":9,"in":1}]},{"l":1864,"i":[{"h":0,"in":1}]},{"l":1865,"i":[{"h":0,"in":1}]},{"l":1868,"i":[{"h":2,"in":1}]},{"l":1872,"i":[{"h":0,"in":1}]},{"l":1876,"i":[{"h":0,"in":1}]},{"l":1879,"i":[{"h":2,"in":1}]},{"l":1885,"i":[{"h":2,"in":1}]},{"l":1891,"i":[{"h":1,"in":1}]},{"l":1893,"i":[{"h":0,"in":1}]},{"l":1895,"i":[{"h":0,"in":1}]},{"l":1899,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1904,"i":[{"h":1,"in":1}]},{"l":1905,"i":[{"h":1,"in":1}]},{"l":1906,"i":[{"h":1,"in":1}]},{"l":1907,"i":[{"h":1,"in":1}]},{"l":1917,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1918,"i":[{"h":2,"in":1}]},{"l":1919,"i":[{"h":2,"in":1}]},{"l":1920,"i":[{"h":2,"in":1}]},{"l":1923,"i":[{"h":1,"in":1}]},{"l":1924,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1926,"i":[{"h":1,"in":1}]},{"l":1927,"i":[{"h":1,"in":1}]},{"l":1928,"i":[{"h":1,"in":1}]},{"l":1929,"i":[{"h":1,"in":1}]},{"l":1933,"i":[{"h":1,"in":1}]},{"l":1935,"i":[{"h":1,"in":1}]},{"l":1936,"i":[{"h":1,"in":1}]},{"l":1937,"i":[{"h":1,"in":1}]},{"l":1940,"i":[{"h":7,"in":1}]},{"l":1941,"i":[{"h":6,"in":1}]},{"l":1942,"i":[{"h":6,"in":1}]},{"l":1948,"i":[{"h":0,"in":1}]},{"l":1949,"i":[{"h":0,"in":1}]},{"l":1952,"i":[{"h":1,"in":1}]},{"l":1956,"i":[{"h":0,"in":1}]},{"l":1960,"i":[{"h":0,"in":1}]},{"l":1963,"i":[{"h":1,"in":1}]},{"l":1969,"i":[{"h":1,"in":1}]},{"l":1975,"i":[{"h":1,"in":1}]},{"l":1977,"i":[{"h":0,"in":1}]},{"l":1979,"i":[{"h":0,"in":1}]},{"l":1983,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1988,"i":[{"h":1,"in":1}]},{"l":1989,"i":[{"h":1,"in":1}]},{"l":1990,"i":[{"h":1,"in":1}]},{"l":1991,"i":[{"h":1,"in":1}]},{"l":1993,"i":[{"h":1,"in":1}]},{"l":1996,"i":[{"h":1,"in":1}]},{"l":1997,"i":[{"h":1,"in":1}]},{"l":2004,"i":[{"h":1,"in":1}]},{"l":2007,"i":[{"h":0,"in":1}]},{"l":2009,"i":[{"h":0,"in":1}]},{"l":2012,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2017,"i":[{"h":1,"in":1}]},{"l":2018,"i":[{"h":1,"in":1}]},{"l":2019,"i":[{"h":1,"in":1}]},{"l":2021,"i":[{"h":1,"in":1}]},{"l":2024,"i":[{"h":1,"in":1}]},{"l":2025,"i":[{"h":1,"in":1}]},{"l":2032,"i":[{"h":1,"in":1}]},{"l":2035,"i":[{"h":0,"in":1}]},{"l":2037,"i":[{"h":0,"in":1}]},{"l":2040,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2046,"i":[{"h":1,"in":1}]},{"l":2047,"i":[{"h":1,"in":1}]},{"l":2048,"i":[{"h":1,"in":1}]},{"l":2049,"i":[{"h":1,"in":1}]},{"l":2058,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":2059,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":2060,"i":[{"h":40,"in":1}]},{"l":2061,"i":[{"h":40,"in":1}]},{"l":2062,"i":[{"h":40,"in":1}]},{"l":2065,"i":[{"h":20,"in":1}]},{"l":2070,"i":[{"h":1,"in":1}]},{"l":2071,"i":[{"h":1,"in":1}]},{"l":2072,"i":[{"h":1,"in":1}]},{"l":2075,"i":[{"h":200001,"in":1}]},{"l":2076,"i":[{"h":200000,"in":1}]},{"l":2077,"i":[{"h":200000,"in":1}]},{"l":2081,"i":[{"h":0,"in":1}]},{"l":2086,"i":[{"h":0,"in":1}]},{"l":2087,"i":[{"h":0,"in":1}]},{"l":2094,"i":[{"h":1,"in":1}]},{"l":2096,"i":[{"h":0,"in":1}]},{"l":2098,"i":[{"h":0,"in":1}]},{"l":2101,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2106,"i":[{"h":1,"in":1}]},{"l":2107,"i":[{"h":1,"in":1}]},{"l":2108,"i":[{"h":1,"in":1}]},{"l":2109,"i":[{"h":1,"in":1}]},{"l":2111,"i":[{"h":1,"in":1}]},{"l":2115,"i":[{"h":1,"in":1}]},{"l":2116,"i":[{"h":1,"in":1}]},{"l":2123,"i":[{"h":1,"in":1}]},{"l":2126,"i":[{"h":0,"in":1}]},{"l":2128,"i":[{"h":0,"in":1}]},{"l":2134,"i":[{"h":1,"in":1}]},{"l":2135,"i":[{"h":1,"in":1}]},{"l":2136,"i":[{"h":1,"in":1}]},{"l":2139,"i":[{"h":1,"in":1}]},{"l":2141,"i":[{"h":1,"in":1}]},{"l":2143,"i":[{"h":0,"in":1}]},{"l":2144,"i":[{"h":1,"in":1}]},{"l":2147,"i":[{"h":1,"in":1}]},{"l":2152,"i":[{"h":1,"in":1}]},{"l":2153,"i":[{"h":0,"in":1}]},{"l":2154,"i":[{"h":0,"in":1}]}],"mi":3}]},"14":{"pr":"work.adder_8b","stmts":[{"f":15,"cov":[{"l":31,"i":[{"h":493,"in":1}]},{"l":32,"i":[{"h":493,"in":1}]},{"l":33,"i":[{"h":493,"in":1}]},{"l":34,"i":[{"h":493,"in":1}]},{"l":37,"i":[{"h":870,"in":1}]},{"l":38,"i":[{"h":5,"in":1}]},{"l":39,"i":[{"h":1231,"in":1}]}],"mi":1}]},"13":{"pr":"work.fa","stmts":[{"f":14,"cov":[{"l":9,"i":[{"h":17020,"in":1}]},{"l":10,"i":[{"h":17020,"in":1}]}],"mi":1}]},"12":{"pr":"work.ha","stmts":[{"f":13,"cov":[{"l":10,"i":[{"h":4741,"in":1}]},{"l":11,"i":[{"h":4741,"in":1}]}],"mi":1}]},"17":{"pr":"work.lane_fu_pt","stmts":[{"f":20,"cov":[{"l":33,"i":[{"h":969,"in":1}]},{"l":36,"i":[{"h":1866,"in":1}]},{"l":39,"i":[{"h":2159,"in":1}]},{"l":43,"i":[{"h":1586,"in":1}]},{"l":45,"i":[{"h":8,"in":1}]},{"l":46,"i":[{"h":8,"in":1}]},{"l":48,"i":[{"h":480,"in":1}]},{"l":49,"i":[{"h":480,"in":1}]},{"l":55,"i":[{"h":0,"in":1}]}],"mi":1}]},"8":{"pr":"work.lane_sequencer","stmts":[{"f":4,"cov":[{"l":30,"i":[{"h":4317,"in":1}]},{"l":36,"i":[{"h":2851,"in":1}]},{"l":38,"i":[{"h":2851,"in":1}]},{"l":40,"i":[{"h":2851,"in":1}]},{"l":43,"i":[{"h":2851,"in":1}]},{"l":44,"i":[{"h":2851,"in":1}]},{"l":45,"i":[{"h":2851,"in":1}]},{"l":48,"i":[{"h":2851,"in":1}]},{"l":49,"i":[{"h":2851,"in":1}]},{"l":50,"i":[{"h":2851,"in":1}]},{"l":55,"i":[{"h":2851,"in":1}]},{"l":58,"i":[{"h":2851,"in":1}]},{"l":64,"i":[{"h":3016,"in":1}]},{"l":66,"i":[{"h":8,"in":1}]},{"l":67,"i":[{"h":8,"in":1}]},{"l":68,"i":[{"h":8,"in":1}]},{"l":70,"i":[{"h":3008,"in":1}]},{"l":74,"i":[{"h":1589,"in":1}]},{"l":78,"i":[{"h":569,"in":1}]},{"l":82,"i":[{"h":1137,"in":1}]},{"l":91,"i":[{"h":4271,"in":1}]},{"l":92,"i":[{"h":4271,"in":1}]},{"l":93,"i":[{"h":4271,"in":1}]},{"l":94,"i":[{"h":4271,"in":1}]},{"l":99,"i":[{"h":1709,"in":1}]},{"l":103,"i":[{"h":569,"in":1}]},{"l":109,"i":[{"h":2554,"in":1}]},{"l":114,"i":[{"h":878,"in":1}]},{"l":117,"i":[{"h":623,"in":1}]}],"mi":1}]},"2":{"pr":"work.lane_tb","stmts":[{"f":2,"cov":[{"l":27,"i":[{"h":1,"in":1}]},{"l":28,"i":[{"h":1,"in":1},{"h":1609266,"in":2},{"h":1609265,"in":3}]},{"l":33,"i":[{"h":1,"in":1}]},{"l":34,"i":[{"h":1,"in":1}]},{"l":35,"i":[{"h":1,"in":1}]},{"l":86,"i":[{"h":1,"in":1}]},{"l":87,"i":[{"h":1,"in":1}]},{"l":90,"i":[{"h":1,"in":1}]},{"l":91,"i":[{"h":1,"in":1}]},{"l":94,"i":[{"h":1,"in":1}]},{"l":95,"i":[{"h":1,"in":1}]},{"l":96,"i":[{"h":1,"in":1}]},{"l":97,"i":[{"h":1,"in":1}]},{"l":103,"i":[{"h":804634,"in":1}]},{"l":107,"i":[{"h":804586,"in":1}]},{"l":108,"i":[{"h":804586,"in":1}]},{"l":111,"i":[{"h":3,"in":1}]},{"l":113,"i":[{"h":3,"in":1}]},{"l":114,"i":[{"h":3,"in":1}]},{"l":115,"i":[{"h":3,"in":1}]},{"l":117,"i":[{"h":3,"in":1}]},{"l":128,"i":[{"h":804634,"in":1}]},{"l":132,"i":[{"h":804577,"in":1}]},{"l":133,"i":[{"h":804577,"in":1}]},{"l":136,"i":[{"h":3,"in":1}]},{"l":138,"i":[{"h":3,"in":1}]},{"l":139,"i":[{"h":3,"in":1}]},{"l":140,"i":[{"h":3,"in":1}]},{"l":142,"i":[{"h":3,"in":1}]},{"l":161,"i":[{"h":142,"in":1}]},{"l":162,"i":[{"h":142,"in":1}]},{"l":164,"i":[{"h":142,"in":1}]},{"l":165,"i":[{"h":142,"in":1}]},{"l":166,"i":[{"h":142,"in":1}]},{"l":167,"i":[{"h":142,"in":1}]},{"l":168,"i":[{"h":142,"in":1}]},{"l":169,"i":[{"h":142,"in":1}]},{"l":170,"i":[{"h":142,"in":1}]},{"l":171,"i":[{"h":142,"in":1}]},{"l":174,"i":[{"h":142,"in":1}]},{"l":175,"i":[{"h":142,"in":1}]},{"l":190,"i":[{"h":142,"in":1}]},{"l":191,"i":[{"h":142,"in":1}]},{"l":192,"i":[{"h":1063,"in":1}]},{"l":193,"i":[{"h":921,"in":1}]},{"l":194,"i":[{"h":921,"in":1}]},{"l":198,"i":[{"h":0,"in":1}]},{"l":201,"i":[{"h":142,"in":1}]},{"l":202,"i":[{"h":142,"in":1}]},{"l":203,"i":[{"h":142,"in":1}]},{"l":204,"i":[{"h":142,"in":1}]},{"l":205,"i":[{"h":142,"in":1}]},{"l":206,"i":[{"h":142,"in":1}]},{"l":207,"i":[{"h":142,"in":1}]},{"l":208,"i":[{"h":142,"in":1}]},{"l":211,"i":[{"h":142,"in":1}]},{"l":212,"i":[{"h":142,"in":1}]},{"l":227,"i":[{"h":142,"in":1}]},{"l":228,"i":[{"h":142,"in":1}]},{"l":229,"i":[{"h":506,"in":1}]},{"l":230,"i":[{"h":364,"in":1}]},{"l":231,"i":[{"h":364,"in":1}]},{"l":235,"i":[{"h":0,"in":1}]},{"l":238,"i":[{"h":142,"in":1}]},{"l":239,"i":[{"h":142,"in":1}]},{"l":240,"i":[{"h":142,"in":1}]},{"l":241,"i":[{"h":142,"in":1}]},{"l":242,"i":[{"h":142,"in":1}]},{"l":243,"i":[{"h":142,"in":1}]},{"l":244,"i":[{"h":142,"in":1}]},{"l":245,"i":[{"h":142,"in":1}]},{"l":248,"i":[{"h":142,"in":1}]},{"l":249,"i":[{"h":142,"in":1}]},{"l":266,"i":[{"h":1,"in":1}]},{"l":269,"i":[{"h":1,"in":1}]},{"l":270,"i":[{"h":1,"in":1}]},{"l":275,"i":[{"h":1,"in":1}]},{"l":276,"i":[{"h":1,"in":1}]},{"l":278,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":279,"i":[{"h":2,"in":1}]},{"l":280,"i":[{"h":2,"in":1}]},{"l":281,"i":[{"h":2,"in":1}]},{"l":283,"i":[{"h":1,"in":1}]},{"l":284,"i":[{"h":1,"in":1}]},{"l":286,"i":[{"h":1,"in":1}]},{"l":287,"i":[{"h":1,"in":1}]},{"l":288,"i":[{"h":1,"in":1}]},{"l":289,"i":[{"h":1,"in":1}]},{"l":291,"i":[{"h":1,"in":1}]},{"l":294,"i":[{"h":27,"in":1}]},{"l":296,"i":[{"h":26,"in":1}]},{"l":297,"i":[{"h":26,"in":1}]},{"l":301,"i":[{"h":0,"in":1}]},{"l":303,"i":[{"h":0,"in":1}]},{"l":305,"i":[{"h":1,"in":1}]},{"l":312,"i":[{"h":1,"in":1}]},{"l":313,"i":[{"h":1,"in":1}]},{"l":315,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":316,"i":[{"h":2,"in":1}]},{"l":317,"i":[{"h":2,"in":1}]},{"l":318,"i":[{"h":2,"in":1}]},{"l":320,"i":[{"h":1,"in":1}]},{"l":321,"i":[{"h":1,"in":1}]},{"l":323,"i":[{"h":1,"in":1}]},{"l":324,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":325,"i":[{"h":1,"in":1}]},{"l":328,"i":[{"h":1,"in":1}]},{"l":329,"i":[{"h":1,"in":1}]},{"l":330,"i":[{"h":1,"in":1}]},{"l":332,"i":[{"h":1,"in":1}]},{"l":334,"i":[{"h":16,"in":1}]},{"l":336,"i":[{"h":15,"in":1}]},{"l":337,"i":[{"h":15,"in":1}]},{"l":341,"i":[{"h":0,"in":1}]},{"l":343,"i":[{"h":0,"in":1}]},{"l":345,"i":[{"h":1,"in":1}]},{"l":349,"i":[{"h":1,"in":1}]},{"l":352,"i":[{"h":1,"in":1}]},{"l":369,"i":[{"h":1,"in":1}]},{"l":372,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":374,"i":[{"h":1,"in":1}]},{"l":375,"i":[{"h":1,"in":1}]},{"l":380,"i":[{"h":1,"in":1}]},{"l":381,"i":[{"h":1,"in":1}]},{"l":383,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":384,"i":[{"h":2,"in":1}]},{"l":385,"i":[{"h":2,"in":1}]},{"l":386,"i":[{"h":2,"in":1}]},{"l":388,"i":[{"h":1,"in":1}]},{"l":389,"i":[{"h":1,"in":1}]},{"l":391,"i":[{"h":1,"in":1}]},{"l":392,"i":[{"h":1,"in":1}]},{"l":393,"i":[{"h":1,"in":1}]},{"l":394,"i":[{"h":1,"in":1}]},{"l":396,"i":[{"h":1,"in":1}]},{"l":399,"i":[{"h":27,"in":1}]},{"l":401,"i":[{"h":26,"in":1}]},{"l":402,"i":[{"h":26,"in":1}]},{"l":406,"i":[{"h":0,"in":1}]},{"l":408,"i":[{"h":0,"in":1}]},{"l":410,"i":[{"h":1,"in":1}]},{"l":417,"i":[{"h":1,"in":1}]},{"l":418,"i":[{"h":1,"in":1}]},{"l":420,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":421,"i":[{"h":2,"in":1}]},{"l":422,"i":[{"h":2,"in":1}]},{"l":423,"i":[{"h":2,"in":1}]},{"l":425,"i":[{"h":1,"in":1}]},{"l":426,"i":[{"h":1,"in":1}]},{"l":428,"i":[{"h":1,"in":1}]},{"l":429,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":430,"i":[{"h":1,"in":1}]},{"l":433,"i":[{"h":1,"in":1}]},{"l":434,"i":[{"h":1,"in":1}]},{"l":435,"i":[{"h":1,"in":1}]},{"l":437,"i":[{"h":1,"in":1}]},{"l":439,"i":[{"h":16,"in":1}]},{"l":441,"i":[{"h":15,"in":1}]},{"l":442,"i":[{"h":15,"in":1}]},{"l":446,"i":[{"h":0,"in":1}]},{"l":448,"i":[{"h":0,"in":1}]},{"l":450,"i":[{"h":1,"in":1}]},{"l":454,"i":[{"h":1,"in":1}]},{"l":457,"i":[{"h":1,"in":1}]},{"l":465,"i":[{"h":1,"in":1}]},{"l":466,"i":[{"h":1,"in":1}]},{"l":469,"i":[{"h":1,"in":1}]},{"l":470,"i":[{"h":1,"in":1}]},{"l":471,"i":[{"h":1,"in":1}]},{"l":472,"i":[{"h":1,"in":1}]},{"l":473,"i":[{"h":1,"in":1}]},{"l":474,"i":[{"h":1,"in":1}]},{"l":475,"i":[{"h":1,"in":1}]},{"l":478,"i":[{"h":1,"in":1}]},{"l":479,"i":[{"h":1,"in":1}]},{"l":482,"i":[{"h":1,"in":1}]},{"l":484,"i":[{"h":1,"in":1}]},{"l":486,"i":[{"h":0,"in":1}]},{"l":503,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":505,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":506,"i":[{"h":40,"in":1}]},{"l":507,"i":[{"h":40,"in":1}]},{"l":508,"i":[{"h":40,"in":1}]},{"l":510,"i":[{"h":20,"in":1}]},{"l":513,"i":[{"h":20,"in":1}]},{"l":529,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":531,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":532,"i":[{"h":40,"in":1}]},{"l":533,"i":[{"h":40,"in":1}]},{"l":534,"i":[{"h":40,"in":1}]},{"l":536,"i":[{"h":20,"in":1}]},{"l":539,"i":[{"h":20,"in":1}]},{"l":558,"i":[{"h":3,"in":1}]},{"l":560,"i":[{"h":3,"in":1}]},{"l":562,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":564,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":565,"i":[{"h":240,"in":1}]},{"l":566,"i":[{"h":240,"in":1}]},{"l":567,"i":[{"h":240,"in":1}]},{"l":569,"i":[{"h":120,"in":1}]},{"l":572,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":574,"i":[{"h":121,"in":1}]},{"l":575,"i":[{"h":121,"in":1}]},{"l":576,"i":[{"h":121,"in":1}]},{"l":577,"i":[{"h":121,"in":1}]},{"l":582,"i":[{"h":15,"in":1}]},{"l":586,"i":[{"h":120,"in":1}]},{"l":590,"i":[{"h":14,"in":1},{"h":14,"in":2}]},{"l":595,"i":[{"h":3,"in":1}]},{"l":613,"i":[{"h":3,"in":1}]},{"l":614,"i":[{"h":3,"in":1}]},{"l":616,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":618,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":619,"i":[{"h":240,"in":1}]},{"l":620,"i":[{"h":240,"in":1}]},{"l":621,"i":[{"h":240,"in":1}]},{"l":623,"i":[{"h":120,"in":1}]},{"l":626,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":628,"i":[{"h":105,"in":1}]},{"l":629,"i":[{"h":105,"in":1}]},{"l":630,"i":[{"h":105,"in":1}]},{"l":631,"i":[{"h":105,"in":1}]},{"l":636,"i":[{"h":0,"in":1}]},{"l":640,"i":[{"h":120,"in":1}]},{"l":644,"i":[{"h":14,"in":1},{"h":14,"in":2}]},{"l":648,"i":[{"h":3,"in":1}]},{"l":664,"i":[{"h":3,"in":1}]},{"l":665,"i":[{"h":3,"in":1}]},{"l":666,"i":[{"h":3,"in":1}]},{"l":668,"i":[{"h":1470,"in":1}]},{"l":672,"i":[{"h":696,"in":1}]},{"l":674,"i":[{"h":684,"in":1}]},{"l":677,"i":[{"h":1470,"in":1}]},{"l":678,"i":[{"h":1470,"in":1}]},{"l":684,"i":[{"h":0,"in":1}]},{"l":685,"i":[{"h":0,"in":1}]},{"l":687,"i":[{"h":121,"in":1}]},{"l":690,"i":[{"h":0,"in":1}]},{"l":693,"i":[{"h":0,"in":1}]},{"l":697,"i":[{"h":0,"in":1}]},{"l":701,"i":[{"h":0,"in":1}]},{"l":704,"i":[{"h":121,"in":1}]},{"l":710,"i":[{"h":121,"in":1}]},{"l":721,"i":[{"h":3,"in":1}]},{"l":726,"i":[{"h":0,"in":1}]},{"l":728,"i":[{"h":0,"in":1}]},{"l":748,"i":[{"h":3,"in":1}]},{"l":749,"i":[{"h":3,"in":1}]},{"l":751,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":753,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":754,"i":[{"h":240,"in":1}]},{"l":755,"i":[{"h":240,"in":1}]},{"l":756,"i":[{"h":240,"in":1}]},{"l":758,"i":[{"h":120,"in":1}]},{"l":761,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":763,"i":[{"h":121,"in":1}]},{"l":764,"i":[{"h":121,"in":1}]},{"l":765,"i":[{"h":121,"in":1}]},{"l":766,"i":[{"h":121,"in":1}]},{"l":771,"i":[{"h":16,"in":1}]},{"l":775,"i":[{"h":120,"in":1}]},{"l":779,"i":[{"h":9,"in":1},{"h":9,"in":2}]},{"l":783,"i":[{"h":3,"in":1}]},{"l":798,"i":[{"h":142,"in":1}]},{"l":799,"i":[{"h":142,"in":1}]},{"l":800,"i":[{"h":504,"in":1}]},{"l":801,"i":[{"h":362,"in":1}]},{"l":802,"i":[{"h":362,"in":1}]},{"l":806,"i":[{"h":0,"in":1}]},{"l":809,"i":[{"h":142,"in":1}]},{"l":810,"i":[{"h":142,"in":1}]},{"l":811,"i":[{"h":142,"in":1}]},{"l":812,"i":[{"h":142,"in":1}]},{"l":813,"i":[{"h":142,"in":1}]},{"l":814,"i":[{"h":142,"in":1}]},{"l":815,"i":[{"h":142,"in":1}]},{"l":816,"i":[{"h":142,"in":1}]},{"l":819,"i":[{"h":142,"in":1}]},{"l":820,"i":[{"h":142,"in":1}]},{"l":840,"i":[{"h":3,"in":1}]},{"l":841,"i":[{"h":3,"in":1}]},{"l":843,"i":[{"h":3,"in":1},{"h":120,"in":2}]},{"l":845,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":846,"i":[{"h":240,"in":1}]},{"l":847,"i":[{"h":240,"in":1}]},{"l":848,"i":[{"h":240,"in":1}]},{"l":850,"i":[{"h":120,"in":1}]},{"l":853,"i":[{"h":120,"in":1},{"h":240,"in":2}]},{"l":855,"i":[{"h":120,"in":1}]},{"l":856,"i":[{"h":120,"in":1}]},{"l":857,"i":[{"h":120,"in":1}]},{"l":858,"i":[{"h":120,"in":1}]},{"l":863,"i":[{"h":16,"in":1}]},{"l":867,"i":[{"h":120,"in":1}]},{"l":871,"i":[{"h":5,"in":1},{"h":5,"in":2}]},{"l":875,"i":[{"h":3,"in":1}]},{"l":891,"i":[{"h":3,"in":1}]},{"l":892,"i":[{"h":3,"in":1}]},{"l":893,"i":[{"h":3,"in":1}]},{"l":900,"i":[{"h":727,"in":1}]},{"l":904,"i":[{"h":345,"in":1}]},{"l":906,"i":[{"h":314,"in":1}]},{"l":909,"i":[{"h":727,"in":1}]},{"l":910,"i":[{"h":727,"in":1}]},{"l":916,"i":[{"h":0,"in":1}]},{"l":917,"i":[{"h":0,"in":1}]},{"l":919,"i":[{"h":121,"in":1}]},{"l":922,"i":[{"h":0,"in":1}]},{"l":925,"i":[{"h":0,"in":1}]},{"l":929,"i":[{"h":0,"in":1}]},{"l":933,"i":[{"h":0,"in":1}]},{"l":936,"i":[{"h":121,"in":1}]},{"l":948,"i":[{"h":121,"in":1}]},{"l":963,"i":[{"h":3,"in":1}]},{"l":973,"i":[{"h":0,"in":1}]},{"l":975,"i":[{"h":0,"in":1}]},{"l":999,"i":[{"h":3,"in":1}]},{"l":1000,"i":[{"h":3,"in":1}]},{"l":1001,"i":[{"h":3,"in":1}]},{"l":1008,"i":[{"h":1327,"in":1}]},{"l":1012,"i":[{"h":616,"in":1}]},{"l":1014,"i":[{"h":600,"in":1}]},{"l":1017,"i":[{"h":1327,"in":1}]},{"l":1018,"i":[{"h":1327,"in":1}]},{"l":1024,"i":[{"h":0,"in":1}]},{"l":1025,"i":[{"h":0,"in":1}]},{"l":1027,"i":[{"h":105,"in":1}]},{"l":1030,"i":[{"h":0,"in":1}]},{"l":1033,"i":[{"h":0,"in":1}]},{"l":1037,"i":[{"h":0,"in":1}]},{"l":1041,"i":[{"h":0,"in":1}]},{"l":1044,"i":[{"h":105,"in":1}]},{"l":1056,"i":[{"h":105,"in":1}]},{"l":1071,"i":[{"h":3,"in":1}]},{"l":1085,"i":[{"h":0,"in":1}]},{"l":1087,"i":[{"h":0,"in":1}]},{"l":1104,"i":[{"h":3,"in":1}]},{"l":1105,"i":[{"h":3,"in":1}]},{"l":1106,"i":[{"h":3,"in":1}]},{"l":1113,"i":[{"h":711,"in":1}]},{"l":1117,"i":[{"h":327,"in":1}]},{"l":1119,"i":[{"h":315,"in":1}]},{"l":1122,"i":[{"h":711,"in":1}]},{"l":1123,"i":[{"h":711,"in":1}]},{"l":1129,"i":[{"h":0,"in":1}]},{"l":1130,"i":[{"h":0,"in":1}]},{"l":1132,"i":[{"h":120,"in":1}]},{"l":1135,"i":[{"h":0,"in":1}]},{"l":1138,"i":[{"h":0,"in":1}]},{"l":1142,"i":[{"h":0,"in":1}]},{"l":1146,"i":[{"h":0,"in":1}]},{"l":1149,"i":[{"h":120,"in":1}]},{"l":1161,"i":[{"h":120,"in":1}]},{"l":1176,"i":[{"h":3,"in":1}]},{"l":1190,"i":[{"h":0,"in":1}]},{"l":1192,"i":[{"h":0,"in":1}]},{"l":1206,"i":[{"h":1,"in":1}]},{"l":1208,"i":[{"h":1,"in":1}]},{"l":1211,"i":[{"h":1,"in":1}]},{"l":1213,"i":[{"h":1,"in":1}]},{"l":1218,"i":[{"h":1,"in":1}]},{"l":1219,"i":[{"h":1,"in":1}]},{"l":1220,"i":[{"h":1,"in":1}]},{"l":1221,"i":[{"h":1,"in":1}]},{"l":1225,"i":[{"h":1,"in":1}]},{"l":1226,"i":[{"h":1,"in":1}]},{"l":1233,"i":[{"h":1,"in":1}]},{"l":1235,"i":[{"h":0,"in":1}]},{"l":1237,"i":[{"h":0,"in":1}]},{"l":1243,"i":[{"h":1,"in":1}]},{"l":1244,"i":[{"h":1,"in":1}]},{"l":1245,"i":[{"h":1,"in":1}]},{"l":1249,"i":[{"h":1,"in":1}]},{"l":1250,"i":[{"h":1,"in":1}]},{"l":1257,"i":[{"h":1,"in":1}]},{"l":1259,"i":[{"h":0,"in":1}]},{"l":1261,"i":[{"h":0,"in":1}]},{"l":1268,"i":[{"h":1,"in":1}]},{"l":1269,"i":[{"h":1,"in":1}]},{"l":1270,"i":[{"h":1,"in":1}]},{"l":1271,"i":[{"h":1,"in":1}]},{"l":1276,"i":[{"h":1,"in":1}]},{"l":1280,"i":[{"h":1,"in":1}]},{"l":1281,"i":[{"h":1,"in":1}]},{"l":1282,"i":[{"h":1,"in":1}]},{"l":1285,"i":[{"h":200001,"in":1}]},{"l":1286,"i":[{"h":200000,"in":1}]},{"l":1287,"i":[{"h":200000,"in":1}]},{"l":1291,"i":[{"h":0,"in":1}]},{"l":1292,"i":[{"h":0,"in":1}]},{"l":1293,"i":[{"h":0,"in":1}]},{"l":1300,"i":[{"h":1,"in":1}]},{"l":1302,"i":[{"h":0,"in":1}]},{"l":1304,"i":[{"h":0,"in":1}]},{"l":1311,"i":[{"h":1,"in":1}]},{"l":1312,"i":[{"h":1,"in":1}]},{"l":1313,"i":[{"h":1,"in":1}]},{"l":1314,"i":[{"h":1,"in":1}]},{"l":1318,"i":[{"h":1,"in":1}]},{"l":1319,"i":[{"h":1,"in":1}]},{"l":1326,"i":[{"h":1,"in":1}]},{"l":1328,"i":[{"h":0,"in":1}]},{"l":1330,"i":[{"h":0,"in":1}]},{"l":1345,"i":[{"h":1,"in":1}]},{"l":1346,"i":[{"h":1,"in":1}]},{"l":1347,"i":[{"h":1,"in":1}]},{"l":1348,"i":[{"h":1,"in":1}]},{"l":1350,"i":[{"h":1,"in":1}]},{"l":1354,"i":[{"h":1,"in":1}]},{"l":1355,"i":[{"h":1,"in":1}]},{"l":1362,"i":[{"h":1,"in":1}]},{"l":1365,"i":[{"h":0,"in":1}]},{"l":1367,"i":[{"h":0,"in":1}]},{"l":1371,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1381,"i":[{"h":1,"in":1}]},{"l":1382,"i":[{"h":1,"in":1}]},{"l":1383,"i":[{"h":1,"in":1}]},{"l":1385,"i":[{"h":1,"in":1}]},{"l":1389,"i":[{"h":1,"in":1}]},{"l":1390,"i":[{"h":1,"in":1}]},{"l":1397,"i":[{"h":1,"in":1}]},{"l":1400,"i":[{"h":0,"in":1}]},{"l":1402,"i":[{"h":0,"in":1}]},{"l":1406,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1412,"i":[{"h":1,"in":1}]},{"l":1413,"i":[{"h":1,"in":1}]},{"l":1414,"i":[{"h":1,"in":1}]},{"l":1415,"i":[{"h":1,"in":1}]},{"l":1420,"i":[{"h":1,"in":1}]},{"l":1424,"i":[{"h":1,"in":1}]},{"l":1425,"i":[{"h":1,"in":1}]},{"l":1426,"i":[{"h":1,"in":1}]},{"l":1429,"i":[{"h":200001,"in":1}]},{"l":1430,"i":[{"h":200000,"in":1}]},{"l":1431,"i":[{"h":200000,"in":1}]},{"l":1435,"i":[{"h":0,"in":1}]},{"l":1440,"i":[{"h":0,"in":1}]},{"l":1441,"i":[{"h":0,"in":1}]},{"l":1448,"i":[{"h":1,"in":1}]},{"l":1450,"i":[{"h":0,"in":1}]},{"l":1452,"i":[{"h":0,"in":1}]},{"l":1463,"i":[{"h":1,"in":1}]},{"l":1464,"i":[{"h":1,"in":1}]},{"l":1465,"i":[{"h":1,"in":1}]},{"l":1466,"i":[{"h":1,"in":1}]},{"l":1468,"i":[{"h":1,"in":1}]},{"l":1472,"i":[{"h":1,"in":1}]},{"l":1473,"i":[{"h":1,"in":1}]},{"l":1480,"i":[{"h":1,"in":1}]},{"l":1483,"i":[{"h":0,"in":1}]},{"l":1485,"i":[{"h":0,"in":1}]},{"l":1489,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1494,"i":[{"h":1,"in":1}]},{"l":1499,"i":[{"h":1,"in":1}]},{"l":1500,"i":[{"h":1,"in":1}]},{"l":1501,"i":[{"h":1,"in":1}]},{"l":1502,"i":[{"h":1,"in":1}]},{"l":1512,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1513,"i":[{"h":2,"in":1}]},{"l":1514,"i":[{"h":2,"in":1}]},{"l":1515,"i":[{"h":2,"in":1}]},{"l":1518,"i":[{"h":1,"in":1}]},{"l":1521,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1522,"i":[{"h":2,"in":1}]},{"l":1523,"i":[{"h":2,"in":1}]},{"l":1524,"i":[{"h":2,"in":1}]},{"l":1527,"i":[{"h":1,"in":1}]},{"l":1529,"i":[{"h":1,"in":1}]},{"l":1530,"i":[{"h":1,"in":1}]},{"l":1531,"i":[{"h":1,"in":1}]},{"l":1534,"i":[{"h":10,"in":1}]},{"l":1535,"i":[{"h":9,"in":1}]},{"l":1536,"i":[{"h":9,"in":1}]},{"l":1542,"i":[{"h":0,"in":1}]},{"l":1543,"i":[{"h":0,"in":1}]},{"l":1546,"i":[{"h":2,"in":1}]},{"l":1550,"i":[{"h":0,"in":1}]},{"l":1554,"i":[{"h":0,"in":1}]},{"l":1557,"i":[{"h":2,"in":1}]},{"l":1563,"i":[{"h":2,"in":1}]},{"l":1569,"i":[{"h":1,"in":1}]},{"l":1571,"i":[{"h":0,"in":1}]},{"l":1573,"i":[{"h":0,"in":1}]},{"l":1577,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1582,"i":[{"h":1,"in":1}]},{"l":1583,"i":[{"h":1,"in":1}]},{"l":1584,"i":[{"h":1,"in":1}]},{"l":1585,"i":[{"h":1,"in":1}]},{"l":1595,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1596,"i":[{"h":2,"in":1}]},{"l":1597,"i":[{"h":2,"in":1}]},{"l":1598,"i":[{"h":2,"in":1}]},{"l":1601,"i":[{"h":1,"in":1}]},{"l":1602,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1604,"i":[{"h":1,"in":1}]},{"l":1605,"i":[{"h":1,"in":1}]},{"l":1606,"i":[{"h":1,"in":1}]},{"l":1607,"i":[{"h":1,"in":1}]},{"l":1611,"i":[{"h":1,"in":1}]},{"l":1613,"i":[{"h":1,"in":1}]},{"l":1614,"i":[{"h":1,"in":1}]},{"l":1615,"i":[{"h":1,"in":1}]},{"l":1618,"i":[{"h":7,"in":1}]},{"l":1619,"i":[{"h":6,"in":1}]},{"l":1620,"i":[{"h":6,"in":1}]},{"l":1626,"i":[{"h":0,"in":1}]},{"l":1627,"i":[{"h":0,"in":1}]},{"l":1630,"i":[{"h":1,"in":1}]},{"l":1634,"i":[{"h":0,"in":1}]},{"l":1638,"i":[{"h":0,"in":1}]},{"l":1641,"i":[{"h":1,"in":1}]},{"l":1647,"i":[{"h":1,"in":1}]},{"l":1653,"i":[{"h":1,"in":1}]},{"l":1655,"i":[{"h":0,"in":1}]},{"l":1657,"i":[{"h":0,"in":1}]},{"l":1661,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1666,"i":[{"h":1,"in":1}]},{"l":1667,"i":[{"h":1,"in":1}]},{"l":1668,"i":[{"h":1,"in":1}]},{"l":1669,"i":[{"h":1,"in":1}]},{"l":1671,"i":[{"h":1,"in":1}]},{"l":1674,"i":[{"h":1,"in":1}]},{"l":1675,"i":[{"h":1,"in":1}]},{"l":1682,"i":[{"h":1,"in":1}]},{"l":1685,"i":[{"h":0,"in":1}]},{"l":1687,"i":[{"h":0,"in":1}]},{"l":1690,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1695,"i":[{"h":1,"in":1}]},{"l":1696,"i":[{"h":1,"in":1}]},{"l":1697,"i":[{"h":1,"in":1}]},{"l":1699,"i":[{"h":1,"in":1}]},{"l":1702,"i":[{"h":1,"in":1}]},{"l":1703,"i":[{"h":1,"in":1}]},{"l":1710,"i":[{"h":1,"in":1}]},{"l":1713,"i":[{"h":0,"in":1}]},{"l":1715,"i":[{"h":0,"in":1}]},{"l":1718,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1724,"i":[{"h":1,"in":1}]},{"l":1725,"i":[{"h":1,"in":1}]},{"l":1726,"i":[{"h":1,"in":1}]},{"l":1727,"i":[{"h":1,"in":1}]},{"l":1736,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":1737,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":1738,"i":[{"h":40,"in":1}]},{"l":1739,"i":[{"h":40,"in":1}]},{"l":1740,"i":[{"h":40,"in":1}]},{"l":1743,"i":[{"h":20,"in":1}]},{"l":1748,"i":[{"h":1,"in":1}]},{"l":1749,"i":[{"h":1,"in":1}]},{"l":1750,"i":[{"h":1,"in":1}]},{"l":1753,"i":[{"h":200001,"in":1}]},{"l":1754,"i":[{"h":200000,"in":1}]},{"l":1755,"i":[{"h":200000,"in":1}]},{"l":1759,"i":[{"h":0,"in":1}]},{"l":1764,"i":[{"h":0,"in":1}]},{"l":1765,"i":[{"h":0,"in":1}]},{"l":1772,"i":[{"h":1,"in":1}]},{"l":1774,"i":[{"h":0,"in":1}]},{"l":1776,"i":[{"h":0,"in":1}]},{"l":1779,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1784,"i":[{"h":1,"in":1}]},{"l":1785,"i":[{"h":1,"in":1}]},{"l":1786,"i":[{"h":1,"in":1}]},{"l":1787,"i":[{"h":1,"in":1}]},{"l":1789,"i":[{"h":1,"in":1}]},{"l":1793,"i":[{"h":1,"in":1}]},{"l":1794,"i":[{"h":1,"in":1}]},{"l":1801,"i":[{"h":1,"in":1}]},{"l":1804,"i":[{"h":0,"in":1}]},{"l":1806,"i":[{"h":0,"in":1}]},{"l":1811,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":1816,"i":[{"h":1,"in":1}]},{"l":1821,"i":[{"h":1,"in":1}]},{"l":1822,"i":[{"h":1,"in":1}]},{"l":1823,"i":[{"h":1,"in":1}]},{"l":1824,"i":[{"h":1,"in":1}]},{"l":1834,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1835,"i":[{"h":2,"in":1}]},{"l":1836,"i":[{"h":2,"in":1}]},{"l":1837,"i":[{"h":2,"in":1}]},{"l":1840,"i":[{"h":1,"in":1}]},{"l":1843,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1844,"i":[{"h":2,"in":1}]},{"l":1845,"i":[{"h":2,"in":1}]},{"l":1846,"i":[{"h":2,"in":1}]},{"l":1849,"i":[{"h":1,"in":1}]},{"l":1851,"i":[{"h":1,"in":1}]},{"l":1852,"i":[{"h":1,"in":1}]},{"l":1853,"i":[{"h":1,"in":1}]},{"l":1856,"i":[{"h":10,"in":1}]},{"l":1857,"i":[{"h":9,"in":1}]},{"l":1858,"i":[{"h":9,"in":1}]},{"l":1864,"i":[{"h":0,"in":1}]},{"l":1865,"i":[{"h":0,"in":1}]},{"l":1868,"i":[{"h":2,"in":1}]},{"l":1872,"i":[{"h":0,"in":1}]},{"l":1876,"i":[{"h":0,"in":1}]},{"l":1879,"i":[{"h":2,"in":1}]},{"l":1885,"i":[{"h":2,"in":1}]},{"l":1891,"i":[{"h":1,"in":1}]},{"l":1893,"i":[{"h":0,"in":1}]},{"l":1895,"i":[{"h":0,"in":1}]},{"l":1899,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1904,"i":[{"h":1,"in":1}]},{"l":1905,"i":[{"h":1,"in":1}]},{"l":1906,"i":[{"h":1,"in":1}]},{"l":1907,"i":[{"h":1,"in":1}]},{"l":1917,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1918,"i":[{"h":2,"in":1}]},{"l":1919,"i":[{"h":2,"in":1}]},{"l":1920,"i":[{"h":2,"in":1}]},{"l":1923,"i":[{"h":1,"in":1}]},{"l":1924,"i":[{"h":1,"in":1},{"h":2,"in":2}]},{"l":1926,"i":[{"h":1,"in":1}]},{"l":1927,"i":[{"h":1,"in":1}]},{"l":1928,"i":[{"h":1,"in":1}]},{"l":1929,"i":[{"h":1,"in":1}]},{"l":1933,"i":[{"h":1,"in":1}]},{"l":1935,"i":[{"h":1,"in":1}]},{"l":1936,"i":[{"h":1,"in":1}]},{"l":1937,"i":[{"h":1,"in":1}]},{"l":1940,"i":[{"h":7,"in":1}]},{"l":1941,"i":[{"h":6,"in":1}]},{"l":1942,"i":[{"h":6,"in":1}]},{"l":1948,"i":[{"h":0,"in":1}]},{"l":1949,"i":[{"h":0,"in":1}]},{"l":1952,"i":[{"h":1,"in":1}]},{"l":1956,"i":[{"h":0,"in":1}]},{"l":1960,"i":[{"h":0,"in":1}]},{"l":1963,"i":[{"h":1,"in":1}]},{"l":1969,"i":[{"h":1,"in":1}]},{"l":1975,"i":[{"h":1,"in":1}]},{"l":1977,"i":[{"h":0,"in":1}]},{"l":1979,"i":[{"h":0,"in":1}]},{"l":1983,"i":[{"h":10,"in":1},{"h":10,"in":2}]},{"l":1988,"i":[{"h":1,"in":1}]},{"l":1989,"i":[{"h":1,"in":1}]},{"l":1990,"i":[{"h":1,"in":1}]},{"l":1991,"i":[{"h":1,"in":1}]},{"l":1993,"i":[{"h":1,"in":1}]},{"l":1996,"i":[{"h":1,"in":1}]},{"l":1997,"i":[{"h":1,"in":1}]},{"l":2004,"i":[{"h":1,"in":1}]},{"l":2007,"i":[{"h":0,"in":1}]},{"l":2009,"i":[{"h":0,"in":1}]},{"l":2012,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2017,"i":[{"h":1,"in":1}]},{"l":2018,"i":[{"h":1,"in":1}]},{"l":2019,"i":[{"h":1,"in":1}]},{"l":2021,"i":[{"h":1,"in":1}]},{"l":2024,"i":[{"h":1,"in":1}]},{"l":2025,"i":[{"h":1,"in":1}]},{"l":2032,"i":[{"h":1,"in":1}]},{"l":2035,"i":[{"h":0,"in":1}]},{"l":2037,"i":[{"h":0,"in":1}]},{"l":2040,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2046,"i":[{"h":1,"in":1}]},{"l":2047,"i":[{"h":1,"in":1}]},{"l":2048,"i":[{"h":1,"in":1}]},{"l":2049,"i":[{"h":1,"in":1}]},{"l":2058,"i":[{"h":1,"in":1},{"h":20,"in":2}]},{"l":2059,"i":[{"h":20,"in":1},{"h":40,"in":2}]},{"l":2060,"i":[{"h":40,"in":1}]},{"l":2061,"i":[{"h":40,"in":1}]},{"l":2062,"i":[{"h":40,"in":1}]},{"l":2065,"i":[{"h":20,"in":1}]},{"l":2070,"i":[{"h":1,"in":1}]},{"l":2071,"i":[{"h":1,"in":1}]},{"l":2072,"i":[{"h":1,"in":1}]},{"l":2075,"i":[{"h":200001,"in":1}]},{"l":2076,"i":[{"h":200000,"in":1}]},{"l":2077,"i":[{"h":200000,"in":1}]},{"l":2081,"i":[{"h":0,"in":1}]},{"l":2086,"i":[{"h":0,"in":1}]},{"l":2087,"i":[{"h":0,"in":1}]},{"l":2094,"i":[{"h":1,"in":1}]},{"l":2096,"i":[{"h":0,"in":1}]},{"l":2098,"i":[{"h":0,"in":1}]},{"l":2101,"i":[{"h":20,"in":1},{"h":20,"in":2}]},{"l":2106,"i":[{"h":1,"in":1}]},{"l":2107,"i":[{"h":1,"in":1}]},{"l":2108,"i":[{"h":1,"in":1}]},{"l":2109,"i":[{"h":1,"in":1}]},{"l":2111,"i":[{"h":1,"in":1}]},{"l":2115,"i":[{"h":1,"in":1}]},{"l":2116,"i":[{"h":1,"in":1}]},{"l":2123,"i":[{"h":1,"in":1}]},{"l":2126,"i":[{"h":0,"in":1}]},{"l":2128,"i":[{"h":0,"in":1}]},{"l":2134,"i":[{"h":1,"in":1}]},{"l":2135,"i":[{"h":1,"in":1}]},{"l":2136,"i":[{"h":1,"in":1}]},{"l":2139,"i":[{"h":1,"in":1}]},{"l":2141,"i":[{"h":1,"in":1}]},{"l":2143,"i":[{"h":0,"in":1}]},{"l":2144,"i":[{"h":1,"in":1}]},{"l":2147,"i":[{"h":1,"in":1}]},{"l":2152,"i":[{"h":1,"in":1}]},{"l":2153,"i":[{"h":0,"in":1}]},{"l":2154,"i":[{"h":0,"in":1}]}],"mi":3}]},"16":{"pr":"work.left_shift","stmts":[{"f":19,"cov":[{"l":23,"i":[{"h":603,"in":1}]},{"l":24,"i":[{"h":603,"in":1}]},{"l":25,"i":[{"h":603,"in":1}]},{"l":28,"i":[{"h":91,"in":1}]},{"l":29,"i":[{"h":91,"in":1}]},{"l":32,"i":[{"h":72,"in":1}]},{"l":33,"i":[{"h":72,"in":1}]},{"l":36,"i":[{"h":25,"in":1}]},{"l":37,"i":[{"h":25,"in":1}]},{"l":40,"i":[{"h":21,"in":1}]},{"l":41,"i":[{"h":21,"in":1}]},{"l":44,"i":[{"h":10,"in":1}]},{"l":45,"i":[{"h":10,"in":1}]},{"l":48,"i":[{"h":2,"in":1}]},{"l":49,"i":[{"h":2,"in":1}]},{"l":52,"i":[{"h":4,"in":1}]},{"l":53,"i":[{"h":4,"in":1}]},{"l":56,"i":[{"h":1,"in":1}]},{"l":57,"i":[{"h":1,"in":1}]},{"l":60,"i":[{"h":0,"in":1}]},{"l":61,"i":[{"h":0,"in":1}]},{"l":64,"i":[{"h":377,"in":1}]},{"l":65,"i":[{"h":377,"in":1}]}],"mi":1}]},"10":{"pr":"work.mul_bf16","stmts":[{"f":11,"cov":[{"l":13,"i":[{"h":1244,"in":1}]},{"l":15,"i":[{"h":4,"in":1}]},{"l":16,"i":[{"h":4,"in":1}]},{"l":17,"i":[{"h":4,"in":1}]},{"l":20,"i":[{"h":1240,"in":1}]},{"l":21,"i":[{"h":1240,"in":1}]},{"l":22,"i":[{"h":1240,"in":1}]},{"l":25,"i":[{"h":495,"in":1}]},{"l":26,"i":[{"h":495,"in":1}]},{"l":27,"i":[{"h":495,"in":1}]},{"l":39,"i":[{"h":493,"in":1}]},{"l":41,"i":[{"h":17,"in":1}]},{"l":44,"i":[{"h":476,"in":1}]},{"l":48,"i":[{"h":11,"in":1}]},{"l":51,"i":[{"h":482,"in":1}]},{"l":74,"i":[{"h":4,"in":1}]},{"l":92,"i":[{"h":1226,"in":1}]},{"l":97,"i":[{"h":477,"in":1}]},{"l":99,"i":[{"h":166,"in":1}]},{"l":101,"i":[{"h":311,"in":1}]},{"l":106,"i":[{"h":1807,"in":1}]},{"l":107,"i":[{"h":1264,"in":1}]}],"mi":1}]},"18":{"pr":"work.sync_fifo","stmts":[{"f":21,"cov":[{"l":18,"i":[{"h":1815,"in":1}]},{"l":20,"i":[{"h":8,"in":1}]},{"l":23,"i":[{"h":480,"in":1}]},{"l":24,"i":[{"h":480,"in":1}]},{"l":29,"i":[{"h":1451,"in":1}]},{"l":31,"i":[{"h":8,"in":1}]},{"l":34,"i":[{"h":480,"in":1}]},{"l":40,"i":[{"h":823,"in":1}]},{"l":41,"i":[{"h":968,"in":1}]},{"l":42,"i":[{"h":968,"in":1}]}],"mi":1}]},"11":{"pr":"work.wallacetree_8b","stmts":[{"f":12,"cov":[{"l":28,"i":[{"h":344,"in":1,"gi":" (GI=0)"},{"h":302,"in":1,"gi":" (GI=1)"}]},{"l":29,"i":[{"h":278,"in":1,"gi":" (GI=0)"},{"h":277,"in":1,"gi":" (GI=1)"}]},{"l":56,"i":[{"h":382,"in":1}]},{"l":70,"i":[{"h":848,"in":1}]},{"l":75,"i":[{"h":48,"in":1}]},{"l":92,"i":[{"h":47,"in":1}]},{"l":107,"i":[{"h":1209,"in":1}]},{"l":126,"i":[{"h":761,"in":1}]},{"l":139,"i":[{"h":2005,"in":1}]},{"l":161,"i":[{"h":1943,"in":1}]},{"l":164,"i":[{"h":1969,"in":1}]},{"l":167,"i":[{"h":1482,"in":1}]},{"l":168,"i":[{"h":1482,"in":1}]}],"mi":1}]}}; +processStatementsData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/sdb1.js b/covhtmlreport/files/sdb1.js new file mode 100644 index 000000000..3f7811f23 --- /dev/null +++ b/covhtmlreport/files/sdb1.js @@ -0,0 +1,2 @@ +var g_db_data = {"34":1,"33":1,"89":1,"32":1,"91":1,"95":1,"97":1,"103":1,"102":1,"101":1,"158":1,"163":1,"162":1,"165":1,"29":1,"27":1,"15":1,"14":1,"26":1,"20":1,"19":1,"13":1,"12":1,"6":1,"17":1,"8":1,"2":1,"16":1,"21":1,"10":1,"23":1,"22":1,"9":1,"7":1,"18":1,"25":1,"24":1,"3":1,"11":1}; +processScopesDbFile(g_db_data); \ No newline at end of file diff --git a/covhtmlreport/files/srcn.js b/covhtmlreport/files/srcn.js new file mode 100644 index 000000000..d876fc28a --- /dev/null +++ b/covhtmlreport/files/srcn.js @@ -0,0 +1,2 @@ +var g_data = ["","./rtl/include/vector/vector_pkg.vh","./tb/unit/vector/lane_tb.sv","./rtl/include/vector/vector_if.vh","./rtl/modules/vector/lane_sequencer.sv","./rtl/include/common/arithmetic/sqrt/sqrt_types.vh","./rtl/modules/vector/lane.sv","./rtl/include/common/arithmetic/sqrt/sqrt_if.sv","./rtl/include/common/arithmetic/divider/div_if.vh","./rtl/include/common/arithmetic/multipliers/mul_if.vh","./rtl/modules/common/arithmetic/mutlipliers/mul_bf16_fu.sv","./rtl/modules/common/arithmetic/mutlipliers/mul_bf16.sv","./rtl/modules/common/arithmetic/mutlipliers/wallacetree_8b.sv","./rtl/modules/common/arithmetic/mutlipliers/ha.sv","./rtl/modules/common/arithmetic/mutlipliers/fa.sv","./rtl/modules/common/arithmetic/adders/adder_8b.sv","./rtl/include/vector/valu_if.vh","./rtl/modules/common/arithmetic/sqrt/sqrt_bf16.sv","./rtl/modules/common/arithmetic/adders/add_bf16.sv","./rtl/modules/common/arithmetic/adders/left_shift.sv","./rtl/modules/vector/lane_fu_pt.sv","./rtl/modules/common/general/fifo.sv","./rtl/modules/common/arithmetic/dividers/div.sv","./rtl/modules/vector/valu.sv","./rtl/modules/common/arithmetic/adders/addsub_bf16.sv"]; +processSrcNamesData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/t1.js b/covhtmlreport/files/t1.js new file mode 100644 index 000000000..5b012aaec --- /dev/null +++ b/covhtmlreport/files/t1.js @@ -0,0 +1,2 @@ +var g_data = {"28":{"pr":"/lane_tb/lane_if","ext":0,"t":[{"n":"CLK","k":4,"f":3,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"accomplished","k":4,"f":3,"l":48,"c":0.00},{"n":"iready","k":4,"f":3,"l":46,"c":0.00},{"n":"lane_in.rm[4-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.valid_in[4-2]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.valid_in[1]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.valid_in[0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready_in[4-2]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready_in[1]","k":4,"f":3,"l":51,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_in.ready_in[0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[4][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[4][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[4][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[4][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[4][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[4][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[4][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[4][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[3][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[3][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[3][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[3][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[3][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[3][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[3][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[3][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[2][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[2][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[2][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[2][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[2][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[2][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[2][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[2][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[1][1].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[1][1].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[1][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[1][0].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[1][0].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[0][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[0][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[0][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[0][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v1[0][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[4][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[4][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[4][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[4][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[4][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[4][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[4][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[4][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[3][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[3][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[3][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[3][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[3][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[3][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[3][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[3][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[2][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[2][1].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[2][1].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[2][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[2][0].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[2][0].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][1].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][1].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][0].exp[14-7]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[1][0].frac[6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[0][1].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[0][1].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[0][1].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0][1].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0][0].sign","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[0][0].exp[14-10]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.v2[0][0].exp[9-7]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0][0].frac[6-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[4][7-5]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[4][4-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[3][7-6]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[3][5-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[2][7-4]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[2][3-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[1][7-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[0][7-6]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[0][5]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[0][4]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vd[0][3-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[4][1-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[3][1-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[2][1-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[1][1-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vmask[0][1-0]","k":4,"f":3,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vop[4][6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vop[3][6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vop[2][6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vop[1][6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_in.vop[0][6-0]","k":4,"f":3,"l":51,"c":0.00},{"n":"lane_out.result[4].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[4].exp[14-9]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.result[4].exp[8-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[4].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[3].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[3].exp[14]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.result[3].exp[13-12]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[3].exp[11-7]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[3].frac[6-0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[2].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[2].exp[14]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[2].exp[13]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[2].exp[12-9]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[2].exp[8-7]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[2].frac[6-0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[1].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[1].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[1].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[0].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[0].exp[14-10]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.result[0].exp[9-7]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.result[0].frac[6-0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.ready_o[4-2]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.ready_o[1]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.ready_o[0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid_o[4-2]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid_o[1]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.valid_o[0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.rval[4].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[4].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[4].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[3].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[3].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[3].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[2].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[2].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[2].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[1].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[1].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[1].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[0].sign","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[0].exp[14-7]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.rval[0].frac[6-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[4][7-5]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[4][4-3]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[4][2-1]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[4][0]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[3][7-6]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[3][5]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[3][4-0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[2][7-4]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[2][3]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[2][2-1]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[2][0]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[1][7-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[0][7-6]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[0][5]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[0][4]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.vd[0][3]","k":4,"f":3,"l":52,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[0][2-0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.elem_idx[4-2]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.elem_idx[1]","k":4,"f":3,"l":52,"c":0.00},{"n":"lane_out.elem_idx[0]","k":4,"f":3,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.last[4-0]","k":4,"f":3,"l":52,"c":0.00},{"n":"masku_in.vm","k":4,"f":3,"l":55,"c":0.00},{"n":"masku_in.vmask[31-0]","k":4,"f":3,"l":55,"c":0.00},{"n":"masku_out.mask[15][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[14][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[13][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[12][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[11][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[10][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[9][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[8][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[7][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[6][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[5][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[4][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[3][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[2][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[1][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"masku_out.mask[0][1-0]","k":4,"f":3,"l":56,"c":0.00},{"n":"nRST","k":4,"f":3,"l":12,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"opbuff_in.vreg[3][31].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][31].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][31].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][30].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][30].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][30].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][29].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][29].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][29].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][28].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][28].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][28].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][27].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][27].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][27].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][26].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][26].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][26].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][25].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][25].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][25].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][24].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][24].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][24].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][23].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][23].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][23].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][22].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][22].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][22].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][21].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][21].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][21].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][20].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][20].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][20].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][19].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][19].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][19].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][18].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][18].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][18].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][17].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][17].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][17].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][16].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][16].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][16].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][15].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][15].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][15].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][14].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][14].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][14].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][13].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][13].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][13].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][12].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][12].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][12].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][11].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][11].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][11].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][10].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][10].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][10].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][9].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][9].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][9].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][8].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][8].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][8].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][7].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][7].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][7].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][6].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][6].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][6].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][5].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][5].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][5].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][4].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][4].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][4].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][3].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][3].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][3].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][2].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][2].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][2].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][1].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][1].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][1].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][0].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][0].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[3][0].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][31].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][31].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][31].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][30].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][30].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][30].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][29].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][29].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][29].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][28].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][28].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][28].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][27].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][27].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][27].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][26].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][26].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][26].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][25].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][25].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][25].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][24].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][24].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][24].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][23].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][23].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][23].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][22].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][22].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][22].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][21].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][21].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][21].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][20].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][20].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][20].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][19].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][19].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][19].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][18].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][18].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][18].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][17].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][17].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][17].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][16].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][16].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][16].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][15].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][15].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][15].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][14].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][14].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][14].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][13].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][13].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][13].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][12].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][12].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][12].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][11].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][11].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][11].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][10].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][10].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][10].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][9].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][9].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][9].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][8].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][8].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][8].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][7].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][7].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][7].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][6].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][6].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][6].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][5].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][5].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][5].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][4].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][4].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][4].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][3].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][3].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][3].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][2].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][2].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][2].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][1].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][1].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][1].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][0].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][0].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[2][0].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][31].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][31].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][31].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][30].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][30].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][30].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][29].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][29].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][29].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][28].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][28].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][28].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][27].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][27].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][27].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][26].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][26].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][26].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][25].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][25].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][25].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][24].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][24].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][24].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][23].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][23].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][23].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][22].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][22].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][22].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][21].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][21].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][21].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][20].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][20].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][20].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][19].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][19].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][19].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][18].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][18].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][18].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][17].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][17].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][17].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][16].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][16].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][16].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][15].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][15].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][15].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][14].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][14].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][14].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][13].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][13].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][13].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][12].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][12].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][12].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][11].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][11].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][11].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][10].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][10].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][10].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][9].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][9].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][9].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][8].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][8].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][8].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][7].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][7].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][7].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][6].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][6].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][6].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][5].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][5].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][5].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][4].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][4].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][4].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][3].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][3].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][3].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][2].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][2].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][2].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][1].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][1].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][1].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][0].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][0].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[1][0].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][31].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][31].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][31].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][30].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][30].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][30].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][29].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][29].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][29].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][28].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][28].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][28].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][27].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][27].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][27].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][26].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][26].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][26].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][25].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][25].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][25].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][24].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][24].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][24].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][23].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][23].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][23].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][22].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][22].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][22].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][21].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][21].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][21].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][20].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][20].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][20].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][19].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][19].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][19].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][18].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][18].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][18].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][17].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][17].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][17].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][16].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][16].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][16].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][15].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][15].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][15].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][14].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][14].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][14].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][13].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][13].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][13].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][12].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][12].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][12].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][11].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][11].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][11].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][10].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][10].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][10].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][9].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][9].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][9].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][8].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][8].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][8].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][7].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][7].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][7].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][6].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][6].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][6].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][5].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][5].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][5].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][4].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][4].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][4].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][3].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][3].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][3].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][2].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][2].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][2].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][1].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][1].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][1].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][0].sign","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][0].exp[14-7]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vreg[0][0].frac[6-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.dvalid[3-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vmask[1][31-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.vmask[0][31-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.mvalid[1-0]","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_in.ready","k":4,"f":3,"l":42,"c":0.00},{"n":"opbuff_out.vreg[3][31].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][31].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][31].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][30].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][30].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][30].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][29].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][29].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][29].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][28].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][28].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][28].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][27].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][27].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][27].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][26].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][26].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][26].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][25].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][25].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][25].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][24].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][24].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][24].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][23].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][23].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][23].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][22].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][22].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][22].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][21].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][21].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][21].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][20].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][20].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][20].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][19].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][19].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][19].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][18].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][18].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][18].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][17].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][17].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][17].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][16].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][16].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][16].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][15].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][15].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][15].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][14].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][14].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][14].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][13].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][13].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][13].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][12].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][12].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][12].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][11].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][11].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][11].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][10].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][10].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][10].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][9].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][9].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][9].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][8].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][8].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][8].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][7].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][7].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][7].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][6].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][6].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][6].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][5].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][5].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][5].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][4].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][4].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][4].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][3].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][3].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][3].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][2].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][2].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][2].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][1].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][1].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][1].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][0].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][0].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[3][0].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][31].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][31].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][31].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][30].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][30].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][30].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][29].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][29].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][29].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][28].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][28].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][28].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][27].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][27].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][27].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][26].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][26].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][26].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][25].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][25].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][25].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][24].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][24].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][24].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][23].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][23].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][23].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][22].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][22].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][22].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][21].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][21].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][21].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][20].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][20].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][20].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][19].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][19].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][19].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][18].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][18].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][18].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][17].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][17].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][17].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][16].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][16].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][16].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][15].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][15].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][15].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][14].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][14].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][14].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][13].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][13].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][13].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][12].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][12].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][12].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][11].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][11].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][11].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][10].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][10].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][10].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][9].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][9].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][9].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][8].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][8].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][8].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][7].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][7].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][7].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][6].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][6].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][6].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][5].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][5].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][5].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][4].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][4].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][4].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][3].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][3].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][3].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][2].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][2].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][2].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][1].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][1].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][1].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][0].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][0].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[2][0].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][31].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][31].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][31].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][30].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][30].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][30].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][29].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][29].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][29].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][28].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][28].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][28].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][27].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][27].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][27].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][26].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][26].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][26].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][25].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][25].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][25].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][24].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][24].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][24].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][23].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][23].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][23].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][22].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][22].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][22].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][21].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][21].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][21].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][20].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][20].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][20].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][19].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][19].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][19].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][18].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][18].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][18].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][17].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][17].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][17].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][16].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][16].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][16].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][15].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][15].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][15].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][14].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][14].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][14].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][13].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][13].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][13].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][12].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][12].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][12].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][11].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][11].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][11].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][10].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][10].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][10].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][9].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][9].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][9].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][8].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][8].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][8].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][7].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][7].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][7].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][6].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][6].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][6].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][5].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][5].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][5].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][4].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][4].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][4].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][3].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][3].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][3].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][2].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][2].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][2].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][1].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][1].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][1].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][0].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][0].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[1][0].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][31].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][31].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][31].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][30].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][30].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][30].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][29].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][29].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][29].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][28].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][28].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][28].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][27].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][27].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][27].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][26].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][26].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][26].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][25].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][25].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][25].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][24].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][24].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][24].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][23].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][23].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][23].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][22].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][22].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][22].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][21].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][21].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][21].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][20].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][20].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][20].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][19].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][19].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][19].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][18].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][18].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][18].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][17].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][17].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][17].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][16].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][16].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][16].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][15].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][15].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][15].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][14].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][14].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][14].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][13].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][13].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][13].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][12].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][12].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][12].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][11].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][11].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][11].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][10].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][10].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][10].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][9].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][9].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][9].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][8].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][8].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][8].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][7].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][7].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][7].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][6].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][6].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][6].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][5].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][5].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][5].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][4].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][4].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][4].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][3].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][3].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][3].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][2].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][2].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][2].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][1].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][1].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][1].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][0].sign","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][0].exp[14-7]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vreg[0][0].frac[6-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vmask[1][31-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.vmask[0][31-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"opbuff_out.ivalid[1-0]","k":4,"f":3,"l":43,"c":0.00},{"n":"rc_in.result[15][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[15][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[14][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[13][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[12][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[11][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[10][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[9][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[8][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[7][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[6][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[5][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[4][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[3][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[2][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[1][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][4].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][4].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][4].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][3].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][3].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][3].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][2].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][2].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][2].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][1].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][1].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][1].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][0].sign","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][0].exp[14-7]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.result[0][0].frac[6-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[15][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[14][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[13][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[12][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[11][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[10][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[9][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[8][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[7][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[6][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[5][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[4][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[3][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[2][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[1][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.ready_in[0][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[15][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[14][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[13][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[12][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[11][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[10][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[9][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[8][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[7][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[6][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[5][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[4][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[3][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[2][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[1][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.valid_in[0][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[15][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[15][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[15][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[15][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[15][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[14][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[14][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[14][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[14][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[14][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[13][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[13][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[13][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[13][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[13][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[12][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[12][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[12][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[12][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[12][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[11][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[11][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[11][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[11][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[11][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[10][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[10][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[10][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[10][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[10][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[9][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[9][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[9][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[9][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[9][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[8][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[8][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[8][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[8][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[8][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[7][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[7][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[7][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[7][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[7][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[6][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[6][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[6][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[6][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[6][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[5][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[5][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[5][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[5][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[5][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[4][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[4][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[4][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[4][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[4][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[3][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[3][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[3][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[3][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[3][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[2][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[2][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[2][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[2][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[2][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[1][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[1][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[1][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[1][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[1][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[0][4][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[0][3][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[0][2][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[0][1][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.vd[0][0][7-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[15][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[14][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[13][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[12][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[11][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[10][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[9][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[8][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[7][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[6][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[5][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[4][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[3][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[2][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[1][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.elem_idx[0][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[15][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[14][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[13][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[12][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[11][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[10][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[9][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[8][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[7][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[6][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[5][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[4][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[3][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[2][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[1][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_in.last[0][4-0]","k":4,"f":3,"l":59,"c":0.00},{"n":"rc_out.result[4][31].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][31].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][31].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][30].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][30].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][30].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][29].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][29].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][29].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][28].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][28].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][28].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][27].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][27].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][27].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][26].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][26].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][26].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][25].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][25].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][25].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][24].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][24].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][24].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][23].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][23].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][23].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][22].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][22].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][22].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][21].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][21].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][21].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][20].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][20].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][20].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][19].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][19].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][19].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][18].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][18].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][18].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][17].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][17].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][17].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][16].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][16].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][16].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][15].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][15].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][15].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][14].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][14].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][14].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][13].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][13].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][13].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][12].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][12].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][12].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][11].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][11].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][11].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][10].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][10].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][10].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][9].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][9].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][9].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][8].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][8].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][8].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][7].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][7].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][7].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][6].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][6].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][6].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][5].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][5].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][5].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][4].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][4].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][4].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][3].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][3].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][3].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][2].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][2].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][2].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][1].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][1].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][1].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][0].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][0].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[4][0].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][31].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][31].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][31].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][30].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][30].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][30].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][29].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][29].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][29].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][28].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][28].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][28].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][27].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][27].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][27].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][26].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][26].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][26].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][25].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][25].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][25].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][24].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][24].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][24].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][23].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][23].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][23].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][22].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][22].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][22].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][21].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][21].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][21].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][20].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][20].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][20].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][19].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][19].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][19].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][18].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][18].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][18].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][17].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][17].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][17].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][16].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][16].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][16].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][15].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][15].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][15].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][14].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][14].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][14].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][13].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][13].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][13].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][12].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][12].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][12].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][11].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][11].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][11].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][10].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][10].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][10].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][9].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][9].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][9].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][8].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][8].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][8].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][7].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][7].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][7].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][6].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][6].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][6].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][5].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][5].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][5].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][4].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][4].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][4].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][3].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][3].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][3].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][2].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][2].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][2].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][1].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][1].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][1].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][0].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][0].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[3][0].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][31].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][31].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][31].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][30].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][30].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][30].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][29].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][29].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][29].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][28].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][28].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][28].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][27].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][27].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][27].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][26].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][26].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][26].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][25].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][25].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][25].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][24].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][24].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][24].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][23].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][23].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][23].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][22].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][22].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][22].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][21].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][21].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][21].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][20].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][20].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][20].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][19].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][19].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][19].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][18].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][18].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][18].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][17].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][17].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][17].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][16].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][16].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][16].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][15].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][15].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][15].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][14].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][14].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][14].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][13].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][13].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][13].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][12].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][12].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][12].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][11].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][11].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][11].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][10].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][10].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][10].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][9].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][9].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][9].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][8].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][8].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][8].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][7].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][7].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][7].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][6].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][6].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][6].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][5].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][5].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][5].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][4].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][4].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][4].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][3].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][3].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][3].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][2].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][2].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][2].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][1].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][1].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][1].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][0].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][0].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[2][0].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][31].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][31].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][31].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][30].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][30].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][30].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][29].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][29].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][29].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][28].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][28].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][28].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][27].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][27].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][27].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][26].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][26].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][26].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][25].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][25].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][25].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][24].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][24].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][24].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][23].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][23].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][23].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][22].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][22].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][22].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][21].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][21].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][21].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][20].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][20].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][20].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][19].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][19].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][19].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][18].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][18].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][18].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][17].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][17].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][17].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][16].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][16].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][16].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][15].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][15].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][15].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][14].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][14].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][14].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][13].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][13].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][13].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][12].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][12].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][12].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][11].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][11].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][11].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][10].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][10].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][10].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][9].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][9].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][9].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][8].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][8].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][8].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][7].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][7].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][7].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][6].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][6].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][6].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][5].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][5].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][5].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][4].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][4].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][4].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][3].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][3].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][3].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][2].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][2].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][2].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][1].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][1].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][1].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][0].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][0].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[1][0].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][31].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][31].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][31].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][30].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][30].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][30].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][29].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][29].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][29].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][28].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][28].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][28].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][27].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][27].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][27].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][26].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][26].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][26].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][25].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][25].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][25].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][24].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][24].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][24].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][23].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][23].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][23].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][22].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][22].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][22].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][21].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][21].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][21].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][20].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][20].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][20].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][19].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][19].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][19].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][18].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][18].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][18].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][17].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][17].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][17].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][16].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][16].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][16].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][15].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][15].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][15].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][14].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][14].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][14].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][13].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][13].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][13].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][12].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][12].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][12].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][11].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][11].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][11].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][10].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][10].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][10].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][9].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][9].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][9].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][8].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][8].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][8].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][7].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][7].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][7].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][6].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][6].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][6].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][5].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][5].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][5].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][4].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][4].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][4].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][3].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][3].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][3].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][2].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][2].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][2].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][1].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][1].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][1].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][0].sign","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][0].exp[14-7]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.result[0][0].frac[6-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.ready_in[4-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.valid_o[4-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.vd[4][7-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.vd[3][7-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.vd[2][7-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.vd[1][7-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"rc_out.vd[0][7-0]","k":4,"f":3,"l":60,"c":0.00},{"n":"vector_in.rm[1-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.valid_in[1-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.ready_in[1-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[1][0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v1[0][0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[1][0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.v2[0][0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vd[1][7-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vd[0][7-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vmask[1][31-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vmask[0][31-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vop[1][6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.vop[0][6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.fu_sel[1]","k":0,"f":3,"l":34,"tr":[{"n":"VALU","c":0},{"n":"EXP","c":0},{"n":"SQRT","c":0},{"n":"MUL","c":0},{"n":"DIV","c":0}]},{"n":"vector_in.fu_sel[0]","k":0,"f":3,"l":34,"tr":[{"n":"VALU","c":0},{"n":"EXP","c":0},{"n":"SQRT","c":0},{"n":"MUL","c":0},{"n":"DIV","c":0}]},{"n":"vector_in.gsau.veg_vdata1[31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata1[0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_vdata2[0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.veg_valid","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sb_vdst[7-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sb_valid","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sb_weight","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.wb_output_ready","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[31].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[31].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[31].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[30].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[30].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[30].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[29].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[29].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[29].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[28].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[28].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[28].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[27].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[27].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[27].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[26].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[26].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[26].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[25].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[25].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[25].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[24].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[24].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[24].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[23].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[23].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[23].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[22].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[22].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[22].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[21].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[21].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[21].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[20].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[20].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[20].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[19].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[19].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[19].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[18].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[18].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[18].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[17].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[17].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[17].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[16].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[16].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[16].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[15].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[15].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[15].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[14].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[14].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[14].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[13].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[13].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[13].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[12].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[12].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[12].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[11].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[11].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[11].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[10].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[10].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[10].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[9].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[9].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[9].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[8].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[8].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[8].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[7].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[7].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[7].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[6].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[6].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[6].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[5].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[5].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[5].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[4].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[4].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[4].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[3].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[3].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[3].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[2].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[2].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[2].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[1].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[1].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[1].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[0].sign","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[0].exp[14-7]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_array_output[0].frac[6-0]","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_out_valid","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_in.gsau.sa_fifo_has_space","k":4,"f":3,"l":34,"c":0.00},{"n":"vector_out.result[4][31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[4][0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[3][0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[2][0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[1][0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.result[0][0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.valid_o[4-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.vd[4][7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.vd[3][7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.vd[2][7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.vd[1][7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.vd[0][7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_result[0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_valid","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.reduction_vd[7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.veg_ready","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sb_ready","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_psum[0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_wbdst[7-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.wb_valid","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in[0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[31].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[31].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[31].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[30].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[30].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[30].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[29].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[29].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[29].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[28].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[28].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[28].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[27].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[27].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[27].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[26].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[26].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[26].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[25].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[25].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[25].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[24].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[24].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[24].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[23].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[23].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[23].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[22].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[22].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[22].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[21].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[21].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[21].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[20].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[20].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[20].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[19].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[19].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[19].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[18].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[18].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[18].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[17].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[17].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[17].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[16].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[16].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[16].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[15].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[15].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[15].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[14].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[14].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[14].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[13].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[13].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[13].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[12].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[12].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[12].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[11].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[11].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[11].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[10].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[10].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[10].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[9].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[9].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[9].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[8].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[8].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[8].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[7].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[7].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[7].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[6].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[6].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[6].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[5].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[5].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[5].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[4].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[4].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[4].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[3].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[3].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[3].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[2].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[2].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[2].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[1].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[1].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[1].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[0].sign","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[0].exp[14-7]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_array_in_partials[0].frac[6-0]","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_input_en","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_weight_en","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_partial_en","k":4,"f":3,"l":35,"c":0.00},{"n":"vector_out.gsau.sa_output_ready","k":4,"f":3,"l":35,"c":0.00},{"n":"veggie_in.vd[3][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vd[2][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vd[1][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vd[0][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][31].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][31].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][31].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][30].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][30].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][30].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][29].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][29].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][29].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][28].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][28].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][28].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][27].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][27].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][27].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][26].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][26].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][26].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][25].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][25].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][25].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][24].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][24].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][24].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][23].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][23].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][23].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][22].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][22].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][22].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][21].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][21].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][21].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][20].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][20].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][20].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][19].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][19].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][19].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][18].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][18].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][18].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][17].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][17].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][17].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][16].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][16].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][16].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][15].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][15].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][15].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][14].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][14].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][14].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][13].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][13].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][13].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][12].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][12].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][12].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][11].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][11].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][11].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][10].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][10].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][10].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][9].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][9].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][9].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][8].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][8].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][8].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][7].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][7].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][7].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][6].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][6].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][6].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][5].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][5].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][5].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][4].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][4].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][4].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][3].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][3].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][3].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][2].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][2].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][2].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][1].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][1].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][1].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][0].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][0].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[3][0].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][31].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][31].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][31].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][30].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][30].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][30].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][29].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][29].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][29].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][28].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][28].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][28].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][27].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][27].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][27].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][26].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][26].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][26].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][25].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][25].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][25].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][24].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][24].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][24].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][23].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][23].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][23].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][22].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][22].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][22].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][21].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][21].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][21].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][20].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][20].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][20].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][19].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][19].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][19].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][18].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][18].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][18].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][17].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][17].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][17].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][16].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][16].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][16].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][15].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][15].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][15].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][14].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][14].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][14].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][13].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][13].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][13].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][12].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][12].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][12].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][11].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][11].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][11].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][10].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][10].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][10].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][9].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][9].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][9].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][8].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][8].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][8].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][7].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][7].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][7].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][6].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][6].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][6].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][5].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][5].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][5].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][4].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][4].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][4].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][3].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][3].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][3].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][2].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][2].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][2].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][1].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][1].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][1].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][0].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][0].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[2][0].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][31].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][31].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][31].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][30].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][30].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][30].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][29].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][29].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][29].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][28].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][28].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][28].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][27].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][27].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][27].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][26].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][26].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][26].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][25].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][25].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][25].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][24].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][24].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][24].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][23].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][23].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][23].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][22].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][22].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][22].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][21].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][21].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][21].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][20].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][20].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][20].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][19].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][19].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][19].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][18].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][18].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][18].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][17].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][17].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][17].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][16].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][16].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][16].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][15].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][15].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][15].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][14].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][14].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][14].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][13].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][13].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][13].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][12].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][12].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][12].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][11].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][11].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][11].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][10].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][10].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][10].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][9].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][9].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][9].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][8].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][8].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][8].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][7].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][7].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][7].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][6].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][6].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][6].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][5].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][5].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][5].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][4].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][4].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][4].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][3].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][3].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][3].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][2].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][2].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][2].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][1].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][1].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][1].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][0].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][0].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[1][0].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][31].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][31].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][31].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][30].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][30].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][30].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][29].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][29].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][29].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][28].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][28].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][28].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][27].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][27].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][27].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][26].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][26].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][26].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][25].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][25].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][25].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][24].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][24].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][24].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][23].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][23].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][23].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][22].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][22].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][22].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][21].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][21].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][21].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][20].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][20].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][20].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][19].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][19].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][19].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][18].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][18].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][18].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][17].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][17].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][17].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][16].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][16].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][16].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][15].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][15].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][15].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][14].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][14].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][14].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][13].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][13].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][13].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][12].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][12].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][12].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][11].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][11].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][11].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][10].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][10].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][10].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][9].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][9].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][9].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][8].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][8].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][8].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][7].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][7].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][7].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][6].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][6].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][6].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][5].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][5].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][5].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][4].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][4].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][4].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][3].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][3].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][3].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][2].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][2].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][2].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][1].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][1].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][1].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][0].sign","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][0].exp[14-7]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vdata[0][0].frac[6-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.WEN[3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vs[3][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vs[2][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vs[1][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vs[0][7-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.REN[3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vmd[1][3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vmd[0][3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.mvdata[1][31-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.mvdata[0][31-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.MWEN[1-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vms[1][3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.vms[0][3-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_in.MREN[1-0]","k":4,"f":3,"l":38,"c":0.00},{"n":"veggie_out.vreg[3][31].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][31].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][31].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][30].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][30].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][30].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][29].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][29].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][29].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][28].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][28].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][28].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][27].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][27].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][27].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][26].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][26].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][26].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][25].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][25].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][25].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][24].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][24].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][24].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][23].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][23].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][23].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][22].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][22].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][22].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][21].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][21].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][21].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][20].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][20].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][20].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][19].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][19].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][19].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][18].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][18].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][18].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][17].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][17].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][17].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][16].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][16].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][16].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][15].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][15].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][15].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][14].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][14].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][14].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][13].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][13].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][13].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][12].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][12].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][12].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][11].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][11].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][11].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][10].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][10].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][10].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][9].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][9].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][9].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][8].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][8].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][8].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][7].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][7].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][7].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][6].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][6].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][6].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][5].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][5].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][5].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][4].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][4].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][4].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][3].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][3].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][3].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][2].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][2].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][2].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][1].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][1].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][1].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][0].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][0].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[3][0].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][31].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][31].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][31].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][30].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][30].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][30].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][29].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][29].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][29].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][28].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][28].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][28].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][27].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][27].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][27].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][26].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][26].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][26].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][25].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][25].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][25].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][24].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][24].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][24].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][23].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][23].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][23].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][22].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][22].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][22].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][21].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][21].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][21].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][20].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][20].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][20].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][19].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][19].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][19].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][18].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][18].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][18].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][17].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][17].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][17].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][16].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][16].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][16].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][15].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][15].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][15].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][14].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][14].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][14].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][13].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][13].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][13].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][12].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][12].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][12].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][11].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][11].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][11].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][10].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][10].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][10].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][9].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][9].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][9].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][8].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][8].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][8].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][7].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][7].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][7].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][6].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][6].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][6].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][5].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][5].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][5].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][4].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][4].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][4].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][3].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][3].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][3].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][2].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][2].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][2].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][1].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][1].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][1].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][0].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][0].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[2][0].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][31].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][31].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][31].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][30].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][30].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][30].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][29].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][29].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][29].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][28].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][28].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][28].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][27].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][27].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][27].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][26].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][26].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][26].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][25].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][25].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][25].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][24].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][24].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][24].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][23].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][23].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][23].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][22].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][22].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][22].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][21].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][21].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][21].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][20].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][20].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][20].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][19].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][19].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][19].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][18].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][18].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][18].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][17].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][17].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][17].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][16].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][16].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][16].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][15].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][15].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][15].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][14].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][14].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][14].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][13].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][13].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][13].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][12].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][12].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][12].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][11].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][11].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][11].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][10].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][10].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][10].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][9].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][9].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][9].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][8].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][8].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][8].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][7].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][7].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][7].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][6].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][6].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][6].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][5].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][5].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][5].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][4].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][4].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][4].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][3].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][3].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][3].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][2].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][2].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][2].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][1].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][1].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][1].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][0].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][0].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[1][0].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][31].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][31].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][31].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][30].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][30].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][30].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][29].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][29].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][29].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][28].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][28].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][28].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][27].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][27].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][27].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][26].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][26].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][26].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][25].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][25].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][25].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][24].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][24].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][24].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][23].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][23].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][23].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][22].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][22].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][22].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][21].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][21].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][21].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][20].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][20].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][20].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][19].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][19].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][19].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][18].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][18].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][18].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][17].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][17].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][17].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][16].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][16].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][16].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][15].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][15].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][15].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][14].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][14].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][14].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][13].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][13].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][13].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][12].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][12].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][12].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][11].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][11].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][11].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][10].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][10].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][10].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][9].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][9].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][9].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][8].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][8].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][8].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][7].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][7].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][7].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][6].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][6].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][6].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][5].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][5].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][5].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][4].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][4].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][4].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][3].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][3].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][3].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][2].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][2].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][2].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][1].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][1].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][1].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][0].sign","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][0].exp[14-7]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vreg[0][0].frac[6-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.dvalid[3-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vmask[1][31-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.vmask[0][31-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.mvalid[1-0]","k":4,"f":3,"l":39,"c":0.00},{"n":"veggie_out.ready","k":4,"f":3,"l":39,"c":0.00},{"n":"vrf_ready","k":4,"f":3,"l":47,"c":0.00}]},"29":{"pr":"/lane_tb/dut","ext":0,"t":[{"n":"CLK","k":6,"f":6,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_dbg_seq_cnt[7]","k":4,"f":6,"l":268,"c":0.00},{"n":"div_dbg_seq_cnt[6]","k":4,"f":6,"l":268,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_dbg_seq_cnt[5-0]","k":4,"f":6,"l":268,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_fire_valid","k":4,"f":6,"l":192,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_hold_dbg_seq[7]","k":4,"f":6,"l":200,"c":0.00},{"n":"div_hold_dbg_seq[6]","k":4,"f":6,"l":200,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_hold_dbg_seq[5-0]","k":4,"f":6,"l":200,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_hold_elem[0]","k":4,"f":6,"l":199,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_hold_last","k":4,"f":6,"l":201,"c":0.00},{"n":"div_hold_result.sign","k":4,"f":6,"l":197,"c":0.00},{"n":"div_hold_result.exp[14-9]","k":4,"f":6,"l":197,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_hold_result.exp[8-7]","k":4,"f":6,"l":197,"c":0.00},{"n":"div_hold_result.frac[6-0]","k":4,"f":6,"l":197,"c":0.00},{"n":"div_hold_valid","k":4,"f":6,"l":196,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_hold_vd[7-5]","k":4,"f":6,"l":198,"c":0.00},{"n":"div_hold_vd[4-3]","k":4,"f":6,"l":198,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_hold_vd[2-1]","k":4,"f":6,"l":198,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_hold_vd[0]","k":4,"f":6,"l":198,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_meta_in.vd[7-5]","k":4,"f":6,"l":181,"c":0.00},{"n":"div_meta_in.vd[4-3]","k":4,"f":6,"l":181,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_meta_in.vd[2-1]","k":4,"f":6,"l":181,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_in.vd[0]","k":4,"f":6,"l":181,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_meta_in.elem_idx","k":4,"f":6,"l":181,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_in.last","k":4,"f":6,"l":181,"c":0.00},{"n":"div_meta_in.dbg_seq[7]","k":4,"f":6,"l":181,"c":0.00},{"n":"div_meta_in.dbg_seq[6]","k":4,"f":6,"l":181,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_meta_in.dbg_seq[5-0]","k":4,"f":6,"l":181,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_in.rm","k":4,"f":6,"l":181,"c":0.00},{"n":"div_meta_out.vd[7-4]","k":4,"f":6,"l":182,"c":0.00},{"n":"div_meta_out.vd[3-1]","k":4,"f":6,"l":182,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_out.vd[0]","k":4,"f":6,"l":182,"c":0.00},{"n":"div_meta_out.elem_idx","k":4,"f":6,"l":182,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_out.last","k":4,"f":6,"l":182,"c":0.00},{"n":"div_meta_out.dbg_seq[7]","k":4,"f":6,"l":182,"c":0.00},{"n":"div_meta_out.dbg_seq[6-0]","k":4,"f":6,"l":182,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_meta_out.rm","k":4,"f":6,"l":182,"c":0.00},{"n":"div_retire","k":4,"f":6,"l":261,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v1[1].sign","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v1[1].exp[14-10]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v1[1].exp[9-7]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v1[1].frac[6-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v1[0].sign","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v1[0].exp[14-10]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v1[0].exp[9-7]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v1[0].frac[6-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v2[1].sign","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v2[1].exp[14-10]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v2[1].exp[9-7]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v2[1].frac[6-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v2[0].sign","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v2[0].exp[14-10]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.v2[0].exp[9-7]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.v2[0].frac[6-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.vmask[1-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.vd[7-5]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.vd[4-0]","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.vop[6-0]","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.rm","k":4,"f":6,"l":178,"c":0.00},{"n":"div_seq_in.valid","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_in.ready","k":4,"f":6,"l":178,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.v1_elem.sign","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.v1_elem.exp[14-10]","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.v1_elem.exp[9-7]","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.v1_elem.frac[6-0]","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.v2_elem.sign","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.v2_elem.exp[14-10]","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.v2_elem.exp[9-7]","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.v2_elem.frac[6-0]","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.mask_bit","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.vd[7-5]","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.vd[4-3]","k":4,"f":6,"l":179,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_seq_out.vd[2-1]","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.vd[0]","k":4,"f":6,"l":179,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"div_seq_out.vop[6-0]","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.rm","k":4,"f":6,"l":179,"c":0.00},{"n":"div_seq_out.elem_idx","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.valid","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_seq_out.lane_ready","k":4,"f":6,"l":179,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"div_sync_ready","k":4,"f":6,"l":183,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_fire_valid","k":4,"f":6,"l":347,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_hold_elem[0]","k":4,"f":6,"l":353,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_hold_last","k":4,"f":6,"l":354,"c":0.00},{"n":"mul_hold_result[15]","k":4,"f":6,"l":351,"c":0.00},{"n":"mul_hold_result[14]","k":4,"f":6,"l":351,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_hold_result[13-12]","k":4,"f":6,"l":351,"c":0.00},{"n":"mul_hold_result[11-0]","k":4,"f":6,"l":351,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_hold_valid","k":4,"f":6,"l":350,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_hold_vd[7-6]","k":4,"f":6,"l":352,"c":0.00},{"n":"mul_hold_vd[5]","k":4,"f":6,"l":352,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_hold_vd[4-0]","k":4,"f":6,"l":352,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_issue_cnt[31-7]","k":4,"f":6,"l":460,"c":0.00},{"n":"mul_issue_cnt[6]","k":4,"f":6,"l":460,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_issue_cnt[5-0]","k":4,"f":6,"l":460,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_meta_in.vd[7-6]","k":4,"f":6,"l":341,"c":0.00},{"n":"mul_meta_in.vd[5]","k":4,"f":6,"l":341,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_meta_in.vd[4-0]","k":4,"f":6,"l":341,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_meta_in.elem_idx","k":4,"f":6,"l":341,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_meta_in.last","k":4,"f":6,"l":341,"c":0.00},{"n":"mul_meta_in.dbg_seq[7-0]","k":4,"f":6,"l":341,"c":0.00},{"n":"mul_meta_in.rm","k":4,"f":6,"l":341,"c":0.00},{"n":"mul_meta_out.vd[7-6]","k":4,"f":6,"l":342,"c":0.00},{"n":"mul_meta_out.vd[5-0]","k":4,"f":6,"l":342,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_meta_out.elem_idx","k":4,"f":6,"l":342,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_meta_out.last","k":4,"f":6,"l":342,"c":0.00},{"n":"mul_meta_out.dbg_seq[7-0]","k":4,"f":6,"l":342,"c":0.00},{"n":"mul_meta_out.rm","k":4,"f":6,"l":342,"c":0.00},{"n":"mul_retire","k":4,"f":6,"l":400,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v1[1].sign","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v1[1].exp[14-10]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v1[1].exp[9-7]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v1[1].frac[6-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v1[0].sign","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v1[0].exp[14-10]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v1[0].exp[9-7]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v1[0].frac[6-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v2[1].sign","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v2[1].exp[14-10]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v2[1].exp[9-7]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v2[1].frac[6-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v2[0].sign","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v2[0].exp[14-10]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.v2[0].exp[9-7]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.v2[0].frac[6-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.vmask[1-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.vd[7-6]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.vd[5-0]","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.vop[6-0]","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.rm","k":4,"f":6,"l":338,"c":0.00},{"n":"mul_seq_in.valid","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_in.ready","k":4,"f":6,"l":338,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.v1_elem.sign","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.v1_elem.exp[14-10]","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.v1_elem.exp[9-7]","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.v1_elem.frac[6-0]","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.v2_elem.sign","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.v2_elem.exp[14-10]","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.v2_elem.exp[9-7]","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.v2_elem.frac[6-0]","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.mask_bit","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.vd[7-6]","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.vd[5]","k":4,"f":6,"l":339,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_seq_out.vd[4-0]","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.vop[6-0]","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.rm","k":4,"f":6,"l":339,"c":0.00},{"n":"mul_seq_out.elem_idx","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.valid","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_seq_out.lane_ready","k":4,"f":6,"l":339,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_sync_ready","k":4,"f":6,"l":343,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_wb_cnt[31-7]","k":4,"f":6,"l":460,"c":0.00},{"n":"mul_wb_cnt[6]","k":4,"f":6,"l":460,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_wb_cnt[5-0]","k":4,"f":6,"l":460,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"nRST","k":6,"f":6,"l":13,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_fire_valid","k":4,"f":6,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_elem[0]","k":4,"f":6,"l":49,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_last","k":4,"f":6,"l":50,"c":0.00},{"n":"sqrt_hold_result.sign","k":4,"f":6,"l":47,"c":0.00},{"n":"sqrt_hold_result.exp[14]","k":4,"f":6,"l":47,"c":0.00},{"n":"sqrt_hold_result.exp[13]","k":4,"f":6,"l":47,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_result.exp[12-9]","k":4,"f":6,"l":47,"c":0.00},{"n":"sqrt_hold_result.exp[8-7]","k":4,"f":6,"l":47,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_result.frac[6-0]","k":4,"f":6,"l":47,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_valid","k":4,"f":6,"l":46,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_vd[7-4]","k":4,"f":6,"l":48,"c":0.00},{"n":"sqrt_hold_vd[3]","k":4,"f":6,"l":48,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_hold_vd[2-1]","k":4,"f":6,"l":48,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_hold_vd[0]","k":4,"f":6,"l":48,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_meta_in.vd[7-4]","k":4,"f":6,"l":34,"c":0.00},{"n":"sqrt_meta_in.vd[3]","k":4,"f":6,"l":34,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_meta_in.vd[2-1]","k":4,"f":6,"l":34,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_meta_in.vd[0]","k":4,"f":6,"l":34,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_meta_in.elem_idx","k":4,"f":6,"l":34,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_meta_in.last","k":4,"f":6,"l":34,"c":0.00},{"n":"sqrt_meta_in.dbg_seq[7-0]","k":4,"f":6,"l":34,"c":0.00},{"n":"sqrt_meta_in.rm","k":4,"f":6,"l":34,"c":0.00},{"n":"sqrt_meta_out.vd[7-4]","k":4,"f":6,"l":35,"c":0.00},{"n":"sqrt_meta_out.vd[3-1]","k":4,"f":6,"l":35,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_meta_out.vd[0]","k":4,"f":6,"l":35,"c":0.00},{"n":"sqrt_meta_out.elem_idx","k":4,"f":6,"l":35,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_meta_out.last","k":4,"f":6,"l":35,"c":0.00},{"n":"sqrt_meta_out.dbg_seq[7-0]","k":4,"f":6,"l":35,"c":0.00},{"n":"sqrt_meta_out.rm","k":4,"f":6,"l":35,"c":0.00},{"n":"sqrt_retire","k":4,"f":6,"l":108,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.v1[1].sign","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v1[1].exp[14-10]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v1[1].exp[9-7]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.v1[1].frac[6-0]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.v1[0].sign","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v1[0].exp[14-10]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v1[0].exp[9-7]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.v1[0].frac[6-0]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.v2[1].sign","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v2[1].exp[14-7]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v2[1].frac[6-0]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v2[0].sign","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v2[0].exp[14-7]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.v2[0].frac[6-0]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.vmask[1-0]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.vd[7-4]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.vd[3-0]","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.vop[6-0]","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.rm","k":4,"f":6,"l":31,"c":0.00},{"n":"sqrt_seq_in.valid","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_in.ready","k":4,"f":6,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.v1_elem.sign","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.v1_elem.exp[14-10]","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.v1_elem.exp[9-7]","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.v1_elem.frac[6-0]","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.v2_elem.sign","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.v2_elem.exp[14-7]","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.v2_elem.frac[6-0]","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.mask_bit","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.vd[7-4]","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.vd[3]","k":4,"f":6,"l":32,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_seq_out.vd[2-1]","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.vd[0]","k":4,"f":6,"l":32,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sqrt_seq_out.vop[6-0]","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.rm","k":4,"f":6,"l":32,"c":0.00},{"n":"sqrt_seq_out.elem_idx","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.valid","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_seq_out.lane_ready","k":4,"f":6,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sqrt_sync_ready","k":4,"f":6,"l":36,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_fire_valid","k":4,"f":6,"l":510,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_hold_elem[0]","k":4,"f":6,"l":502,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_hold_last","k":4,"f":6,"l":503,"c":0.00},{"n":"valu_hold_result.sign","k":4,"f":6,"l":500,"c":0.00},{"n":"valu_hold_result.exp[14-10]","k":4,"f":6,"l":500,"c":0.00},{"n":"valu_hold_result.exp[9-7]","k":4,"f":6,"l":500,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_hold_result.frac[6-0]","k":4,"f":6,"l":500,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_hold_valid","k":4,"f":6,"l":499,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_hold_vd[7-6]","k":4,"f":6,"l":501,"c":0.00},{"n":"valu_hold_vd[5]","k":4,"f":6,"l":501,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"valu_hold_vd[4]","k":4,"f":6,"l":501,"c":0.00},{"n":"valu_hold_vd[3]","k":4,"f":6,"l":501,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"valu_hold_vd[2-0]","k":4,"f":6,"l":501,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_issue_valid","k":4,"f":6,"l":509,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_in.vd[7-6]","k":4,"f":6,"l":486,"c":0.00},{"n":"valu_meta_in.vd[5]","k":4,"f":6,"l":486,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_in.vd[4]","k":4,"f":6,"l":486,"c":0.00},{"n":"valu_meta_in.vd[3-0]","k":4,"f":6,"l":486,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_in.elem_idx","k":4,"f":6,"l":486,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_in.last","k":4,"f":6,"l":486,"c":0.00},{"n":"valu_meta_in.dbg_seq[7-0]","k":4,"f":6,"l":486,"c":0.00},{"n":"valu_meta_in.rm","k":4,"f":6,"l":486,"c":0.00},{"n":"valu_meta_out.vd[7-6]","k":4,"f":6,"l":487,"c":0.00},{"n":"valu_meta_out.vd[5]","k":4,"f":6,"l":487,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"valu_meta_out.vd[4]","k":4,"f":6,"l":487,"c":0.00},{"n":"valu_meta_out.vd[3-0]","k":4,"f":6,"l":487,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_out.elem_idx","k":4,"f":6,"l":487,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_meta_out.last","k":4,"f":6,"l":487,"c":0.00},{"n":"valu_meta_out.dbg_seq[7-0]","k":4,"f":6,"l":487,"c":0.00},{"n":"valu_meta_out.rm","k":4,"f":6,"l":487,"c":0.00},{"n":"valu_reduce_fire","k":4,"f":6,"l":506,"c":0.00},{"n":"valu_retire","k":4,"f":6,"l":586,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v1[1].sign","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v1[1].exp[14-10]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v1[1].exp[9-7]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v1[1].frac[6-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v1[0].sign","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v1[0].exp[14-10]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v1[0].exp[9-7]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v1[0].frac[6-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v2[1].sign","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v2[1].exp[14-10]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v2[1].exp[9-7]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v2[1].frac[6-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v2[0].sign","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v2[0].exp[14-10]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.v2[0].exp[9-7]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.v2[0].frac[6-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.vmask[1-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.vd[7-6]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.vd[5]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.vd[4]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.vd[3-0]","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.vop[6-0]","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.rm","k":4,"f":6,"l":483,"c":0.00},{"n":"valu_seq_in.valid","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_in.ready","k":4,"f":6,"l":483,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.v1_elem.sign","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.v1_elem.exp[14-10]","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.v1_elem.exp[9-7]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.v1_elem.frac[6-0]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.v2_elem.sign","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.v2_elem.exp[14-10]","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.v2_elem.exp[9-7]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.v2_elem.frac[6-0]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.mask_bit","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.vd[7-6]","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.vd[5]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.vd[4]","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.vd[3-0]","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.vop[6-0]","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.rm","k":4,"f":6,"l":484,"c":0.00},{"n":"valu_seq_out.elem_idx","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.valid","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_seq_out.lane_ready","k":4,"f":6,"l":484,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valu_sync_ready","k":4,"f":6,"l":488,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"30":{"pr":"/lane_tb/dut/sqrt_bus","ext":0,"t":[{"n":"in.operand[15-10]","k":4,"f":7,"l":8,"c":0.00},{"n":"in.operand[9-0]","k":4,"f":7,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.valid_in","k":4,"f":7,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.ready_out","k":4,"f":7,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.result[15-14]","k":4,"f":7,"l":9,"c":0.00},{"n":"out.result[13-0]","k":4,"f":7,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.valid_out","k":4,"f":7,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.ready_in","k":4,"f":7,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"31":{"pr":"/lane_tb/dut/u_seq_sqrt","ext":0,"t":[{"n":"elem_accepted","k":4,"f":4,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_next[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_q[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[14-7]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].frac[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[14-7]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].frac[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vmask[1-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[7-4]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[3-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vop[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.rm","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.valid","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[14-7]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.frac[6-0]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.mask_bit","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[7-4]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[3]","k":4,"f":4,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[2-1]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[0]","k":4,"f":4,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vop[6-0]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.rm","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.elem_idx","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.lane_ready","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_ready","k":4,"f":4,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"next_state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]},{"n":"reg_slice.v1[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[14-7]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].frac[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[14-7]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].frac[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vmask[1-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[7-4]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[3]","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.vd[2-1]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[0]","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.vop[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.rm","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.valid","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.ready","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]}]},"32":{"pr":"/lane_tb/dut/u_sqrt_bf16","ext":0,"t":[{"n":"CLK","k":6,"f":17,"l":21,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"add_out[15]","k":4,"f":17,"l":163,"c":0.00},{"n":"add_out[14-0]","k":4,"f":17,"l":163,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"add_start","k":4,"f":17,"l":164,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"adder_out_reg[15]","k":4,"f":17,"l":52,"c":0.00},{"n":"adder_out_reg[14-0]","k":4,"f":17,"l":52,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"adder_valid_shift[1-0]","k":4,"f":17,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp[7-3]","k":4,"f":17,"l":43,"c":0.00},{"n":"exp[2-0]","k":4,"f":17,"l":43,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_biased_comb[8-7]","k":4,"f":17,"l":61,"c":0.00},{"n":"exp_biased_comb[6-0]","k":4,"f":17,"l":61,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_biased_reg[8-7]","k":4,"f":17,"l":62,"c":0.00},{"n":"exp_biased_reg[6-0]","k":4,"f":17,"l":62,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_half[8-3]","k":4,"f":17,"l":230,"c":0.00},{"n":"exp_half[2-0]","k":4,"f":17,"l":230,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_n[7-3]","k":4,"f":17,"l":43,"c":0.00},{"n":"exp_n[2-0]","k":4,"f":17,"l":43,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_unbiased[8-4]","k":4,"f":17,"l":229,"c":0.00},{"n":"exp_unbiased[3-0]","k":4,"f":17,"l":229,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac[6-0]","k":4,"f":17,"l":44,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_n[6-0]","k":4,"f":17,"l":44,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"input_is_inf","k":4,"f":17,"l":273,"c":0.00},{"n":"input_is_nan","k":4,"f":17,"l":274,"c":0.00},{"n":"input_is_neg_zero","k":4,"f":17,"l":272,"c":0.00},{"n":"input_is_subnormal","k":4,"f":17,"l":275,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"input_is_zero","k":4,"f":17,"l":271,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"intercept[15-14]","k":4,"f":17,"l":46,"c":0.00},{"n":"intercept[13-8]","k":4,"f":17,"l":46,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"intercept[7-6]","k":4,"f":17,"l":46,"c":0.00},{"n":"intercept[5-0]","k":4,"f":17,"l":46,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"intercept_n[15-14]","k":4,"f":17,"l":46,"c":0.00},{"n":"intercept_n[13-8]","k":4,"f":17,"l":46,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"intercept_n[7-6]","k":4,"f":17,"l":46,"c":0.00},{"n":"intercept_n[5-0]","k":4,"f":17,"l":46,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_a[15-14]","k":4,"f":17,"l":127,"c":0.00},{"n":"mul_a[13-0]","k":4,"f":17,"l":127,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_b[15-14]","k":4,"f":17,"l":127,"c":0.00},{"n":"mul_b[13-9]","k":4,"f":17,"l":127,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_b[8-0]","k":4,"f":17,"l":127,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_done","k":4,"f":17,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_done_reg","k":4,"f":17,"l":66,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_out[15-14]","k":4,"f":17,"l":127,"c":0.00},{"n":"mul_out[13-0]","k":4,"f":17,"l":127,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_out_reg[15-14]","k":4,"f":17,"l":65,"c":0.00},{"n":"mul_out_reg[13-0]","k":4,"f":17,"l":65,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_start","k":4,"f":17,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"nRST","k":6,"f":17,"l":22,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"output_held","k":4,"f":17,"l":69,"c":0.00},{"n":"output_held_val[15-0]","k":4,"f":17,"l":70,"c":0.00},{"n":"ready_input_reg","k":4,"f":17,"l":114,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result_internal[15-14]","k":4,"f":17,"l":324,"c":0.00},{"n":"result_internal[13-0]","k":4,"f":17,"l":324,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"second_mult_latched[15-14]","k":4,"f":17,"l":57,"c":0.00},{"n":"second_mult_latched[13-0]","k":4,"f":17,"l":57,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"second_pass","k":4,"f":17,"l":50,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign","k":4,"f":17,"l":42,"c":0.00},{"n":"sign_n","k":4,"f":17,"l":42,"c":0.00},{"n":"slope[15-14]","k":4,"f":17,"l":45,"c":0.00},{"n":"slope[13-9]","k":4,"f":17,"l":45,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"slope[8]","k":4,"f":17,"l":45,"c":0.00},{"n":"slope[7]","k":4,"f":17,"l":45,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"slope[6-0]","k":4,"f":17,"l":45,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"slope_n[15-14]","k":4,"f":17,"l":45,"c":0.00},{"n":"slope_n[13-9]","k":4,"f":17,"l":45,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"slope_n[8]","k":4,"f":17,"l":45,"c":0.00},{"n":"slope_n[7]","k":4,"f":17,"l":45,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"slope_n[6-0]","k":4,"f":17,"l":45,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"special_flag","k":4,"f":17,"l":266,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"special_flag_latched","k":4,"f":17,"l":268,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"special_result[15-0]","k":4,"f":17,"l":267,"c":0.00},{"n":"special_result_latched[15-0]","k":4,"f":17,"l":269,"c":0.00},{"n":"third_mul_enable","k":4,"f":17,"l":56,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"third_mult_result[15-14]","k":4,"f":17,"l":58,"c":0.00},{"n":"third_mult_result[13-0]","k":4,"f":17,"l":58,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"third_pass","k":4,"f":17,"l":55,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid","k":4,"f":17,"l":47,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid_data_out_internal","k":4,"f":17,"l":71,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid_n","k":4,"f":17,"l":47,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid_out_delay","k":4,"f":17,"l":255,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"33":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1","ext":0,"t":[{"n":"a_latched[15-14]","k":4,"f":11,"l":12,"c":0.00},{"n":"a_latched[13-0]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"b_latched[15-14]","k":4,"f":11,"l":12,"c":0.00},{"n":"b_latched[13-9]","k":4,"f":11,"l":12,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"b_latched[8-0]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"done","k":4,"f":11,"l":4,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_sum[7]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"exp_sum[6-0]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_fp1","k":4,"f":11,"l":37,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"frac_leading_bit_fp2","k":4,"f":11,"l":38,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lat1_ready","k":4,"f":11,"l":6,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_carryout","k":4,"f":11,"l":59,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_final_exp[7]","k":4,"f":11,"l":105,"c":0.00},{"n":"mul_final_exp[6-0]","k":4,"f":11,"l":105,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_frac_product[8-0]","k":4,"f":11,"l":91,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_ovf","k":4,"f":11,"l":78,"c":0.00},{"n":"mul_product[9-0]","k":4,"f":11,"l":58,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_round_loss","k":4,"f":11,"l":60,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_sign_result","k":4,"f":11,"l":73,"c":0.00},{"n":"mul_significand_rounded[7]","k":4,"f":11,"l":96,"c":0.00},{"n":"mul_significand_rounded[6-0]","k":4,"f":11,"l":96,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_unf","k":4,"f":11,"l":78,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"result[15-14]","k":4,"f":11,"l":4,"c":0.00},{"n":"result[13-0]","k":4,"f":11,"l":4,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"35":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[13]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"36":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[12]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"37":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[11]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"38":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[10]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"39":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[9]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"40":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[8]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"41":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[7]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"42":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[10]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"43":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[9]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"44":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[8]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"45":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[7]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"46":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[6]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"47":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[5]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"48":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[7]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"49":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[6]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"50":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[5]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"51":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[4]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"52":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[3]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"53":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[2]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"54":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[9]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"55":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[8]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"56":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[7]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"57":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[6]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"58":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[5]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"59":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[4]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"60":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[3]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"61":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[7]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"62":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[6]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"63":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[5]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"64":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[4]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"65":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[3]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"66":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[2]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"67":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_first","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"68":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_last","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"69":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[7]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"70":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[6]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"71":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[5]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"72":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[4]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"73":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[3]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"74":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[2]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"75":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_first","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"76":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_last","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"77":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l1_b2","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"78":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b1","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"79":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b8","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"80":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b3","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"81":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b4","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"82":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b11","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"83":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b12","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"84":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b4","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"c":0.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"85":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b5","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"86":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b6","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"87":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b14","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"34":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca","ext":0,"t":[{"n":"overflow","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"product[0-15]","k":4,"f":12,"l":159,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"product[16]","k":4,"f":12,"l":159,"c":0.00},{"n":"result[0-9]","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_loss","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_carries[0][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_carries[1][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_sums[0][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_sums[1][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_carries[0][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_carries[1][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_level1_sums[0-12]","k":4,"f":12,"l":48,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_level2_sums[0-8]","k":4,"f":12,"l":49,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_level2_sums[9]","k":4,"f":12,"l":49,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"stage3_carries[0-9]","k":4,"f":12,"l":103,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage3_sums[0-13]","k":4,"f":12,"l":102,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage3_sums[14]","k":4,"f":12,"l":102,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"stage4_carries[0]","k":4,"f":12,"l":136,"c":0.00},{"n":"stage4_carries[1-10]","k":4,"f":12,"l":136,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage4_sums[0-14]","k":4,"f":12,"l":135,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"88":{"pr":"/lane_tb/dut/u_sqrt_bf16/mul1/add_EXPs","ext":0,"t":[{"n":"ovf","k":6,"f":15,"l":22,"c":0.00},{"n":"r_exp1[7]","k":4,"f":15,"l":26,"c":0.00},{"n":"r_exp1[6-0]","k":4,"f":15,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_exp2[7]","k":4,"f":15,"l":27,"c":0.00},{"n":"r_exp2[6-2]","k":4,"f":15,"l":27,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"r_exp2[1-0]","k":4,"f":15,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_sum[7]","k":4,"f":15,"l":28,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"r_sum[6-0]","k":4,"f":15,"l":28,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sum[0-6]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sum[7]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"unf","k":6,"f":15,"l":23,"tr":[{"n":0,"c":1}],"c":50.00}]},"89":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1","ext":0,"t":[{"n":"G","k":4,"f":18,"l":258,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"R","k":4,"f":18,"l":259,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"bf_out[15]","k":4,"f":18,"l":7,"c":0.00},{"n":"bf_out[14-0]","k":4,"f":18,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_diff[7]","k":4,"f":18,"l":63,"c":0.00},{"n":"exp_diff[6-0]","k":4,"f":18,"l":63,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_max[7]","k":4,"f":18,"l":63,"c":0.00},{"n":"exp_max[6-1]","k":4,"f":18,"l":63,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"exp_max[0]","k":4,"f":18,"l":63,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_max_l[7]","k":4,"f":18,"l":130,"c":0.00},{"n":"exp_max_l[6-1]","k":4,"f":18,"l":130,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"exp_max_l[0]","k":4,"f":18,"l":130,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_minus_shift_amount[7]","k":4,"f":18,"l":181,"c":0.00},{"n":"exp_minus_shift_amount[6-4]","k":4,"f":18,"l":181,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"exp_minus_shift_amount[3-0]","k":4,"f":18,"l":181,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_out[7-0]","k":4,"f":18,"l":234,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_out_adj[7-0]","k":4,"f":18,"l":255,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_select","k":4,"f":18,"l":30,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_bf1","k":4,"f":18,"l":47,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"frac_leading_bit_bf2","k":4,"f":18,"l":48,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"frac_not_shifted[9]","k":4,"f":18,"l":64,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"frac_not_shifted[8-2]","k":4,"f":18,"l":64,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_not_shifted[1-0]","k":4,"f":18,"l":64,"c":0.00},{"n":"frac_shifted[9-1]","k":4,"f":18,"l":64,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_shifted[0]","k":4,"f":18,"l":64,"c":0.00},{"n":"invalid","k":4,"f":18,"l":8,"c":0.00},{"n":"is_inf1","k":4,"f":18,"l":11,"c":0.00},{"n":"is_inf2","k":4,"f":18,"l":11,"c":0.00},{"n":"is_nan1","k":4,"f":18,"l":11,"c":0.00},{"n":"is_nan2","k":4,"f":18,"l":11,"c":0.00},{"n":"larger_exponent[7]","k":4,"f":18,"l":29,"c":0.00},{"n":"larger_exponent[6-1]","k":4,"f":18,"l":29,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"larger_exponent[0]","k":4,"f":18,"l":29,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa[9]","k":4,"f":18,"l":107,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"larger_mantissa[8-2]","k":4,"f":18,"l":107,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa[1-0]","k":4,"f":18,"l":107,"c":0.00},{"n":"larger_mantissa_l[9]","k":4,"f":18,"l":128,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"larger_mantissa_l[8-2]","k":4,"f":18,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa_l[1-0]","k":4,"f":18,"l":128,"c":0.00},{"n":"larger_mantissa_sign","k":4,"f":18,"l":109,"c":0.00},{"n":"larger_mantissa_sign_l","k":4,"f":18,"l":129,"c":0.00},{"n":"mantissa_overflow","k":4,"f":18,"l":110,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mantissa_sum[10-1]","k":4,"f":18,"l":108,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mantissa_sum[0]","k":4,"f":18,"l":108,"c":0.00},{"n":"norm_shift[3-0]","k":4,"f":18,"l":212,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"normalized_mantissa_sum[9-1]","k":4,"f":18,"l":211,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"normalized_mantissa_sum[0]","k":4,"f":18,"l":211,"c":0.00},{"n":"overflow","k":4,"f":18,"l":8,"c":0.00},{"n":"result_sign","k":4,"f":18,"l":110,"c":0.00},{"n":"round_flag","k":4,"f":18,"l":251,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_out[15-0]","k":4,"f":18,"l":250,"c":0.00},{"n":"round_sum[7]","k":4,"f":18,"l":267,"c":0.00},{"n":"round_sum[6-0]","k":4,"f":18,"l":267,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_this[8-0]","k":4,"f":18,"l":233,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"rounded_fraction[6-0]","k":4,"f":18,"l":254,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_not_shifted","k":4,"f":18,"l":65,"c":0.00},{"n":"sign_not_shifted_l","k":4,"f":18,"l":129,"c":0.00},{"n":"sign_shifted","k":4,"f":18,"l":65,"c":0.00},{"n":"sign_shifted_l","k":4,"f":18,"l":129,"c":0.00},{"n":"signs_differ","k":4,"f":18,"l":110,"c":0.00},{"n":"signs_differ_l","k":4,"f":18,"l":129,"c":0.00},{"n":"smaller_exponent[7]","k":4,"f":18,"l":28,"c":0.00},{"n":"smaller_exponent[6-0]","k":4,"f":18,"l":28,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"smaller_mantissa[9-1]","k":4,"f":18,"l":107,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"smaller_mantissa[0]","k":4,"f":18,"l":107,"c":0.00},{"n":"smaller_mantissa_l[9-1]","k":4,"f":18,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"smaller_mantissa_l[0]","k":4,"f":18,"l":128,"c":0.00},{"n":"sticky_bit","k":4,"f":18,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_exp1[8-7]","k":4,"f":18,"l":218,"c":0.00},{"n":"u_exp1[6-1]","k":4,"f":18,"l":218,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"u_exp1[0]","k":4,"f":18,"l":218,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_exp2[8-0]","k":4,"f":18,"l":218,"c":0.00},{"n":"u_result[8-7]","k":4,"f":18,"l":220,"c":0.00},{"n":"u_result[6-4]","k":4,"f":18,"l":220,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"u_result[3-0]","k":4,"f":18,"l":220,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_shifted_amount[7-4]","k":4,"f":18,"l":219,"c":0.00},{"n":"u_shifted_amount[3-0]","k":4,"f":18,"l":219,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"underflow","k":4,"f":18,"l":8,"c":0.00}]},"90":{"pr":"/lane_tb/dut/u_sqrt_bf16/add1/normalizer","ext":0,"t":[{"n":"result[9-1]","k":4,"f":19,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result[0]","k":4,"f":19,"l":19,"c":0.00},{"n":"shifted_amount[3-0]","k":4,"f":19,"l":20,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"91":{"pr":"/lane_tb/dut/u_sqrt_sync","ext":0,"t":[{"n":"CLK","k":6,"f":20,"l":5,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_empty","k":4,"f":20,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_full","k":4,"f":20,"l":25,"c":0.00},{"n":"fu_ready","k":6,"f":20,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"issue_valid","k":6,"f":20,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[0-9]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[10]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[11]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[12-13]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[14]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[15-18]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_out[18-15]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[14-12]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[11]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[10]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[9-0]","k":4,"f":20,"l":17,"c":0.00},{"n":"nRST","k":6,"f":20,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop","k":4,"f":20,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"pop_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"pop_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push","k":4,"f":20,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"push_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"push_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sync_ready","k":4,"f":20,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_ready","k":6,"f":20,"l":16,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_valid","k":6,"f":20,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"92":{"pr":"/lane_tb/dut/u_sqrt_sync/u_fifo","ext":0,"t":[{"n":"dout[18-15]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[14-12]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[11]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[10]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[9-0]","k":4,"f":21,"l":10,"c":0.00},{"n":"empty","k":6,"f":21,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"full","k":6,"f":21,"l":11,"c":0.00},{"n":"rptr[3-0]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wptr[3-0]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"93":{"pr":"/lane_tb/dut/div_bus","ext":0,"t":[{"n":"in.valid_in","k":4,"f":8,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.ready_out","k":4,"f":8,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand1[15-10]","k":4,"f":8,"l":22,"c":0.00},{"n":"in.operand1[9-0]","k":4,"f":8,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand2[15-10]","k":4,"f":8,"l":22,"c":0.00},{"n":"in.operand2[9-0]","k":4,"f":8,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.valid_out","k":4,"f":8,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.ready_in","k":4,"f":8,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.result[15-0]","k":4,"f":8,"l":23,"c":0.00}]},"94":{"pr":"/lane_tb/dut/u_seq_div","ext":0,"t":[{"n":"elem_accepted","k":4,"f":4,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_next[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_q[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[1-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[7-5]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[4-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vop[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.rm","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.valid","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.mask_bit","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[7-5]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[4-3]","k":4,"f":4,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[2-1]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[0]","k":4,"f":4,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vop[6-0]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.rm","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.elem_idx","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.lane_ready","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_ready","k":4,"f":4,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"next_state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]},{"n":"reg_slice.v1[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vmask[1-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[7-5]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[4-3]","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.vd[2-1]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[0]","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.vop[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.rm","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.valid","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.ready","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]}]},"95":{"pr":"/lane_tb/dut/u_div","ext":0,"t":[{"n":"CLK","k":6,"f":22,"l":6,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"a_inf","k":4,"f":22,"l":140,"c":0.00},{"n":"a_nan","k":4,"f":22,"l":140,"c":0.00},{"n":"a_zero","k":4,"f":22,"l":140,"c":0.00},{"n":"b_inf","k":4,"f":22,"l":140,"c":0.00},{"n":"b_nan","k":4,"f":22,"l":140,"c":0.00},{"n":"b_zero","k":4,"f":22,"l":140,"c":0.00},{"n":"done","k":4,"f":22,"l":14,"c":0.00},{"n":"en_divider","k":4,"f":22,"l":14,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp[5-0]","k":4,"f":22,"l":157,"c":0.00},{"n":"exp_a[4-0]","k":4,"f":22,"l":127,"c":0.00},{"n":"exp_a_max","k":4,"f":22,"l":137,"c":0.00},{"n":"exp_b[4-0]","k":4,"f":22,"l":127,"c":0.00},{"n":"exp_b_max","k":4,"f":22,"l":137,"c":0.00},{"n":"exp_norm[5-0]","k":4,"f":22,"l":178,"c":0.00},{"n":"fast_path_delayed","k":4,"f":22,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fast_path_valid_shift[9-0]","k":4,"f":22,"l":30,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"final_exp[4-0]","k":4,"f":22,"l":179,"c":0.00},{"n":"final_mant[9-0]","k":4,"f":22,"l":177,"c":0.00},{"n":"final_sign","k":4,"f":22,"l":133,"c":0.00},{"n":"first_cycle","k":4,"f":22,"l":14,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"is_inf","k":4,"f":22,"l":149,"c":0.00},{"n":"is_nan","k":4,"f":22,"l":149,"c":0.00},{"n":"is_ovf","k":4,"f":22,"l":14,"c":0.00},{"n":"is_sub","k":4,"f":22,"l":14,"c":0.00},{"n":"is_zero","k":4,"f":22,"l":149,"c":0.00},{"n":"mant_a[9-0]","k":4,"f":22,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mant_b[9-0]","k":4,"f":22,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"nRST","k":6,"f":22,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"operand1_next[15-10]","k":4,"f":22,"l":99,"c":0.00},{"n":"operand1_next[9-0]","k":4,"f":22,"l":99,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"operand1_reg[15-10]","k":4,"f":22,"l":96,"c":0.00},{"n":"operand1_reg[9-0]","k":4,"f":22,"l":96,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"operand2_next[15-10]","k":4,"f":22,"l":99,"c":0.00},{"n":"operand2_next[9-0]","k":4,"f":22,"l":99,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"operand2_reg[15-10]","k":4,"f":22,"l":96,"c":0.00},{"n":"operand2_reg[9-0]","k":4,"f":22,"l":96,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"quotient[12-0]","k":4,"f":22,"l":168,"c":0.00},{"n":"result_ready_internal","k":4,"f":22,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_a","k":4,"f":22,"l":126,"c":0.00},{"n":"sign_b","k":4,"f":22,"l":126,"c":0.00},{"n":"skip_divider","k":4,"f":22,"l":14,"c":0.00}]},"96":{"pr":"/lane_tb/dut/u_div/m_div","ext":0,"t":[{"n":"a[23-0]","k":4,"f":22,"l":233,"c":0.00},{"n":"done","k":4,"f":22,"l":224,"c":0.00},{"n":"m[10-0]","k":4,"f":22,"l":234,"c":0.00},{"n":"n[4-0]","k":4,"f":22,"l":235,"c":0.00},{"n":"next_a[23-0]","k":4,"f":22,"l":233,"c":0.00},{"n":"next_m[10-0]","k":4,"f":22,"l":234,"c":0.00},{"n":"next_n[4-0]","k":4,"f":22,"l":235,"c":0.00},{"n":"next_q[12-0]","k":4,"f":22,"l":232,"c":0.00},{"n":"next_state","k":0,"f":22,"l":230,"tr":[{"n":"IDLE","c":1},{"n":"DIV","c":0}]},{"n":"q[12-0]","k":4,"f":22,"l":232,"c":0.00},{"n":"result[12-0]","k":4,"f":22,"l":223,"c":0.00},{"n":"state","k":0,"f":22,"l":230,"tr":[{"n":"IDLE","c":1},{"n":"DIV","c":0}]}]},"97":{"pr":"/lane_tb/dut/u_div_sync","ext":0,"t":[{"n":"CLK","k":6,"f":20,"l":5,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_empty","k":4,"f":20,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_full","k":4,"f":20,"l":25,"c":0.00},{"n":"fu_ready","k":6,"f":20,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"issue_valid","k":6,"f":20,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[0]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[1-6]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[7]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[8-9]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[10]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[11]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[12-13]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[14-15]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[16-18]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_out[18-15]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[14-12]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[11]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[10]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[9-8]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[7-1]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[0]","k":4,"f":20,"l":17,"c":0.00},{"n":"nRST","k":6,"f":20,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop","k":4,"f":20,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"pop_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"pop_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push","k":4,"f":20,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"push_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"push_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sync_ready","k":4,"f":20,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_ready","k":6,"f":20,"l":16,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_valid","k":6,"f":20,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"98":{"pr":"/lane_tb/dut/u_div_sync/u_fifo","ext":0,"t":[{"n":"dout[18-15]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[14-12]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[11]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[10]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[9-8]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[7-1]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[0]","k":4,"f":21,"l":10,"c":0.00},{"n":"empty","k":6,"f":21,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"full","k":6,"f":21,"l":11,"c":0.00},{"n":"rptr[3-0]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wptr[3-0]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"99":{"pr":"/lane_tb/dut/mul_bus","ext":0,"t":[{"n":"in.valid_in","k":4,"f":9,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand1[15-10]","k":4,"f":9,"l":18,"c":0.00},{"n":"in.operand1[9-0]","k":4,"f":9,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand2[15-10]","k":4,"f":9,"l":18,"c":0.00},{"n":"in.operand2[9-0]","k":4,"f":9,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.ready_out","k":4,"f":9,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.valid_out","k":4,"f":9,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.result[15]","k":4,"f":9,"l":19,"c":0.00},{"n":"out.result[14]","k":4,"f":9,"l":19,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"out.result[13-12]","k":4,"f":9,"l":19,"c":0.00},{"n":"out.result[11-0]","k":4,"f":9,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.ready_in","k":4,"f":9,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"100":{"pr":"/lane_tb/dut/u_seq_mul","ext":0,"t":[{"n":"elem_accepted","k":4,"f":4,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_next[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_q[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[1-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[7-6]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[5-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vop[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.rm","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.valid","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.mask_bit","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[7-6]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[5]","k":4,"f":4,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"lane_out.vd[4-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vop[6-0]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.rm","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.elem_idx","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.lane_ready","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_ready","k":4,"f":4,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"next_state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]},{"n":"reg_slice.v1[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vmask[1-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[7-6]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[5]","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.vd[4-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vop[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.rm","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.valid","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.ready","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]}]},"101":{"pr":"/lane_tb/dut/u_mul","ext":0,"t":[{"n":"core_a[15-10]","k":4,"f":10,"l":20,"c":0.00},{"n":"core_a[9-0]","k":4,"f":10,"l":20,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"core_b[15-10]","k":4,"f":10,"l":20,"c":0.00},{"n":"core_b[9-0]","k":4,"f":10,"l":20,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"core_done","k":4,"f":10,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"core_result[15]","k":4,"f":10,"l":21,"c":0.00},{"n":"core_result[14]","k":4,"f":10,"l":21,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"core_result[13-12]","k":4,"f":10,"l":21,"c":0.00},{"n":"core_result[11-0]","k":4,"f":10,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"core_start","k":4,"f":10,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result_reg[15]","k":4,"f":10,"l":43,"c":0.00},{"n":"result_reg[14]","k":4,"f":10,"l":43,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"result_reg[13-12]","k":4,"f":10,"l":43,"c":0.00},{"n":"result_reg[11-0]","k":4,"f":10,"l":43,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"state","k":0,"f":10,"l":41,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1},{"n":"HAVE_RES","c":1}]},{"n":"state_n","k":0,"f":10,"l":41,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1},{"n":"HAVE_RES","c":1}]}]},"102":{"pr":"/lane_tb/dut/u_mul/u_mul_core","ext":0,"t":[{"n":"a_latched[15-10]","k":4,"f":11,"l":12,"c":0.00},{"n":"a_latched[9-0]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"b_latched[15-10]","k":4,"f":11,"l":12,"c":0.00},{"n":"b_latched[9-0]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"done","k":4,"f":11,"l":4,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_sum[7-5]","k":4,"f":11,"l":77,"c":0.00},{"n":"exp_sum[4-0]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_fp1","k":4,"f":11,"l":37,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_fp2","k":4,"f":11,"l":38,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lat1_ready","k":4,"f":11,"l":6,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_carryout","k":4,"f":11,"l":59,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_final_exp[7]","k":4,"f":11,"l":105,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_final_exp[6-5]","k":4,"f":11,"l":105,"c":0.00},{"n":"mul_final_exp[4-0]","k":4,"f":11,"l":105,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_frac_product[8-0]","k":4,"f":11,"l":91,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_ovf","k":4,"f":11,"l":78,"c":0.00},{"n":"mul_product[9-0]","k":4,"f":11,"l":58,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_round_loss","k":4,"f":11,"l":60,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_sign_result","k":4,"f":11,"l":73,"c":0.00},{"n":"mul_significand_rounded[7]","k":4,"f":11,"l":96,"c":0.00},{"n":"mul_significand_rounded[6-0]","k":4,"f":11,"l":96,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_unf","k":4,"f":11,"l":78,"c":0.00},{"n":"result[15]","k":4,"f":11,"l":4,"c":0.00},{"n":"result[14]","k":4,"f":11,"l":4,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"result[13-12]","k":4,"f":11,"l":4,"c":0.00},{"n":"result[11-0]","k":4,"f":11,"l":4,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"104":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[13]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"105":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[12]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"106":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[11]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"107":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[10]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"108":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[9]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"109":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[8]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"110":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[7]/fa_s4_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"111":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[10]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"112":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[9]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"113":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[8]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"114":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[7]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"115":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[6]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"116":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[5]/fa_s3_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"117":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[7]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"118":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[6]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"119":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[5]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"120":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[4]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"121":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[3]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"122":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[2]/fa_s2_l2","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"123":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[9]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"124":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[8]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"125":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[7]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"126":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[6]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"127":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[5]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"128":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[4]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"129":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[3]/fa_s2_l1","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"130":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[7]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"131":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[6]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"132":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[5]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"133":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[4]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"134":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[3]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"135":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[2]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"136":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_first","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"137":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_last","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"138":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[7]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"139":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[6]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"140":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[5]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"141":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[4]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"142":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[3]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"143":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[2]/fa_00","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"144":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_first","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"145":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_last","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"146":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l1_b2","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"147":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b1","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"148":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b8","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"149":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b3","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"150":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b4","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"151":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b11","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"152":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b12","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"153":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b4","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"154":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b5","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"155":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b6","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"156":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b14","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"103":{"pr":"/lane_tb/dut/u_mul/u_mul_core/wallaca","ext":0,"t":[{"n":"overflow","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"product[0-15]","k":4,"f":12,"l":159,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"product[16]","k":4,"f":12,"l":159,"c":0.00},{"n":"result[0-9]","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_loss","k":4,"f":12,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_carries[0][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_carries[1][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_sums[0][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage1_sums[1][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_carries[0][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_carries[1][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_level1_sums[0-12]","k":4,"f":12,"l":48,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage2_level2_sums[0-9]","k":4,"f":12,"l":49,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage3_carries[0-9]","k":4,"f":12,"l":103,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage3_sums[0-14]","k":4,"f":12,"l":102,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage4_carries[0-10]","k":4,"f":12,"l":136,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage4_sums[0-14]","k":4,"f":12,"l":135,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"157":{"pr":"/lane_tb/dut/u_mul/u_mul_core/add_EXPs","ext":0,"t":[{"n":"ovf","k":6,"f":15,"l":22,"c":0.00},{"n":"r_exp1[7-3]","k":4,"f":15,"l":26,"c":0.00},{"n":"r_exp1[2-0]","k":4,"f":15,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_exp2[7-3]","k":4,"f":15,"l":27,"c":0.00},{"n":"r_exp2[2-0]","k":4,"f":15,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_sum[7-4]","k":4,"f":15,"l":28,"c":0.00},{"n":"r_sum[3-0]","k":4,"f":15,"l":28,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sum[0-4]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sum[5-7]","k":6,"f":15,"l":21,"c":0.00},{"n":"unf","k":6,"f":15,"l":23,"c":0.00}]},"158":{"pr":"/lane_tb/dut/u_mul_sync","ext":0,"t":[{"n":"CLK","k":6,"f":20,"l":5,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_empty","k":4,"f":20,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_full","k":4,"f":20,"l":25,"c":0.00},{"n":"fu_ready","k":6,"f":20,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"issue_valid","k":6,"f":20,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[0-9]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[10-15]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[16]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[17-18]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_out[18-17]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[16-10]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[9-0]","k":4,"f":20,"l":17,"c":0.00},{"n":"nRST","k":6,"f":20,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop","k":4,"f":20,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"pop_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"pop_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push","k":4,"f":20,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"push_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"push_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sync_ready","k":4,"f":20,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_ready","k":6,"f":20,"l":16,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_valid","k":6,"f":20,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"159":{"pr":"/lane_tb/dut/u_mul_sync/u_fifo","ext":0,"t":[{"n":"dout[18-17]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[16-10]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[9-0]","k":4,"f":21,"l":10,"c":0.00},{"n":"empty","k":6,"f":21,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"full","k":6,"f":21,"l":11,"c":0.00},{"n":"rptr[2-0]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wptr[2-0]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"160":{"pr":"/lane_tb/dut/valu_bus","ext":0,"t":[{"n":"in.valid_in","k":4,"f":16,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.ready_out","k":4,"f":16,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand1[15-10]","k":4,"f":16,"l":18,"c":0.00},{"n":"in.operand1[9-0]","k":4,"f":16,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.operand2[15-10]","k":4,"f":16,"l":18,"c":0.00},{"n":"in.operand2[9-0]","k":4,"f":16,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"in.alu_op[1-0]","k":4,"f":16,"l":18,"c":0.00},{"n":"out.valid_out","k":4,"f":16,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.ready_in","k":4,"f":16,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"out.result[15-10]","k":4,"f":16,"l":25,"c":0.00},{"n":"out.result[9-0]","k":4,"f":16,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"161":{"pr":"/lane_tb/dut/u_seq_valu","ext":0,"t":[{"n":"elem_accepted","k":4,"f":4,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_next[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"elem_idx_q[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v1[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[1].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[14-10]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[9-7]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.v2[0].frac[6-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vmask[1-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[7-6]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[5]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vd[4]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[3-0]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.vop[6-0]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.rm","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.valid","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_in.ready","k":4,"f":4,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v1_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[14-10]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[9-7]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.v2_elem.frac[6-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.mask_bit","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[7-6]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[5]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vd[4]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[3-0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.vop[6-0]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.rm","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.elem_idx","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.valid","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_out.lane_ready","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"lane_ready","k":4,"f":4,"l":25,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"next_state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]},{"n":"reg_slice.v1[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v1[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[1].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[14-10]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[9-7]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.v2[0].frac[6-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vmask[1-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[7-6]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[5]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vd[4]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[3-0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"reg_slice.vop[6-0]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.rm","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.valid","k":4,"f":4,"l":18,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"reg_slice.ready","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":1},{"n":"BUSY","c":1}]}]},"162":{"pr":"/lane_tb/dut/u_valu","ext":0,"t":[{"n":"CLK","k":6,"f":23,"l":5,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"a_is_nan_raw","k":4,"f":23,"l":76,"c":0.00},{"n":"accept_in","k":4,"f":23,"l":41,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"alu_op_s1[1-0]","k":4,"f":23,"l":35,"c":0.00},{"n":"alu_op_s2[1-0]","k":4,"f":23,"l":35,"c":0.00},{"n":"any_nan_raw","k":4,"f":23,"l":76,"c":0.00},{"n":"any_nan_s1","k":4,"f":23,"l":36,"c":0.00},{"n":"any_nan_s2","k":4,"f":23,"l":36,"c":0.00},{"n":"b_is_nan_raw","k":4,"f":23,"l":76,"c":0.00},{"n":"bf1_in[15-10]","k":4,"f":23,"l":15,"c":0.00},{"n":"bf1_in[9-0]","k":4,"f":23,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"bf2_in[15-10]","k":4,"f":23,"l":15,"c":0.00},{"n":"bf2_in[9-0]","k":4,"f":23,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"bf_out[15-0]","k":4,"f":23,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"invalid","k":4,"f":23,"l":17,"c":0.00},{"n":"nRST","k":6,"f":23,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"op","k":4,"f":23,"l":16,"c":0.00},{"n":"overflow","k":4,"f":23,"l":17,"c":0.00},{"n":"ready_in_reg","k":4,"f":23,"l":40,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result_next[15-10]","k":4,"f":23,"l":45,"c":0.00},{"n":"result_next[9-0]","k":4,"f":23,"l":45,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result_reg[15-10]","k":4,"f":23,"l":44,"c":0.00},{"n":"result_reg[9-0]","k":4,"f":23,"l":44,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"underflow","k":4,"f":23,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid_s1","k":4,"f":23,"l":37,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"valid_s2","k":4,"f":23,"l":37,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"value_a_s1[15-10]","k":4,"f":23,"l":33,"c":0.00},{"n":"value_a_s1[9-0]","k":4,"f":23,"l":33,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"value_a_s2[15-10]","k":4,"f":23,"l":34,"c":0.00},{"n":"value_a_s2[9-0]","k":4,"f":23,"l":34,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"value_b_s1[15-10]","k":4,"f":23,"l":33,"c":0.00},{"n":"value_b_s1[9-0]","k":4,"f":23,"l":33,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"value_b_s2[15-10]","k":4,"f":23,"l":34,"c":0.00},{"n":"value_b_s2[9-0]","k":4,"f":23,"l":34,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"163":{"pr":"/lane_tb/dut/u_valu/adder","ext":0,"t":[{"n":"G","k":4,"f":24,"l":242,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"R","k":4,"f":24,"l":243,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"bf2_modified[15-10]","k":4,"f":24,"l":13,"c":0.00},{"n":"bf2_modified[9-0]","k":4,"f":24,"l":13,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"bf_out[15-0]","k":4,"f":24,"l":7,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_diff[7-3]","k":4,"f":24,"l":65,"c":0.00},{"n":"exp_diff[2-0]","k":4,"f":24,"l":65,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_max[7-3]","k":4,"f":24,"l":65,"c":0.00},{"n":"exp_max[2-0]","k":4,"f":24,"l":65,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_max_l[7-3]","k":4,"f":24,"l":129,"c":0.00},{"n":"exp_max_l[2-0]","k":4,"f":24,"l":129,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_minus_shift_amount[7-0]","k":4,"f":24,"l":184,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_out[7-0]","k":4,"f":24,"l":220,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_out_adj[7-0]","k":4,"f":24,"l":239,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_select","k":4,"f":24,"l":32,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_bf1","k":4,"f":24,"l":49,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_leading_bit_bf2","k":4,"f":24,"l":50,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_not_shifted[9-2]","k":4,"f":24,"l":66,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"frac_not_shifted[1-0]","k":4,"f":24,"l":66,"c":0.00},{"n":"frac_shifted[9-0]","k":4,"f":24,"l":66,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"invalid","k":4,"f":24,"l":8,"c":0.00},{"n":"is_inf1","k":4,"f":24,"l":11,"c":0.00},{"n":"is_inf2","k":4,"f":24,"l":11,"c":0.00},{"n":"is_nan1","k":4,"f":24,"l":11,"c":0.00},{"n":"is_nan2","k":4,"f":24,"l":11,"c":0.00},{"n":"larger_exponent[7-3]","k":4,"f":24,"l":31,"c":0.00},{"n":"larger_exponent[2-0]","k":4,"f":24,"l":31,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa[9-2]","k":4,"f":24,"l":106,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa[1-0]","k":4,"f":24,"l":106,"c":0.00},{"n":"larger_mantissa_l[9-2]","k":4,"f":24,"l":127,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa_l[1-0]","k":4,"f":24,"l":127,"c":0.00},{"n":"larger_mantissa_sign","k":4,"f":24,"l":108,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"larger_mantissa_sign_l","k":4,"f":24,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mantissa_overflow","k":4,"f":24,"l":109,"c":0.00},{"n":"mantissa_sum[10]","k":4,"f":24,"l":107,"c":0.00},{"n":"mantissa_sum[9-0]","k":4,"f":24,"l":107,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"norm_shift[3]","k":4,"f":24,"l":198,"c":0.00},{"n":"norm_shift[2-0]","k":4,"f":24,"l":198,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"normalized_mantissa_sum[8-0]","k":4,"f":24,"l":197,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"overflow","k":4,"f":24,"l":8,"c":0.00},{"n":"result_sign","k":4,"f":24,"l":109,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_sum[7]","k":4,"f":24,"l":251,"c":0.00},{"n":"round_sum[6-0]","k":4,"f":24,"l":251,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"round_this[8-0]","k":4,"f":24,"l":219,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"rounded_fraction[6-0]","k":4,"f":24,"l":238,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_not_shifted","k":4,"f":24,"l":67,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_not_shifted_l","k":4,"f":24,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_shifted","k":4,"f":24,"l":67,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sign_shifted_l","k":4,"f":24,"l":128,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"signs_differ","k":4,"f":24,"l":109,"c":0.00},{"n":"signs_differ_l","k":4,"f":24,"l":128,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"smaller_exponent[7-3]","k":4,"f":24,"l":30,"c":0.00},{"n":"smaller_exponent[2-0]","k":4,"f":24,"l":30,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"smaller_mantissa[9-0]","k":4,"f":24,"l":106,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"smaller_mantissa_l[9-0]","k":4,"f":24,"l":127,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sticky_bit","k":4,"f":24,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_exp1[7-3]","k":4,"f":24,"l":204,"c":0.00},{"n":"u_exp1[2-0]","k":4,"f":24,"l":204,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_result[7-0]","k":4,"f":24,"l":206,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"u_shifted_amount[7-3]","k":4,"f":24,"l":205,"c":0.00},{"n":"u_shifted_amount[2-0]","k":4,"f":24,"l":205,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"underflow","k":4,"f":24,"l":8,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"xor_out[15-10]","k":4,"f":24,"l":269,"c":0.00},{"n":"xor_out[9-7]","k":4,"f":24,"l":269,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"164":{"pr":"/lane_tb/dut/u_valu/adder/normalizer","ext":0,"t":[{"n":"result[9-0]","k":4,"f":19,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"shifted_amount[3]","k":4,"f":19,"l":20,"c":0.00},{"n":"shifted_amount[2-0]","k":4,"f":19,"l":20,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"165":{"pr":"/lane_tb/dut/u_valu_sync","ext":0,"t":[{"n":"CLK","k":6,"f":20,"l":5,"cn":"/lane_tb/dut/CLK","tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_empty","k":4,"f":20,"l":24,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"fifo_full","k":4,"f":20,"l":25,"c":0.00},{"n":"fu_ready","k":6,"f":20,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"issue_valid","k":6,"f":20,"l":9,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[0-9]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[10-14]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[15]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[16]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[17-18]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_out[18-17]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[16]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"meta_out[15]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[14-10]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[9-0]","k":4,"f":20,"l":17,"c":0.00},{"n":"nRST","k":6,"f":20,"l":6,"cn":"/lane_tb/dut/nRST","tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop","k":4,"f":20,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"pop_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"pop_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"pop_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push","k":4,"f":20,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"push_cnt[31-7]","k":4,"f":20,"l":42,"c":0.00},{"n":"push_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"push_cnt[5-0]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sync_ready","k":4,"f":20,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_ready","k":6,"f":20,"l":16,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wb_valid","k":6,"f":20,"l":15,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"166":{"pr":"/lane_tb/dut/u_valu_sync/u_fifo","ext":0,"t":[{"n":"dout[18-17]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[16]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"dout[15]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[14-10]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[9-0]","k":4,"f":21,"l":10,"c":0.00},{"n":"empty","k":6,"f":21,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"full","k":6,"f":21,"l":11,"c":0.00},{"n":"rptr[2-0]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"wptr[2-0]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"27":{"pr":"/lane_tb","ext":0,"t":[{"n":"CLK","k":4,"f":2,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_monitor_en","k":4,"f":2,"l":70,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_monitor_en_div","k":4,"f":2,"l":71,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results[0-1]","k":4,"f":2,"l":66,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results[2-31]","k":4,"f":2,"l":66,"c":0.00},{"n":"dir_seen_results_div[0-1]","k":4,"f":2,"l":67,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results_div[2-31]","k":4,"f":2,"l":67,"c":0.00},{"n":"driver_done_div","k":4,"f":2,"l":75,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_mul","k":4,"f":2,"l":76,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_sqrt","k":4,"f":2,"l":74,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_valu","k":4,"f":2,"l":77,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"nRST","k":4,"f":2,"l":13,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"total_errors[0-31]","k":4,"f":2,"l":63,"c":0.00}]},"14":{"pr":"work.adder_8b","ext":0,"t":[{"n":"ovf","k":6,"f":15,"l":22,"c":0.00},{"n":"r_exp1[0-2]","k":4,"f":15,"l":26,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"r_exp1[3-6]","k":4,"f":15,"l":26,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_exp1[7]","k":4,"f":15,"l":26,"c":0.00},{"n":"r_exp2[0-1]","k":4,"f":15,"l":27,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"r_exp2[2]","k":4,"f":15,"l":27,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"r_exp2[3-6]","k":4,"f":15,"l":27,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"r_exp2[7]","k":4,"f":15,"l":27,"c":0.00},{"n":"r_sum[0-3]","k":4,"f":15,"l":28,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"r_sum[4-6]","k":4,"f":15,"l":28,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"r_sum[7]","k":4,"f":15,"l":28,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"sum[0-4]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"sum[5-6]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"sum[7]","k":6,"f":15,"l":21,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"unf","k":6,"f":15,"l":23,"tr":[{"n":0,"c":1}],"c":50.00}]},"13":{"pr":"work.fa","ext":0,"t":[{"n":"cout","k":4,"f":14,"l":7,"tr":[{"n":0,"c":76},{"n":1,"c":76}],"c":100.00},{"n":"s","k":4,"f":14,"l":7,"tr":[{"n":0,"c":76},{"n":1,"c":76}],"c":100.00}]},"12":{"pr":"work.ha","ext":0,"t":[{"n":"cout","k":4,"f":13,"l":8,"tr":[{"n":0,"c":29},{"n":1,"c":29}],"c":100.00},{"n":"s","k":4,"f":13,"l":8,"tr":[{"n":0,"c":30},{"n":1,"c":30}],"c":100.00}]},"17":{"pr":"work.lane_fu_pt","ext":0,"t":[{"n":"CLK","k":6,"f":20,"l":5,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"fifo_empty","k":4,"f":20,"l":24,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"fifo_full","k":4,"f":20,"l":25,"c":0.00},{"n":"fu_ready","k":6,"f":20,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"issue_valid","k":6,"f":20,"l":9,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"meta_in[0]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[1-6]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_in[7]","k":6,"f":20,"l":11,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"meta_in[8-9]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_in[10]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"meta_in[11]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"meta_in[12-13]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"meta_in[14]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"meta_in[15-16]","k":6,"f":20,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"meta_in[17-18]","k":6,"f":20,"l":11,"c":0.00},{"n":"meta_out[0]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[1-7]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[8-9]","k":4,"f":20,"l":17,"c":0.00},{"n":"meta_out[10]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"meta_out[11]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"meta_out[12-14]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"meta_out[15]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[16]","k":4,"f":20,"l":17,"tr":[{"n":0,"c":2},{"n":1,"c":1}],"c":100.00},{"n":"meta_out[17-18]","k":4,"f":20,"l":17,"c":0.00},{"n":"nRST","k":6,"f":20,"l":6,"tr":[{"n":1,"c":4}],"c":50.00},{"n":"pop","k":4,"f":20,"l":27,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"pop_cnt[0-5]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"pop_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":4}],"c":50.00},{"n":"pop_cnt[7-31]","k":4,"f":20,"l":42,"c":0.00},{"n":"push","k":4,"f":20,"l":26,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"push_cnt[0-5]","k":4,"f":20,"l":42,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"push_cnt[6]","k":4,"f":20,"l":42,"tr":[{"n":1,"c":4}],"c":50.00},{"n":"push_cnt[7-31]","k":4,"f":20,"l":42,"c":0.00},{"n":"sync_ready","k":4,"f":20,"l":12,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"wb_ready","k":6,"f":20,"l":16,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"wb_valid","k":6,"f":20,"l":15,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00}]},"8":{"pr":"work.lane_sequencer","ext":0,"t":[{"n":"elem_accepted","k":4,"f":4,"l":24,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"elem_idx_next[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"elem_idx_q[0]","k":4,"f":4,"l":21,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.ready","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.rm","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.valid","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.v1[0].exp[7-9]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.v1[0].exp[10-14]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[0].frac[0-6]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.v1[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].exp[7-9]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.v1[1].exp[10-14]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v1[1].frac[0-6]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.v1[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].exp[7-9]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_in.v2[0].exp[10-14]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[0].frac[0-6]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_in.v2[0].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].exp[7-9]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_in.v2[1].exp[10-14]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.v2[1].frac[0-6]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_in.v2[1].sign","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vd[0-3]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.vd[4-5]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"lane_in.vd[6-7]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_in.vmask[0-1]","k":4,"f":4,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_in.vop[0-6]","k":4,"f":4,"l":10,"c":0.00},{"n":"lane_out.elem_idx","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.lane_ready","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.mask_bit","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.rm","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.valid","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.v1_elem.exp[7-9]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.v1_elem.exp[10-14]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v1_elem.frac[0-6]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.v1_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.exp[7-9]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_out.v2_elem.exp[10-14]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.v2_elem.frac[0-6]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"lane_out.v2_elem.sign","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vd[0]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.vd[1-2]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.vd[3]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"lane_out.vd[4-5]","k":4,"f":4,"l":11,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"lane_out.vd[6-7]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_out.vop[0-6]","k":4,"f":4,"l":11,"c":0.00},{"n":"lane_ready","k":4,"f":4,"l":25,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"next_state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":4},{"n":"BUSY","c":4}]},{"n":"reg_slice.ready","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.rm","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.valid","k":4,"f":4,"l":18,"tr":[{"n":1,"c":4}],"c":50.00},{"n":"reg_slice.v1[0].exp[7-9]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.v1[0].exp[10-14]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[0].frac[0-6]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.v1[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].exp[7-9]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.v1[1].exp[10-14]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v1[1].frac[0-6]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.v1[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].exp[7-9]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"reg_slice.v2[0].exp[10-14]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[0].frac[0-6]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"reg_slice.v2[0].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].exp[7-9]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"reg_slice.v2[1].exp[10-14]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.v2[1].frac[0-6]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":3},{"n":1,"c":3}],"c":100.00},{"n":"reg_slice.v2[1].sign","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vd[0]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.vd[1-2]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.vd[3]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":2},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.vd[4-5]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"reg_slice.vd[6-7]","k":4,"f":4,"l":18,"c":0.00},{"n":"reg_slice.vmask[0-1]","k":4,"f":4,"l":18,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"reg_slice.vop[0-6]","k":4,"f":4,"l":18,"c":0.00},{"n":"state","k":0,"f":4,"l":15,"tr":[{"n":"IDLE","c":4},{"n":"BUSY","c":4}]}]},"2":{"pr":"work.lane_tb","ext":0,"t":[{"n":"CLK","k":4,"f":2,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_monitor_en","k":4,"f":2,"l":70,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_monitor_en_div","k":4,"f":2,"l":71,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results[0-1]","k":4,"f":2,"l":66,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results[2-31]","k":4,"f":2,"l":66,"c":0.00},{"n":"dir_seen_results_div[0-1]","k":4,"f":2,"l":67,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dir_seen_results_div[2-31]","k":4,"f":2,"l":67,"c":0.00},{"n":"driver_done_div","k":4,"f":2,"l":75,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_mul","k":4,"f":2,"l":76,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_sqrt","k":4,"f":2,"l":74,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"driver_done_valu","k":4,"f":2,"l":77,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"nRST","k":4,"f":2,"l":13,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"total_errors[0-31]","k":4,"f":2,"l":63,"c":0.00}]},"16":{"pr":"work.left_shift","ext":0,"t":[{"n":"result[0]","k":4,"f":19,"l":19,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result[1-9]","k":4,"f":19,"l":19,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"shifted_amount[0-2]","k":4,"f":19,"l":20,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"shifted_amount[3]","k":4,"f":19,"l":20,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00}]},"10":{"pr":"work.mul_bf16","ext":0,"t":[{"n":"a_latched[0-9]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"a_latched[10-13]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"a_latched[14-15]","k":4,"f":11,"l":12,"c":0.00},{"n":"b_latched[0-8]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"b_latched[9]","k":4,"f":11,"l":12,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"b_latched[10-13]","k":4,"f":11,"l":12,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"b_latched[14-15]","k":4,"f":11,"l":12,"c":0.00},{"n":"done","k":4,"f":11,"l":4,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"exp_sum[0-4]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"exp_sum[5-6]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"exp_sum[7]","k":4,"f":11,"l":77,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"frac_leading_bit_fp1","k":4,"f":11,"l":37,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"frac_leading_bit_fp2","k":4,"f":11,"l":38,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"lat1_ready","k":4,"f":11,"l":6,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_carryout","k":4,"f":11,"l":59,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_final_exp[0-4]","k":4,"f":11,"l":105,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_final_exp[5-6]","k":4,"f":11,"l":105,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"mul_final_exp[7]","k":4,"f":11,"l":105,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"mul_frac_product[0-8]","k":4,"f":11,"l":91,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_ovf","k":4,"f":11,"l":78,"c":0.00},{"n":"mul_product[0-9]","k":4,"f":11,"l":58,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_round_loss","k":4,"f":11,"l":60,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_sign_result","k":4,"f":11,"l":73,"c":0.00},{"n":"mul_significand_rounded[0-6]","k":4,"f":11,"l":96,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"mul_significand_rounded[7]","k":4,"f":11,"l":96,"c":0.00},{"n":"mul_unf","k":4,"f":11,"l":78,"tr":[{"n":0,"c":1}],"c":50.00},{"n":"result[0-11]","k":4,"f":11,"l":4,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"result[12-13]","k":4,"f":11,"l":4,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"result[14]","k":4,"f":11,"l":4,"tr":[{"n":1,"c":1}],"c":50.00},{"n":"result[15]","k":4,"f":11,"l":4,"c":0.00}]},"18":{"pr":"work.sync_fifo","ext":0,"t":[{"n":"dout[0]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[1-7]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[8-9]","k":4,"f":21,"l":10,"c":0.00},{"n":"dout[10]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"dout[11]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"dout[12-14]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"dout[15]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"dout[16]","k":4,"f":21,"l":10,"tr":[{"n":0,"c":2},{"n":1,"c":1}],"c":100.00},{"n":"dout[17-18]","k":4,"f":21,"l":10,"c":0.00},{"n":"empty","k":6,"f":21,"l":11,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"full","k":6,"f":21,"l":11,"c":0.00},{"n":"rptr[0-2]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"rptr[3]","k":4,"f":21,"l":14,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"wptr[0-2]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":4},{"n":1,"c":4}],"c":100.00},{"n":"wptr[3]","k":4,"f":21,"l":13,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00}]},"11":{"pr":"work.wallacetree_8b","ext":0,"t":[{"n":"overflow","k":4,"f":12,"l":12,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"product[0-15]","k":4,"f":12,"l":159,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"product[16]","k":4,"f":12,"l":159,"c":0.00},{"n":"result[0-9]","k":4,"f":12,"l":12,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"round_loss","k":4,"f":12,"l":12,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage1_carries[0][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage1_carries[1][0-7]","k":4,"f":12,"l":23,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage1_sums[0][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage1_sums[1][0-9]","k":4,"f":12,"l":22,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage2_carries[0][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage2_carries[1][0-7]","k":4,"f":12,"l":51,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage2_level1_sums[0-12]","k":4,"f":12,"l":48,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage2_level2_sums[0-8]","k":4,"f":12,"l":49,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage2_level2_sums[9]","k":4,"f":12,"l":49,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"stage3_carries[0-9]","k":4,"f":12,"l":103,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage3_sums[0-13]","k":4,"f":12,"l":102,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage3_sums[14]","k":4,"f":12,"l":102,"tr":[{"n":0,"c":1},{"n":1,"c":2}],"c":100.00},{"n":"stage4_carries[0]","k":4,"f":12,"l":136,"tr":[{"n":0,"c":1},{"n":1,"c":1}],"c":100.00},{"n":"stage4_carries[1-10]","k":4,"f":12,"l":136,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00},{"n":"stage4_sums[0-14]","k":4,"f":12,"l":135,"tr":[{"n":0,"c":2},{"n":1,"c":2}],"c":100.00}]}}; +processTogglesData(g_data); \ No newline at end of file diff --git a/covhtmlreport/files/z1.js b/covhtmlreport/files/z1.js new file mode 100644 index 000000000..bec342591 --- /dev/null +++ b/covhtmlreport/files/z1.js @@ -0,0 +1,2 @@ +var g_data = {"28":{"st":"inst","pa":0,"n":"/lane_tb/lane_if","l":"SystemVerilog","sn":2,"du":{"n":"work.vector_if","s":3,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"lane_if","s":28,"z":1}],"loc":{"cp":1.07,"data":{"t":[44992,483,1]}}},"30":{"st":"inst","pa":0,"n":"/lane_tb/dut/sqrt_bus","l":"SystemVerilog","sn":6,"du":{"n":"work.sqrt_if","s":7,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"sqrt_bus","s":30,"z":1}],"loc":{"cp":77.77,"data":{"t":[72,56,1]}}},"31":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_seq_sqrt","l":"Verilog","sn":6,"du":{"n":"work.lane_sequencer","s":8,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_seq_sqrt","s":31,"z":1}],"loc":{"cp":78.09,"data":{"s":[29,29,1],"b":[15,15,1],"t":[452,155,1]}}},"35":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[13]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[13]/fa_s4_l1","s":35,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"36":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[12]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[12]/fa_s4_l1","s":36,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"37":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[11]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[11]/fa_s4_l1","s":37,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"38":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[10]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[10]/fa_s4_l1","s":38,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"39":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[9]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[9]/fa_s4_l1","s":39,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"40":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[8]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[8]/fa_s4_l1","s":40,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"41":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk5[7]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk5[7]/fa_s4_l1","s":41,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"42":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[10]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[10]/fa_s3_l1","s":42,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"43":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[9]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[9]/fa_s3_l1","s":43,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"44":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[8]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[8]/fa_s3_l1","s":44,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"45":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[7]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[7]/fa_s3_l1","s":45,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"46":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[6]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[6]/fa_s3_l1","s":46,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"47":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk4[5]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk4[5]/fa_s3_l1","s":47,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"48":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[7]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[7]/fa_s2_l2","s":48,"z":1}],"loc":{"cp":94.44,"data":{"s":[2,2,1],"fe":[6,5,1],"t":[4,4,1]}}},"49":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[6]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[6]/fa_s2_l2","s":49,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"50":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[5]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[5]/fa_s2_l2","s":50,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"51":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[4]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[4]/fa_s2_l2","s":51,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"52":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[3]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[3]/fa_s2_l2","s":52,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"53":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk3[2]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk3[2]/fa_s2_l2","s":53,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"54":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[9]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[9]/fa_s2_l1","s":54,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"55":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[8]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[8]/fa_s2_l1","s":55,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"56":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[7]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[7]/fa_s2_l1","s":56,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"57":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[6]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[6]/fa_s2_l1","s":57,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"58":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[5]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[5]/fa_s2_l1","s":58,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"59":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[4]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[4]/fa_s2_l1","s":59,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"60":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk2[3]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk2[3]/fa_s2_l1","s":60,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"61":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[7]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[7]/fa_00","s":61,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"62":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[6]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[6]/fa_00","s":62,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"63":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[5]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[5]/fa_00","s":63,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"64":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[4]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[4]/fa_00","s":64,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"65":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[3]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[3]/fa_00","s":65,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"66":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/genblk1[2]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/genblk1[2]/fa_00","s":66,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"67":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_first","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/ha_00_first","s":67,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"68":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[1]/ha_00_last","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[1]/ha_00_last","s":68,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"69":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[7]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[7]/fa_00","s":69,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"70":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[6]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[6]/fa_00","s":70,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"71":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[5]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[5]/fa_00","s":71,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"72":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[4]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[4]/fa_00","s":72,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"73":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[3]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[3]/fa_00","s":73,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"74":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/genblk1[2]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/genblk1[2]/fa_00","s":74,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"75":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_first","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/ha_00_first","s":75,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"76":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/genblk1[0]/ha_00_last","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"genblk1[0]/ha_00_last","s":76,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"77":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l1_b2","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s2_l1_b2","s":77,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"78":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b1","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s2_l2_b1","s":78,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"79":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s2_l2_b8","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s2_l2_b8","s":79,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"80":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b3","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s3_l1_b3","s":80,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"81":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b4","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s3_l1_b4","s":81,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"82":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b11","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s3_l1_b11","s":82,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"83":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s3_l1_b12","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s3_l1_b12","s":83,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"84":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b4","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s4_l1_b4","s":84,"z":1}],"loc":{"cp":66.66,"data":{"s":[2,2,1],"fe":[4,2,1],"t":[4,2,1]}}},"85":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b5","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s4_l1_b5","s":85,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"86":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b6","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s4_l1_b6","s":86,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"87":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca/ha_s4_l1_b14","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"b":1},{"n":"ha_s4_l1_b14","s":87,"z":1}],"loc":{"cp":91.66,"data":{"s":[2,2,1],"fe":[4,3,1],"t":[4,4,1]}}},"34":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/wallaca","l":"Verilog","sn":11,"du":{"n":"work.wallacetree_8b","s":11,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"wallaca","s":34,"z":1}],"children":[{"n":"ha_s4_l1_b14","id":87,"zf":1,"tc":91.66,"s":100.00,"fe":75.00,"t":100.00},{"n":"ha_s4_l1_b6","id":86,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s4_l1_b5","id":85,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s4_l1_b4","id":84,"zf":1,"tc":66.66,"s":100.00,"fe":50.00,"t":50.00},{"n":"ha_s3_l1_b12","id":83,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b11","id":82,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b4","id":81,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b3","id":80,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l2_b8","id":79,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l2_b1","id":78,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l1_b2","id":77,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/ha_00_last","id":76,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/ha_00_first","id":75,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[2]/fa_00","id":74,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[3]/fa_00","id":73,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[4]/fa_00","id":72,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[5]/fa_00","id":71,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[6]/fa_00","id":70,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[7]/fa_00","id":69,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/ha_00_last","id":68,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/ha_00_first","id":67,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[2]/fa_00","id":66,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[3]/fa_00","id":65,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[4]/fa_00","id":64,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[5]/fa_00","id":63,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[6]/fa_00","id":62,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[7]/fa_00","id":61,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[3]/fa_s2_l1","id":60,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[4]/fa_s2_l1","id":59,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[5]/fa_s2_l1","id":58,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[6]/fa_s2_l1","id":57,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[7]/fa_s2_l1","id":56,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[8]/fa_s2_l1","id":55,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[9]/fa_s2_l1","id":54,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[2]/fa_s2_l2","id":53,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[3]/fa_s2_l2","id":52,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[4]/fa_s2_l2","id":51,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[5]/fa_s2_l2","id":50,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[6]/fa_s2_l2","id":49,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[7]/fa_s2_l2","id":48,"zf":1,"tc":94.44,"s":100.00,"fe":83.33,"t":100.00},{"n":"genblk4[5]/fa_s3_l1","id":47,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[6]/fa_s3_l1","id":46,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[7]/fa_s3_l1","id":45,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[8]/fa_s3_l1","id":44,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[9]/fa_s3_l1","id":43,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[10]/fa_s3_l1","id":42,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[7]/fa_s4_l1","id":41,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[8]/fa_s4_l1","id":40,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[9]/fa_s4_l1","id":39,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[10]/fa_s4_l1","id":38,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[11]/fa_s4_l1","id":37,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[12]/fa_s4_l1","id":36,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[13]/fa_s4_l1","id":35,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00}],"rec":{"cp":98.12,"data":{"s":[121,121],"fe":[416,399],"t":[522,514]}},"loc":{"cp":95.96,"data":{"s":[15,15,1],"fe":[128,115,1],"t":[310,304,1]}}},"88":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1/add_EXPs","l":"Verilog","sn":11,"du":{"n":"work.adder_8b","s":14,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"b":1},{"n":"add_EXPs","s":88,"z":1}],"loc":{"cp":63.97,"data":{"s":[7,7,1],"fe":[8,1,1],"t":[68,54,1]}}},"33":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/mul1","l":"Verilog","sn":17,"du":{"n":"work.mul_bf16","s":10,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"mul1","s":33,"z":1}],"children":[{"n":"add_EXPs","id":88,"zf":1,"tc":63.97,"s":100.00,"fe":12.50,"t":79.41},{"n":"wallaca","id":34,"zf":1,"tc":98.12,"s":100.00,"fe":95.91,"t":98.46}],"rec":{"cp":87.66,"data":{"s":[150,150],"b":[16,15],"fc":[7,4],"fe":[426,400],"t":[790,739]}},"loc":{"cp":67.27,"data":{"s":[22,22,1],"b":[16,15,1],"fc":[7,4,1],"fe":[2,0,1],"t":[200,171,1]}}},"90":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/add1/normalizer","l":"Verilog","sn":18,"du":{"n":"work.left_shift","s":16,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"add1","s":89,"b":1},{"n":"normalizer","s":90,"z":1}],"loc":{"cp":91.38,"data":{"s":[23,21,1],"b":[10,9,1],"t":[28,26,1]}}},"89":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16/add1","l":"Verilog","sn":17,"du":{"n":"work.add_bf16","s":15,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"b":1},{"n":"add1","s":89,"z":1}],"children":[{"n":"normalizer","id":90,"zf":1,"tc":91.38,"s":91.30,"b":90.00,"t":92.85}],"rec":{"cp":71.27,"data":{"s":[108,104],"b":[34,31],"fc":[7,7],"fe":[23,0],"t":[556,383]}},"loc":{"cp":71.38,"data":{"s":[85,83,1],"b":[24,22,1],"fc":[7,7,1],"fe":[23,0,1],"t":[528,357,1]}}},"32":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_bf16","l":"Verilog","sn":6,"du":{"n":"work.sqrt_bf16","s":9,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_bf16","s":32,"z":1}],"children":[{"n":"add1","id":89,"zf":1,"tc":71.27,"s":96.29,"b":91.17,"fc":100.00,"fe":0.00,"t":68.88},{"n":"mul1","id":33,"zf":1,"tc":87.66,"s":100.00,"b":93.75,"fc":57.14,"fe":93.89,"t":93.54}],"rec":{"cp":83.36,"data":{"s":[370,355],"b":[106,95],"fc":[42,28],"fe":[466,409],"t":[2042,1569]}},"loc":{"cp":71.11,"data":{"s":[112,101,1],"b":[56,49,1],"fc":[28,17,1],"fe":[17,9,1],"t":[696,447,1]}}},"92":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_sync/u_fifo","l":"Verilog","sn":20,"du":{"n":"work.sync_fifo","s":18,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_sync","s":91,"b":1},{"n":"u_fifo","s":92,"z":1}],"loc":{"cp":68.96,"data":{"s":[10,10,1],"b":[8,8,1],"fc":[4,2,1],"fe":[2,1,1],"t":[58,26,1]}}},"91":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_sqrt_sync","l":"Verilog","sn":6,"du":{"n":"work.lane_fu_pt","s":17,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_sqrt_sync","s":91,"z":1}],"children":[{"n":"u_fifo","id":92,"zf":1,"tc":68.96,"s":100.00,"b":100.00,"fc":50.00,"fe":50.00,"t":44.82}],"rec":{"cp":68.40,"data":{"s":[19,18],"b":[14,14],"fc":[4,2],"fe":[9,6],"t":[284,87]}},"loc":{"cp":71.82,"data":{"s":[9,8,1],"b":[6,6,1],"fe":[7,5,1],"t":[226,61,1]}}},"93":{"st":"inst","pa":0,"n":"/lane_tb/dut/div_bus","l":"SystemVerilog","sn":6,"du":{"n":"work.div_if","s":19,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"div_bus","s":93,"z":1}],"loc":{"cp":46.15,"data":{"t":[104,48,1]}}},"94":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_seq_div","l":"Verilog","sn":6,"du":{"n":"work.lane_sequencer","s":8,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_seq_div","s":94,"z":1}],"loc":{"cp":85.76,"data":{"s":[29,29,1],"b":[15,15,1],"t":[452,259,1]}}},"96":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_div/m_div","l":"Verilog","sn":22,"du":{"n":"work.mant_div","s":21,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_div","s":95,"b":1},{"n":"m_div","s":96,"z":1}],"loc":{"cp":28.23,"data":{"s":[27,18,1],"b":[11,5,1],"fc":[1,0,1],"t":[244,2,1]}}},"95":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_div","l":"Verilog","sn":6,"du":{"n":"work.div","s":20,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_div","s":95,"z":1}],"children":[{"n":"m_div","id":96,"zf":1,"tc":28.23,"s":66.66,"b":45.45,"fc":0.00,"t":0.81}],"rec":{"cp":43.74,"data":{"s":[83,66],"b":[35,24],"fc":[18,6],"fe":[45,5],"t":[580,152]}},"loc":{"cp":51.18,"data":{"s":[56,48,1],"b":[24,19,1],"fc":[17,6,1],"fe":[45,5,1],"t":[336,150,1]}}},"98":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_div_sync/u_fifo","l":"Verilog","sn":20,"du":{"n":"work.sync_fifo","s":18,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_div_sync","s":97,"b":1},{"n":"u_fifo","s":98,"z":1}],"loc":{"cp":73.79,"data":{"s":[10,10,1],"b":[8,8,1],"fc":[4,2,1],"fe":[2,1,1],"t":[58,40,1]}}},"97":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_div_sync","l":"Verilog","sn":6,"du":{"n":"work.lane_fu_pt","s":17,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_div_sync","s":97,"z":1}],"children":[{"n":"u_fifo","id":98,"zf":1,"tc":73.79,"s":100.00,"b":100.00,"fc":50.00,"fe":50.00,"t":68.96}],"rec":{"cp":69.14,"data":{"s":[19,18],"b":[14,14],"fc":[4,2],"fe":[9,5],"t":[284,129]}},"loc":{"cp":71.35,"data":{"s":[9,8,1],"b":[6,6,1],"fe":[7,4,1],"t":[226,89,1]}}},"99":{"st":"inst","pa":0,"n":"/lane_tb/dut/mul_bus","l":"SystemVerilog","sn":6,"du":{"n":"work.mul_if","s":22,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"mul_bus","s":99,"z":1}],"loc":{"cp":70.19,"data":{"t":[104,73,1]}}},"100":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_seq_mul","l":"Verilog","sn":6,"du":{"n":"work.lane_sequencer","s":8,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_seq_mul","s":100,"z":1}],"loc":{"cp":86.50,"data":{"s":[29,29,1],"b":[15,15,1],"t":[452,269,1]}}},"104":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[13]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[13]/fa_s4_l1","s":104,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"105":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[12]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[12]/fa_s4_l1","s":105,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"106":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[11]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[11]/fa_s4_l1","s":106,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"107":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[10]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[10]/fa_s4_l1","s":107,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"108":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[9]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[9]/fa_s4_l1","s":108,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"109":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[8]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[8]/fa_s4_l1","s":109,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"110":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk5[7]/fa_s4_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk5[7]/fa_s4_l1","s":110,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"111":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[10]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[10]/fa_s3_l1","s":111,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"112":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[9]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[9]/fa_s3_l1","s":112,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"113":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[8]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[8]/fa_s3_l1","s":113,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"114":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[7]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[7]/fa_s3_l1","s":114,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"115":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[6]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[6]/fa_s3_l1","s":115,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"116":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk4[5]/fa_s3_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk4[5]/fa_s3_l1","s":116,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"117":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[7]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[7]/fa_s2_l2","s":117,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"118":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[6]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[6]/fa_s2_l2","s":118,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"119":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[5]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[5]/fa_s2_l2","s":119,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"120":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[4]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[4]/fa_s2_l2","s":120,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"121":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[3]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[3]/fa_s2_l2","s":121,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"122":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk3[2]/fa_s2_l2","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk3[2]/fa_s2_l2","s":122,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"123":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[9]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[9]/fa_s2_l1","s":123,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"124":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[8]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[8]/fa_s2_l1","s":124,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"125":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[7]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[7]/fa_s2_l1","s":125,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"126":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[6]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[6]/fa_s2_l1","s":126,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"127":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[5]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[5]/fa_s2_l1","s":127,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"128":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[4]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[4]/fa_s2_l1","s":128,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"129":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk2[3]/fa_s2_l1","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk2[3]/fa_s2_l1","s":129,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"130":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[7]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[7]/fa_00","s":130,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"131":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[6]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[6]/fa_00","s":131,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"132":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[5]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[5]/fa_00","s":132,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"133":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[4]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[4]/fa_00","s":133,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"134":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[3]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[3]/fa_00","s":134,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"135":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/genblk1[2]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/genblk1[2]/fa_00","s":135,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"136":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_first","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/ha_00_first","s":136,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"137":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[1]/ha_00_last","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[1]/ha_00_last","s":137,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"138":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[7]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[7]/fa_00","s":138,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"139":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[6]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[6]/fa_00","s":139,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"140":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[5]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[5]/fa_00","s":140,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"141":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[4]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[4]/fa_00","s":141,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"142":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[3]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[3]/fa_00","s":142,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"143":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/genblk1[2]/fa_00","l":"Verilog","sn":12,"du":{"n":"work.fa","s":13,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/genblk1[2]/fa_00","s":143,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"144":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_first","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/ha_00_first","s":144,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"145":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/genblk1[0]/ha_00_last","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"genblk1[0]/ha_00_last","s":145,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"146":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l1_b2","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s2_l1_b2","s":146,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"147":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b1","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s2_l2_b1","s":147,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"148":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s2_l2_b8","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s2_l2_b8","s":148,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"149":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b3","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s3_l1_b3","s":149,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"150":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b4","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s3_l1_b4","s":150,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"151":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b11","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s3_l1_b11","s":151,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"152":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s3_l1_b12","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s3_l1_b12","s":152,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"153":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b4","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s4_l1_b4","s":153,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"154":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b5","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s4_l1_b5","s":154,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"155":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b6","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s4_l1_b6","s":155,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"156":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca/ha_s4_l1_b14","l":"Verilog","sn":12,"du":{"n":"work.ha","s":12,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"b":1},{"n":"ha_s4_l1_b14","s":156,"z":1}],"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"103":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/wallaca","l":"Verilog","sn":11,"du":{"n":"work.wallacetree_8b","s":11,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"wallaca","s":103,"z":1}],"children":[{"n":"ha_s4_l1_b14","id":156,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s4_l1_b6","id":155,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s4_l1_b5","id":154,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s4_l1_b4","id":153,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b12","id":152,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b11","id":151,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b4","id":150,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s3_l1_b3","id":149,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l2_b8","id":148,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l2_b1","id":147,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"ha_s2_l1_b2","id":146,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/ha_00_last","id":145,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/ha_00_first","id":144,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[2]/fa_00","id":143,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[3]/fa_00","id":142,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[4]/fa_00","id":141,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[5]/fa_00","id":140,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[6]/fa_00","id":139,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[0]/genblk1[7]/fa_00","id":138,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/ha_00_last","id":137,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/ha_00_first","id":136,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[2]/fa_00","id":135,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[3]/fa_00","id":134,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[4]/fa_00","id":133,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[5]/fa_00","id":132,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[6]/fa_00","id":131,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk1[1]/genblk1[7]/fa_00","id":130,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[3]/fa_s2_l1","id":129,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[4]/fa_s2_l1","id":128,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[5]/fa_s2_l1","id":127,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[6]/fa_s2_l1","id":126,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[7]/fa_s2_l1","id":125,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[8]/fa_s2_l1","id":124,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk2[9]/fa_s2_l1","id":123,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[2]/fa_s2_l2","id":122,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[3]/fa_s2_l2","id":121,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[4]/fa_s2_l2","id":120,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[5]/fa_s2_l2","id":119,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[6]/fa_s2_l2","id":118,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk3[7]/fa_s2_l2","id":117,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[5]/fa_s3_l1","id":116,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[6]/fa_s3_l1","id":115,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[7]/fa_s3_l1","id":114,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[8]/fa_s3_l1","id":113,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[9]/fa_s3_l1","id":112,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk4[10]/fa_s3_l1","id":111,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[7]/fa_s4_l1","id":110,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[8]/fa_s4_l1","id":109,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[9]/fa_s4_l1","id":108,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[10]/fa_s4_l1","id":107,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[11]/fa_s4_l1","id":106,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[12]/fa_s4_l1","id":105,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00},{"n":"genblk5[13]/fa_s4_l1","id":104,"zf":1,"tc":100.00,"s":100.00,"fe":100.00,"t":100.00}],"rec":{"cp":99.87,"data":{"s":[121,121],"fe":[416,416],"t":[522,520]}},"loc":{"cp":99.78,"data":{"s":[15,15,1],"fe":[128,128,1],"t":[310,308,1]}}},"157":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core/add_EXPs","l":"Verilog","sn":11,"du":{"n":"work.adder_8b","s":14,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"b":1},{"n":"add_EXPs","s":157,"z":1}],"loc":{"cp":48.03,"data":{"s":[7,7,1],"fe":[8,0,1],"t":[68,30,1]}}},"102":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul/u_mul_core","l":"Verilog","sn":10,"du":{"n":"work.mul_bf16","s":10,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"b":1},{"n":"u_mul_core","s":102,"z":1}],"children":[{"n":"add_EXPs","id":157,"zf":1,"tc":48.03,"s":100.00,"fe":0.00,"t":44.11},{"n":"wallaca","id":103,"zf":1,"tc":99.87,"s":100.00,"fe":100.00,"t":99.61}],"rec":{"cp":96.00,"data":{"s":[150,150],"b":[16,15],"fc":[7,7],"fe":[426,416],"t":[790,700]}},"loc":{"cp":73.75,"data":{"s":[22,22,1],"b":[16,15,1],"fc":[7,7,1],"fe":[2,0,1],"t":[200,150,1]}}},"101":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul","l":"Verilog","sn":6,"du":{"n":"work.mul_bf16_fu","s":23,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul","s":101,"z":1}],"children":[{"n":"u_mul_core","id":102,"zf":1,"tc":96.00,"s":100.00,"b":93.75,"fc":100.00,"fe":97.65,"t":88.60}],"rec":{"cp":90.60,"data":{"s":[169,169],"b":[31,30],"fc":[14,11],"fe":[428,418],"fs":[3,3],"ft":[4,3],"t":[928,800]}},"loc":{"cp":86.37,"data":{"s":[19,19,1],"b":[15,15,1],"fc":[7,4,1],"fe":[2,2,1],"fs":[3,3,1],"ft":[4,3,1],"t":[138,100,1]}}},"159":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul_sync/u_fifo","l":"Verilog","sn":20,"du":{"n":"work.sync_fifo","s":18,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul_sync","s":158,"b":1},{"n":"u_fifo","s":159,"z":1}],"loc":{"cp":70.37,"data":{"s":[10,10,1],"b":[8,8,1],"fc":[4,2,1],"fe":[2,1,1],"t":[54,28,1]}}},"158":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_mul_sync","l":"Verilog","sn":6,"du":{"n":"work.lane_fu_pt","s":17,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_mul_sync","s":158,"z":1}],"children":[{"n":"u_fifo","id":159,"zf":1,"tc":70.37,"s":100.00,"b":100.00,"fc":50.00,"fe":50.00,"t":51.85}],"rec":{"cp":69.42,"data":{"s":[19,18],"b":[14,14],"fc":[4,2],"fe":[9,6],"t":[280,100]}},"loc":{"cp":73.04,"data":{"s":[9,8,1],"b":[6,6,1],"fe":[7,5,1],"t":[226,72,1]}}},"160":{"st":"inst","pa":0,"n":"/lane_tb/dut/valu_bus","l":"SystemVerilog","sn":6,"du":{"n":"work.valu_if","s":24,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"valu_bus","s":160,"z":1}],"loc":{"cp":62.96,"data":{"t":[108,68,1]}}},"161":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_seq_valu","l":"Verilog","sn":6,"du":{"n":"work.lane_sequencer","s":8,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_seq_valu","s":161,"z":1}],"loc":{"cp":86.20,"data":{"s":[29,29,1],"b":[15,15,1],"t":[452,265,1]}}},"164":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_valu/adder/normalizer","l":"Verilog","sn":24,"du":{"n":"work.left_shift","s":16,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_valu","s":162,"b":1},{"n":"adder","s":163,"b":1},{"n":"normalizer","s":164,"z":1}],"loc":{"cp":72.69,"data":{"s":[23,15,1],"b":[10,6,1],"t":[28,26,1]}}},"163":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_valu/adder","l":"Verilog","sn":23,"du":{"n":"work.addsub_bf16","s":26,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_valu","s":162,"b":1},{"n":"adder","s":163,"z":1}],"children":[{"n":"normalizer","id":164,"zf":1,"tc":72.69,"s":65.21,"b":60.00,"t":92.85}],"rec":{"cp":55.42,"data":{"s":[114,100],"b":[50,38],"fc":[33,11],"fe":[25,1],"t":[548,417]}},"loc":{"cp":57.18,"data":{"s":[91,85,1],"b":[40,32,1],"fc":[33,11,1],"fe":[25,1,1],"t":[520,391,1]}}},"162":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_valu","l":"Verilog","sn":6,"du":{"n":"work.valu","s":25,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_valu","s":162,"z":1}],"children":[{"n":"adder","id":163,"zf":1,"tc":55.42,"s":87.71,"b":76.00,"fc":33.33,"fe":4.00,"t":76.09}],"rec":{"cp":57.28,"data":{"s":[161,144],"b":[78,60],"fc":[37,15],"fe":[36,3],"t":[874,622]}},"loc":{"cp":70.65,"data":{"s":[47,44,1],"b":[28,22,1],"fc":[4,4,1],"fe":[11,2,1],"t":[326,205,1]}}},"166":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_valu_sync/u_fifo","l":"Verilog","sn":20,"du":{"n":"work.sync_fifo","s":18,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_valu_sync","s":165,"b":1},{"n":"u_fifo","s":166,"z":1}],"loc":{"cp":69.25,"data":{"s":[10,10,1],"b":[8,8,1],"fc":[4,2,1],"fe":[2,1,1],"t":[54,25,1]}}},"165":{"st":"inst","pa":0,"n":"/lane_tb/dut/u_valu_sync","l":"Verilog","sn":6,"du":{"n":"work.lane_fu_pt","s":17,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"b":1},{"n":"u_valu_sync","s":165,"z":1}],"children":[{"n":"u_fifo","id":166,"zf":1,"tc":69.25,"s":100.00,"b":100.00,"fc":50.00,"fe":50.00,"t":46.29}],"rec":{"cp":66.70,"data":{"s":[19,18],"b":[14,14],"fc":[4,2],"fe":[9,5],"t":[280,93]}},"loc":{"cp":69.03,"data":{"s":[9,8,1],"b":[6,6,1],"fe":[7,4,1],"t":[226,68,1]}}},"29":{"st":"inst","pa":0,"n":"/lane_tb/dut","l":"Verilog","sn":2,"du":{"n":"work.lane","s":6,"b":1},"bc":[{"n":"lane_tb","s":27,"b":1},{"n":"dut","s":29,"z":1}],"children":[{"n":"u_valu_sync","id":165,"zf":1,"tc":66.70,"s":94.73,"b":100.00,"fc":50.00,"fe":55.55,"t":33.21},{"n":"u_valu","id":162,"zf":1,"tc":57.28,"s":89.44,"b":76.92,"fc":40.54,"fe":8.33,"t":71.16},{"n":"u_seq_valu","id":161,"zf":1,"tc":86.20,"s":100.00,"b":100.00,"t":58.62},{"n":"valu_bus","id":160,"zf":1,"tc":62.96,"t":62.96},{"n":"u_mul_sync","id":158,"zf":1,"tc":69.42,"s":94.73,"b":100.00,"fc":50.00,"fe":66.66,"t":35.71},{"n":"u_mul","id":101,"zf":1,"tc":90.60,"s":100.00,"b":96.77,"fc":78.57,"fe":97.66,"fs":100.00,"ft":75.00,"t":86.20},{"n":"u_seq_mul","id":100,"zf":1,"tc":86.50,"s":100.00,"b":100.00,"t":59.51},{"n":"mul_bus","id":99,"zf":1,"tc":70.19,"t":70.19},{"n":"u_div_sync","id":97,"zf":1,"tc":69.14,"s":94.73,"b":100.00,"fc":50.00,"fe":55.55,"t":45.42},{"n":"u_div","id":95,"zf":1,"tc":43.74,"s":79.51,"b":68.57,"fc":33.33,"fe":11.11,"t":26.20},{"n":"u_seq_div","id":94,"zf":1,"tc":85.76,"s":100.00,"b":100.00,"t":57.30},{"n":"div_bus","id":93,"zf":1,"tc":46.15,"t":46.15},{"n":"u_sqrt_sync","id":91,"zf":1,"tc":68.40,"s":94.73,"b":100.00,"fc":50.00,"fe":66.66,"t":30.63},{"n":"u_sqrt_bf16","id":32,"zf":1,"tc":83.36,"s":95.94,"b":89.62,"fc":66.66,"fe":87.76,"t":76.83},{"n":"u_seq_sqrt","id":31,"zf":1,"tc":78.09,"s":100.00,"b":100.00,"t":34.29},{"n":"sqrt_bus","id":30,"zf":1,"tc":77.77,"t":77.77}],"rec":{"cp":79.97,"data":{"s":[1148,1094],"b":[405,363],"fc":[143,81],"fe":[1052,889],"fs":[3,3],"ft":[4,3],"t":[9520,5592]}},"loc":{"cp":80.87,"data":{"s":[173,172,1],"b":[39,38,1],"fc":[16,13,1],"fe":[41,32,1],"t":[1800,868,1]}}},"27":{"st":"inst","pa":0,"n":"/lane_tb","l":"Verilog","sn":2,"du":{"n":"work.lane_tb","s":2,"b":1},"bc":[{"n":"lane_tb","s":27,"z":1}],"children":[{"n":"dut","id":29,"zf":1,"tc":79.97,"s":95.29,"b":89.62,"fc":56.64,"fe":84.50,"fs":100.00,"ft":75.00,"t":58.73},{"n":"lane_if","id":28,"zf":1,"tc":1.07,"t":1.07}],"rec":{"cp":68.56,"data":{"s":[1903,1733],"b":[639,499],"fc":[354,142],"fe":[1052,889],"fs":[3,3],"ft":[4,3],"t":[54720,6098]}},"loc":{"cp":45.68,"data":{"s":[755,639,1],"b":[234,136,1],"fc":[211,61,1],"t":[208,23,1]}}},"15":{"st":"du","pa":0,"n":"work.add_bf16","l":"Verilog","sn":18,"one_inst":89,"loc":{"cp":71.38,"data":{"s":[85,83,1],"b":[24,22,1],"fc":[7,7,1],"fe":[23,0,1],"t":[528,357,1]}}},"14":{"st":"du","pa":0,"n":"work.adder_8b","l":"Verilog","sn":15,"loc":{"cp":64.46,"data":{"s":[7,7,1],"fe":[8,1,1],"t":[68,55,1]}}},"26":{"st":"du","pa":0,"n":"work.addsub_bf16","l":"Verilog","sn":24,"one_inst":163,"loc":{"cp":57.18,"data":{"s":[91,85,1],"b":[40,32,1],"fc":[33,11,1],"fe":[25,1,1],"t":[520,391,1]}}},"20":{"st":"du","pa":0,"n":"work.div","l":"Verilog","sn":22,"one_inst":95,"loc":{"cp":51.18,"data":{"s":[56,48,1],"b":[24,19,1],"fc":[17,6,1],"fe":[45,5,1],"t":[336,150,1]}}},"19":{"st":"du","pa":0,"n":"work.div_if","l":"SystemVerilog","sn":8,"one_inst":93,"loc":{"cp":46.15,"data":{"t":[104,48,1]}}},"13":{"st":"du","pa":0,"n":"work.fa","l":"Verilog","sn":14,"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[6,6,1],"t":[4,4,1]}}},"12":{"st":"du","pa":0,"n":"work.ha","l":"Verilog","sn":13,"loc":{"cp":100.00,"data":{"s":[2,2,1],"fe":[4,4,1],"t":[4,4,1]}}},"6":{"st":"du","pa":0,"n":"work.lane","l":"Verilog","sn":6,"one_inst":29,"loc":{"cp":80.87,"data":{"s":[173,172,1],"b":[39,38,1],"fc":[16,13,1],"fe":[41,32,1],"t":[1800,868,1]}}},"17":{"st":"du","pa":0,"n":"work.lane_fu_pt","l":"Verilog","sn":20,"loc":{"cp":76.14,"data":{"s":[9,8,1],"b":[6,6,1],"fe":[7,5,1],"t":[226,100,1]}}},"8":{"st":"du","pa":0,"n":"work.lane_sequencer","l":"Verilog","sn":4,"loc":{"cp":86.65,"data":{"s":[29,29,1],"b":[15,15,1],"t":[452,271,1]}}},"2":{"st":"du","pa":0,"n":"work.lane_tb","l":"Verilog","sn":2,"one_inst":27,"loc":{"cp":45.68,"data":{"s":[755,639,1],"b":[234,136,1],"fc":[211,61,1],"t":[208,23,1]}}},"16":{"st":"du","pa":0,"n":"work.left_shift","l":"Verilog","sn":19,"loc":{"cp":93.76,"data":{"s":[23,21,1],"b":[10,9,1],"t":[28,28,1]}}},"21":{"st":"du","pa":0,"n":"work.mant_div","l":"Verilog","sn":22,"one_inst":96,"loc":{"cp":28.23,"data":{"s":[27,18,1],"b":[11,5,1],"fc":[1,0,1],"t":[244,2,1]}}},"10":{"st":"du","pa":0,"n":"work.mul_bf16","l":"Verilog","sn":11,"loc":{"cp":76.34,"data":{"s":[22,22,1],"b":[16,15,1],"fc":[7,7,1],"fe":[2,0,1],"t":[200,176,1]}}},"23":{"st":"du","pa":0,"n":"work.mul_bf16_fu","l":"Verilog","sn":10,"one_inst":101,"loc":{"cp":86.37,"data":{"s":[19,19,1],"b":[15,15,1],"fc":[7,4,1],"fe":[2,2,1],"fs":[3,3,1],"ft":[4,3,1],"t":[138,100,1]}}},"22":{"st":"du","pa":0,"n":"work.mul_if","l":"SystemVerilog","sn":9,"one_inst":99,"loc":{"cp":70.19,"data":{"t":[104,73,1]}}},"9":{"st":"du","pa":0,"n":"work.sqrt_bf16","l":"Verilog","sn":17,"one_inst":32,"loc":{"cp":71.11,"data":{"s":[112,101,1],"b":[56,49,1],"fc":[28,17,1],"fe":[17,9,1],"t":[696,447,1]}}},"7":{"st":"du","pa":0,"n":"work.sqrt_if","l":"SystemVerilog","sn":7,"one_inst":30,"loc":{"cp":77.77,"data":{"t":[72,56,1]}}},"18":{"st":"du","pa":0,"n":"work.sync_fifo","l":"Verilog","sn":21,"loc":{"cp":75.86,"data":{"s":[10,10,1],"b":[8,8,1],"fc":[4,2,1],"fe":[2,1,1],"t":[58,46,1]}}},"25":{"st":"du","pa":0,"n":"work.valu","l":"Verilog","sn":23,"one_inst":162,"loc":{"cp":70.65,"data":{"s":[47,44,1],"b":[28,22,1],"fc":[4,4,1],"fe":[11,2,1],"t":[326,205,1]}}},"24":{"st":"du","pa":0,"n":"work.valu_if","l":"SystemVerilog","sn":16,"one_inst":160,"loc":{"cp":62.96,"data":{"t":[108,68,1]}}},"3":{"st":"du","pa":0,"n":"work.vector_if","l":"SystemVerilog","sn":3,"one_inst":28,"loc":{"cp":1.07,"data":{"t":[44992,483,1]}}},"11":{"st":"du","pa":0,"n":"work.wallacetree_8b","l":"Verilog","sn":12,"loc":{"cp":99.78,"data":{"s":[15,15,1],"fe":[128,128,1],"t":[310,308,1]}}}}; +processSummaryData(g_data); \ No newline at end of file diff --git a/covhtmlreport/fsm.html b/covhtmlreport/fsm.html new file mode 100644 index 000000000..284e875ec --- /dev/null +++ b/covhtmlreport/fsm.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/global.js b/covhtmlreport/global.js new file mode 100644 index 000000000..9a9155403 --- /dev/null +++ b/covhtmlreport/global.js @@ -0,0 +1 @@ +var g_oCONST = {"prod":"Questa","prodlink":"http://www.mentor.com/products/fv/index.cfm","version":"2021.4","time":"Tue 09 Dec 2025 03:10:32 AM EST","lthres":50.000000,"hthres":90.000000,"assert_n_files":0,"direct_n_files":0,"cvg_n_files":0,"max_n_crossbins":1073741824,"tpExist":0,"trExist":0,"PA":0,"PACombined":0,"CrossBinsCompactView":1,"is_formal_report":0,"TestPlanHtmlReport":0,"instlinkSize":4562,"dulinkSize":714,"command":"coverage","commandargs":["-html","-output","covhtmlreport","-details","-assert","-directive","-cvg","-code","bcefst","-verbose","-threshL","50","-threshH","90"],"exclReason":{"E":"None","ERS":"RHS Static","ECP":"Constant Propagation","ESP":"Signal Propagation","EBCS":"Branch Condition Static","EES":"Expression Static","ECNT":"Constant Reg","ESIG":"if gen Inactive","ESFG":"for gen Inactive","EUR":"Unreferenced","ECOP":"CLKopt","EA":"is Assert","ECG":"is Covergroup","EEXP":"Expanded","ERED":"Reduced","EMRG":"Merged","ECTP":"Convert to proc","ETX":"Transformed","EGCA":"Gate to ca","EUCA":"udp to ca","ECOL":"coalesced","EINL":"Inlined","EINT":"Internal","ERR":"Error","ESCG":"Case gen Inactive","EOTH":"Other","EU":"Unreachable","MULT":"Multiple"}}; diff --git a/covhtmlreport/icons/collapse-all.png b/covhtmlreport/icons/collapse-all.png new file mode 100644 index 000000000..9a2f527da Binary files /dev/null and b/covhtmlreport/icons/collapse-all.png differ diff --git a/covhtmlreport/icons/cp.png b/covhtmlreport/icons/cp.png new file mode 100644 index 000000000..c22966494 Binary files /dev/null and b/covhtmlreport/icons/cp.png differ diff --git a/covhtmlreport/icons/echeck.png b/covhtmlreport/icons/echeck.png new file mode 100644 index 000000000..de063cd2a Binary files /dev/null and b/covhtmlreport/icons/echeck.png differ diff --git a/covhtmlreport/icons/echeckcomment.png b/covhtmlreport/icons/echeckcomment.png new file mode 100644 index 000000000..40ac8f5ed Binary files /dev/null and b/covhtmlreport/icons/echeckcomment.png differ diff --git a/covhtmlreport/icons/ecomment.png b/covhtmlreport/icons/ecomment.png new file mode 100644 index 000000000..cef4c671c Binary files /dev/null and b/covhtmlreport/icons/ecomment.png differ diff --git a/covhtmlreport/icons/exclude-comment.png b/covhtmlreport/icons/exclude-comment.png new file mode 100644 index 000000000..c24d9f05b Binary files /dev/null and b/covhtmlreport/icons/exclude-comment.png differ diff --git a/covhtmlreport/icons/exclude.png b/covhtmlreport/icons/exclude.png new file mode 100644 index 000000000..e89328c74 Binary files /dev/null and b/covhtmlreport/icons/exclude.png differ diff --git a/covhtmlreport/icons/exclude2.png b/covhtmlreport/icons/exclude2.png new file mode 100644 index 000000000..68d1e6cd6 Binary files /dev/null and b/covhtmlreport/icons/exclude2.png differ diff --git a/covhtmlreport/icons/expand-all.png b/covhtmlreport/icons/expand-all.png new file mode 100644 index 000000000..4b6405ae8 Binary files /dev/null and b/covhtmlreport/icons/expand-all.png differ diff --git a/covhtmlreport/icons/gi.png b/covhtmlreport/icons/gi.png new file mode 100644 index 000000000..b24627309 Binary files /dev/null and b/covhtmlreport/icons/gi.png differ diff --git a/covhtmlreport/icons/modelsim.png b/covhtmlreport/icons/modelsim.png new file mode 100644 index 000000000..d4966f172 Binary files /dev/null and b/covhtmlreport/icons/modelsim.png differ diff --git a/covhtmlreport/icons/questa.png b/covhtmlreport/icons/questa.png new file mode 100644 index 000000000..a040f781c Binary files /dev/null and b/covhtmlreport/icons/questa.png differ diff --git a/covhtmlreport/icons/questa.svg b/covhtmlreport/icons/questa.svg new file mode 100644 index 000000000..ef850563d --- /dev/null +++ b/covhtmlreport/icons/questa.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/covhtmlreport/index.html b/covhtmlreport/index.html new file mode 100644 index 000000000..e4e741d75 --- /dev/null +++ b/covhtmlreport/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <body onload="setTimeout('redirect()', 5000);"> + <h1>Your browser does not support frames!</h1> + <p> + This report works best when viewed in a browser which supports frames. If you have any questions, please + contact Mentor Customer Support.</p> + </body> + + + \ No newline at end of file diff --git a/covhtmlreport/menu.html b/covhtmlreport/menu.html new file mode 100644 index 000000000..fdb0c9b2b --- /dev/null +++ b/covhtmlreport/menu.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/covhtmlreport/scripts/assertionsDirectives.js b/covhtmlreport/scripts/assertionsDirectives.js new file mode 100644 index 000000000..53978b9f4 --- /dev/null +++ b/covhtmlreport/scripts/assertionsDirectives.js @@ -0,0 +1,444 @@ +/* global $, document, getPageTemplate, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, updateProgressBarLoader, loadJsonFile, updateUrlHash, hitsRenderer, headerTemplate, urlParams, pageName, queryUrlParamsByPrefix, isValueExcluded */ +/* exported processScopesDbFile, processSummaryData, processAssertionsData, processDirectivesData, processStatementsData, updateUrlParams */ + +'use strict'; + +var startDate; +var dataObj = {}; +var covType; +var isPA; +var columnDefs; +var pageSize = 25; +var gridOptions; +var isAssertDebugEnabled = false; + +var consolidatedView; +var consolidatedViewType; +var totalJsonFilesCount = 1; +var jsonFilesCount = 1; +var isDataLoaded = false; +var isAllDataLoaded = false; +var pageUrl; +var CovTypeUrlParams; + +var ASSERTIONS_ASSERTS = { + FAILURE_COUNT: 0, + PASS_COUNT: 1, + VACUOUS_COUNT: 2, + DISABLED_COUNT: 3, + ATTEMPT_COUNT: 4, + ACTIVE_COUNT: 5, + PEAK_ACTIVE_COUNT: 6, + ASSERT_DEBUG: 'ad' +}; + +var TYPE = { + DU: 0, + INSTANCE: 1, + BOTH: 2 +}; + +var PREFIX = { + ASSERTIONS: 'a', + DIRECTIVES: 'd' +}; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + isPA = (urlParams.hasOwnProperty('pc') && urlParams.pc); + covType = (urlParams.t == PREFIX.ASSERTIONS) ? isPA ? 'Power Aware Checks' : 'Assertions' : 'Directives'; + pageUrl = pageName[urlParams.t]; + + // update url hash + updateUrlHash(); + + if ((consolidatedView = !urlParams.hasOwnProperty('s'))) { + consolidatedViewType = (urlParams.type === 'inst') ? TYPE.INSTANCE : TYPE.DU; + var fieldName = (urlParams.t == PREFIX.ASSERTIONS) ? 'assert_n_files' : (urlParams.t == PREFIX.DIRECTIVES) ? 'direct_n_files' : undefined; + if (fieldName && GLOBAL_JSON.hasOwnProperty(fieldName)) { + totalJsonFilesCount = GLOBAL_JSON[fieldName]; + } + } + + CovTypeUrlParams = queryUrlParamsByPrefix(urlParams, urlParams.t, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + // load json files + loadJsonFile(urlParams.t + (consolidatedView ? '1' : urlParams.f)); +}); + +function processAssertionsData(g_data) { processAssertionsDirectives(g_data); } +function processDirectivesData(g_data) { processAssertionsDirectives(g_data); } + +function processAssertionsDirectives(g_data) { + var instanceName; + + if (consolidatedView) { + $.extend(dataObj, g_data); + + isDataLoaded = (jsonFilesCount == 1); + isAllDataLoaded = ( totalJsonFilesCount == 1 || jsonFilesCount == totalJsonFilesCount); + + // ++jsonFilesCount; + if (jsonFilesCount < totalJsonFilesCount) { + loadJsonFile(urlParams.t + (++jsonFilesCount)); + } + + if (!(isDataLoaded && isAllDataLoaded)) { + updateProgressBarLoader((jsonFilesCount / totalJsonFilesCount * 100), '#progress-bar-loading'); + } + } else { + dataObj[urlParams.s] = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + var keyTomerge = urlParams.t == PREFIX.ASSERTIONS ? ((urlParams.hasOwnProperty('pc') && urlParams.pc ) ? 'pc' : 'asserts') : 'direct'; + var objectToMerge ; + objectToMerge = g_data[urlParams.s + '_sub'][keyTomerge] ? g_data[urlParams.s + '_sub'][keyTomerge] : []; // Add empty array in case of Fsub doesn't have asserts or directs or pc + dataObj[urlParams.s][keyTomerge] = dataObj[urlParams.s][keyTomerge] ? dataObj[urlParams.s][keyTomerge] : []; // Add empty array in case of DataObject doesn't have asserts or directs or pc + $.merge(dataObj[urlParams.s][keyTomerge], objectToMerge); + } + } + instanceName = (urlParams.hasOwnProperty('type') && urlParams.hasOwnProperty('pr') && urlParams.type === 'du') ? urlParams.pr : dataObj[urlParams.s].pr; + isDataLoaded = true; + } + + if (isDataLoaded) { + topPageDescription(instanceName); + var gridData = getRowData(dataObj); + + // initialize dataGrid data + initializeData(); + + var panelBodyId = createPanel('#page-body', covType + ' Coverage', urlParams.cp); + $('#' + panelBodyId).append('
'); + + gridOptions = createDataGridInstance(panelBodyId + 'Grid', columnDefs, gridData, { + pageSize: pageSize, + isTree: false, + urlParams: CovTypeUrlParams + }); + + if (consolidatedView && !isAllDataLoaded) { + $('.progress-bar-loader').css('display', 'initial'); + updateProgressBarLoader((jsonFilesCount / totalJsonFilesCount * 100), '#progress-bar-loading'); + } + } + + if (consolidatedView && isAllDataLoaded) { + gridOptions.api.setRowData(getRowData(dataObj)); + $('.progress-bar-loader').css('display', 'none'); + } + + if (urlParams.hasOwnProperty('p')) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' ' + covType + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getRowData(data) { + var rowData = []; + + switch (urlParams.t) { + case PREFIX.ASSERTIONS: + Object.keys(data).forEach(function(id) { + //check the Key && Extra condition for the viewcov mode to remove the istance data in case of navigation by DU + if (data.hasOwnProperty(id) && !( dataObj[id].ty == 2 && GLOBAL_JSON.command === 'coverage' && urlParams.type === 'du')) { + if (data[id].hasOwnProperty(ASSERTIONS_ASSERTS.ASSERT_DEBUG) && data[id].ad) { + isAssertDebugEnabled = true; + } + + if (!consolidatedView || (consolidatedView && (data[id].ty == consolidatedViewType || data[id].ty == TYPE.BOTH))) { + var dataArray = urlParams.hasOwnProperty('pc') && urlParams.pc ? (data[id].pc || []) : (data[id].asserts || []); + dataArray.forEach(function(assert) { + var currentRowData = { + name: (consolidatedView) ? (((data[id].ty == TYPE.BOTH) ? ((consolidatedViewType == TYPE.INSTANCE) ? data[id].pr : data[id].dun) : (data[id].pr)) + ( consolidatedViewType == TYPE.INSTANCE ? '/' : '::') + assert.n[0]) : assert.n[0], + f: assert.n.length == 3 ? assert.n[1]: undefined, + l: assert.n.length == 3 ? assert.n[2]: undefined, + fc: assert.h[ASSERTIONS_ASSERTS.FAILURE_COUNT], + pc: assert.h[ASSERTIONS_ASSERTS.PASS_COUNT], + exc: (assert.hasOwnProperty('ec')) ? assert.ec : undefined, + }; + + if (assert.hasOwnProperty('pth')) { + currentRowData.phitf = assert.pth[0]; + currentRowData.phits = assert.pth[1]; + } + + if (assert.hasOwnProperty('fth')) { + currentRowData.fhitf = assert.fth[0]; + currentRowData.fhits = assert.fth[1]; + } + + if (data[id].hasOwnProperty('ad') && data[id].ad) { + currentRowData.vc = assert.h[ASSERTIONS_ASSERTS.VACUOUS_COUNT]; + currentRowData.dc = assert.h[ASSERTIONS_ASSERTS.DISABLED_COUNT]; + currentRowData.ac = assert.h[ASSERTIONS_ASSERTS.ATTEMPT_COUNT]; + currentRowData.avc = assert.h[ASSERTIONS_ASSERTS.ACTIVE_COUNT]; + currentRowData.pavc = assert.h[ASSERTIONS_ASSERTS.PEAK_ACTIVE_COUNT]; + } + + currentRowData.status = (assert.h[ASSERTIONS_ASSERTS.FAILURE_COUNT] == 0) ? ((assert.h[ASSERTIONS_ASSERTS.PASS_COUNT] == 0) ? 'Zero' : 'Covered') : 'Failed'; + + rowData.push(currentRowData); + }); + } + } + }); + break; + case PREFIX.DIRECTIVES: + Object.keys(data).forEach(function(id) { + //check the Key && Extra condition for the viewcov mode to remove the istance data in case of navigation by DU + if (data.hasOwnProperty(id) && !( dataObj[id].ty == 2 && GLOBAL_JSON.command === 'coverage' && urlParams.type === 'du')) { + if (!consolidatedView || (consolidatedView && (data[id].ty == consolidatedViewType || data[id].ty == TYPE.BOTH))) { + data[id].direct.forEach(function(direct) { + rowData.push({ + name: (consolidatedView) ? (((data[id].ty == TYPE.BOTH) ? ((consolidatedViewType == TYPE.INSTANCE) ? data[id].pr : data[id].dun) : (data[id].pr)) + ( consolidatedViewType == TYPE.INSTANCE ? '/' : '::') + direct.n[0]) : direct.n[0], + f: direct.n.length == 3 ? direct.n[1]: undefined, + l: direct.n.length == 3 ? direct.n[2]: undefined, + hits: direct.h, + thitf: (direct.hasOwnProperty('pth')) ? direct.pth[0] : undefined, + thits: (direct.hasOwnProperty('pth')) ? direct.pth[1] : undefined, + c: (direct.hasOwnProperty('ec')) ? direct.ec : undefined, + exc: (direct.hasOwnProperty('c')) ? direct.c : undefined, + }); + }); + } + } + }); + break; + } + + return rowData; +} + +function initializeData() { + switch (urlParams.t) { + case PREFIX.ASSERTIONS: + columnDefs = [ + { + headerName: covType, + headerTooltip: covType, + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + sort: 'asc', + minWidth: 300, + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + }, + cellRenderer: function(params) { + if (params.data && params.data.l && params.data.f) { // Source Exists + return '' + params.value+ '' + } else return params.value; + } + }, + { + headerName: 'Failure Count', + headerTooltip: 'Failure Count', + field: 'fc', + tooltipField: 'fc', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'fhitf', scope: 'fhits'}); + } + }, + { + headerName: 'Pass Count', + headerTooltip: 'Pass Count', + field: 'pc', + tooltipField: 'pc', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellClassRules: { + 'exclusion': function (params) { + return (isValueExcluded(params) && params.data.pc !== '-'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'phitf', scope: 'phits'}); + } + } + ]; + + if (isAssertDebugEnabled) { + columnDefs.push( + { + headerName: 'Attempt Count', + headerTooltip: 'Attempt Count', + field: 'ac', + tooltipField: 'ac', + filter: 'number', + colId: 'ac', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function(params) { + return (typeof params.value !== 'undefined') ? params.value : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + } + }, + { + headerName: 'Vacuous Count', + headerTooltip: 'Vacuous Count', + field: 'vc', + tooltipField: 'vc', + filter: 'number', + colId: 'vc', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function(params) { + return (typeof params.value !== 'undefined') ? params.value : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + } + }, + { + headerName: 'Disabled Count', + headerTooltip: 'Disabled Count', + field: 'dc', + tooltipField: 'dc', + filter: 'number', + colId: 'dc', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function(params) { + return (typeof params.value !== 'undefined') ? params.value : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + } + }, + { + headerName: 'Active Count', + headerTooltip: 'Active Count', + field: 'avc', + tooltipField: 'avc', + filter: 'number', + colId: 'avc', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function(params) { + return (typeof params.value !== 'undefined') ? params.value : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + } + }, + { + headerName: 'Peak Active Count', + headerTooltip: 'Peak Active Count', + field: 'pavc', + tooltipField: 'pavc', + filter: 'number', + colId: 'pavc', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function(params) { + return (typeof params.value !== 'undefined') ? params.value : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.pc === 'string' && params.data.pc !== '-'); + }, + } + } + ); + } + + // columnDefs.push( + // { + // headerName: 'Status', + // headerTooltip: 'Status', + // field: 'status', + // filter: 'text', + // colId: 'status', + // minWidth: 120, width: 120, maxWidth: 120 + // } + // ); + break; + case PREFIX.DIRECTIVES: + columnDefs = [ + { + headerName: covType, + headerTooltip: covType, + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + sort: 'asc', + minWidth: 300, + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + if (params.data && params.data.l && params.data.f) { // Source Exists + return '' + params.value+ '' + } else return params.value; + } + }, + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits'}); + } + } + ]; + break; + } +} diff --git a/covhtmlreport/scripts/blockCoverage.js b/covhtmlreport/scripts/blockCoverage.js new file mode 100644 index 000000000..6b8355df7 --- /dev/null +++ b/covhtmlreport/scripts/blockCoverage.js @@ -0,0 +1,734 @@ +/* global $, document, console, getPageTemplate, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, loadJsonFile, createCodeMirrorInstance, updateUrlHash, addHitsGutters, addMarkers, getFileName, hitsRenderer, getFileExt, jumpToLine, headerTemplate, urlParams, pageName, queryUrlParamsByPrefix */ +/* exported processScopesDbFile, processSummaryData, processAssertionsData, processDirectivesData, processStatementsData, processSrcData, processSrcNamesData, helpModal */ + +'use strict'; + +var startDate; +var dataObj = {}; +var columnDefs; +var pageSize = 25; + +var srcData = []; +var editor = []; +var gridInstances = []; +var sourceMapData; +var tabId; +var sourceNumber; +var blUrlParams; + +var latestScrollPosition = []; +var renderedLines = {}; +var covId = 0; +var itemId = 0; +var uniqueId; + +var SRC = { + NAME: 'name', + LANG: 'lang', + CODE: 'src', +}; + +var BLOCKS_SRC = { + SRC_NO: 'n', + NAME: 'f', + MAX_ITEMS: 'mi', + LINENO: 'l', + LINEENDNO: 'end', + ITEM_NO: 'l', + ITEMS_INFO: 'i', + ITEM_HITS: 'h', + ITEM_INDEX: 'in', + GEN_BLK: 'gi', + CLASS_PARAM: 'cp', + ITEM_START: 's', + ITEM_LENGTH: 'l', + ITEM_EXC_COMMENT: 'ec', + THIT: 'th', + THIT_FILE_NUM: 0, + THIT_SCOPE: 1 +}; + +var PREFIX = { + bl: 'bl' +}; + +var pageUrl = pageName.bl; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + // load json file + loadJsonFile('srcn'); +}); + +function processSrcNamesData(g_data) { + sourceMapData = g_data; + loadJsonFile('bl' + urlParams.f); +} + +function processBlocksData(g_data) { + var panelBodyId; + var sourceFileFound = 0; + + dataObj = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj.bl, g_data[urlParams.s + '_sub'].bl); + + dataObj.bl = dataObj.bl.reduce(function(o, cur) { + var occurs = o.reduce(function(n, item, i) { + return (item.f === cur.f) ? i : n; + }, -1); + if (occurs >= 0) { + o[occurs].cov = o[occurs].cov.concat(cur.cov); + } else { + var obj = {f: cur.f, cov: cur.cov, mi: cur.mi}; + o = o.concat([obj]); + } + return o; + }, []); + } + } + + topPageDescription(urlParams.pr || dataObj.pr); + + dataObj.bl.some(function(stmt) { + return (sourceFileFound = stmt.hasOwnProperty(BLOCKS_SRC.SRC_NO)); + }); + + if (sourceFileFound) { + processSrcEditorData(); + } else { + // initialize dataGrid data + initializeData(); + + panelBodyId = createPanel('#page-body', 'Block Coverage', urlParams.cp); + $('#' + panelBodyId).append('
'); + + blUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.bl, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid', columnDefs, getRowData(dataObj.bl), { + urlParams: blUrlParams + }); + + printPerformanceNumbers(); + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Block ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getRowData(data) { + var rowData = []; + + data.forEach(function(file) { + var row = { + name: sourceMapData[file[BLOCKS_SRC.NAME]], + group: true, + children: [] + }; + + file.cov.forEach(function(stmt) { + stmt[BLOCKS_SRC.ITEMS_INFO].forEach(function(item) { + var currentRowData = { + line: stmt[BLOCKS_SRC.LINENO], + endline: stmt[BLOCKS_SRC.LINEENDNO], + fileName: row.name, + //item: (item.hasOwnProperty(BLOCKS_SRC.GEN_BLK) ? (item[BLOCKS_SRC.GEN_BLK] + ' ') : '') + item[BLOCKS_SRC.ITEM_INDEX], + item: (item.hasOwnProperty(BLOCKS_SRC.CLASS_PARAM) ? (item[BLOCKS_SRC.CLASS_PARAM] + ' ') : '') + item[BLOCKS_SRC.ITEM_INDEX], + genblk: (item.hasOwnProperty(BLOCKS_SRC.GEN_BLK) ? (item[BLOCKS_SRC.GEN_BLK] + ' ') : ''), + hits: item[BLOCKS_SRC.ITEM_HITS], + thitf: (item.hasOwnProperty(BLOCKS_SRC.THIT)) ? item[BLOCKS_SRC.THIT][BLOCKS_SRC.THIT_FILE_NUM] : undefined, + thits: (item.hasOwnProperty(BLOCKS_SRC.THIT)) ? item[BLOCKS_SRC.THIT][BLOCKS_SRC.THIT_SCOPE] : undefined, + c: item[BLOCKS_SRC.ITEM_EXC_COMMENT], + nameSt: sourceMapData[file[BLOCKS_SRC.NAME]] + ' [L: ' + stmt[BLOCKS_SRC.LINENO] + ', Item: ' + item[BLOCKS_SRC.ITEM_INDEX] + ']' + }; + + row.children.push(currentRowData); + }); + }); + + rowData.push(row); + }); + + return rowData; +} + +function processSrcEditorData() { + + $('#page-body').append(getSourceCodeTemplate()); + if (dataObj.bl.length === 1) { + tabId = 0; + for (var h = 1; h <= (dataObj.bl[tabId][BLOCKS_SRC.MAX_ITEMS] > GLOBAL_JSON.maxNumberOfGutters ? GLOBAL_JSON.maxNumberOfGutters :dataObj.bl[tabId][BLOCKS_SRC.MAX_ITEMS] ); h++) { + $('.hits' + tabId + '').append('
Item' + h + '
'); + } + $('.lineN' + tabId + '').css({'height': '46px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'font-size': '15px', 'float': 'left', 'font-weight': 'bold'}); + $('.hits' + tabId + '').css({'height': '23px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'margin-bottom': '10px', 'font-size': '15px', 'float': 'left', 'text-align': 'center'}); + var tabData = dataObj.bl[tabId]; + sourceNumber = tabData[BLOCKS_SRC.SRC_NO]; + if (srcData[sourceNumber] == undefined) { + loadJsonFile('src' + sourceNumber); + } else { + constructSrcData(tabId, sourceNumber); + } + } else { + $('#source-tabs li a').on('click', function (e) { + e.preventDefault(); + covId = 0; + var pane = $(this); + var prevTabId = tabId; + tabId = this.hash.replace('#editor-tab', ''); + var tabData = dataObj.bl[tabId]; + + if (tabData.hasOwnProperty(BLOCKS_SRC.SRC_NO)) { + sourceNumber = tabData[BLOCKS_SRC.SRC_NO]; + $('.srcMenu' + prevTabId + '').css('display', 'none'); + if (editor[sourceNumber] == undefined) { + + $('#tabs-body').append( + '' + + '
' + + '
' + + '
' + ); + + for (var h = 1; h <= (dataObj.bl[tabId][BLOCKS_SRC.MAX_ITEMS] > GLOBAL_JSON.maxNumberOfGutters ? GLOBAL_JSON.maxNumberOfGutters : dataObj.bl[tabId][BLOCKS_SRC.MAX_ITEMS]); h++) { + $('.hits' + tabId + '').append('
Item' + h + '
'); + } + $('.lineN' + tabId + '').css({'height': '46px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'font-size': '15px', 'float': 'left', 'font-weight': 'bold'}); + $('.hits' + tabId + '').css({'height': '23px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'margin-bottom': '10px', 'font-size': '15px', 'float': 'left', 'text-align': 'center'}); + + if (srcData[sourceNumber] == undefined) { + loadJsonFile('src' + sourceNumber); + } else { + constructSrcData(tabId, sourceNumber); + } + } + $('.srcMenu' + tabId + '').css('display', 'block'); + } else { + if (gridInstances[tabId] == undefined) { + if (columnDefs == undefined) { + // initialize dataGrid data + initializeData(); + } + + $('#tabs-body').append( + '
' + + '
' + + '
' + ); + + $('#editor-body' + tabId).append(); + gridInstances[tabId] = createDataGridInstance('grid' + tabId, columnDefs, getRowData([tabData]), { + pageSize: pageSize + }); + } + } + + pane.tab('show'); + }); + } + + + $('#tab-anchor0').trigger('click'); +} + +function getSourceCodeTemplate() { + var template; + var tabHeaderTemplate = ''; + var file; + var fileName; + + if (dataObj.bl.length === 1) { + //var gutterWidth = 60.5*dataObj.bl[0][BLOCKS_SRC.MAX_ITEMS]; + file = dataObj.bl[0]; + fileName = (file.hasOwnProperty(BLOCKS_SRC.SRC_NO)) ? sourceMapData[file[BLOCKS_SRC.SRC_NO]] : sourceMapData[file[BLOCKS_SRC.NAME]]; + + template = + '
' + + '
Ln#
' + + '
Hits' + + '
' + + '
' + + '' + + ' Filename:
' + + '' + + fileName + + '' + + '
' + + '' + + '' + + '' + + '
' + + '
' ; + } else { + for (var i = 0; i < dataObj.bl.length; i++) { + file = dataObj.bl[i]; + fileName = (file.hasOwnProperty(BLOCKS_SRC.SRC_NO)) ? sourceMapData[file[BLOCKS_SRC.SRC_NO]] : sourceMapData[file[BLOCKS_SRC.NAME]]; + + tabHeaderTemplate += + '
  • ' + + '' + + '' + + ' ' + + ' ' + + getFileExt(fileName) + + '' + + '' + + '' + + '  ' + getFileName(fileName) + + '' + + '' + + '
  • '; + } + template = + '
    ' + + '' + + '
    ' + + '
    ' + + '
    '; + } + return template; +} + +function helpModal() { + var id = 'help-modal'; + $('#help').remove(); + $('body').append(getHelpTemplate(id, 'Help')); + constructHelpData(id); + $('#' + id).modal(); +} +function getHelpTemplate(id, title) { + var template; + template = + '
    ' + + ''; + return template; +} + +function constructHelpData(id) { + $('#' + id + 'Shortcuts').append(getHelpDataTemplate('shortcuts')); + $('#' + id + 'icons').append(getHelpDataTemplate('icons')); +} +function getHelpDataTemplate(tempId) { + var templates = { + 'shortcuts': + '

    Search

    ' + + '
    ' + + '
    findCtrl-F (PC), Cmd-F (Mac)
    ' + + '
    findNextCtrl-G (PC), Cmd-G (Mac)
    ' + + '
    findPrevShift-Ctrl-G (PC), Shift-Cmd-G (Mac)
    ' + + '
    ' + + 'There are two modes of search: Search by string and Search Text with Regular Expressions.' + + '

    ' + + 'Regex Search Example:' + + '

    ' + + '
    /^.*\\b(reg|input|logic)\\b.*$/: Finding Lines Containing reg or input or logic keywords
    ' + + '

    Navigation

    ' + + '
    selectAllCtrl-A (PC), Cmd-A (Mac)
    ' + + '
    Select the whole content of the editor.
    ' + + '
    singleSelectionEsc
    ' + + '
    When multiple selections are present, this deselects all but the primary selection.
    ' + + '
    undoSelectionCtrl-U (PC), Cmd-U (Mac)
    ' + + '
    Undo the last change to the selection, or if there are no selection-only changes at the top of the history, undo the lastchange.
    ' + + '
    redoSelectionAlt-U (PC), Shift-Cmd-U (Mac)
    ' + + '
    Redo the last change to the selection, or the last text change if no selection changes remain.
    ' + + '
    goDocStartCtrl-Home (PC), Cmd-Up (Mac), Cmd-Home (Mac)
    ' + + '
    Move the cursor to the start of the document.
    ' + + '
    goDocEndCtrl-End (PC), Cmd-End (Mac), Cmd-Down (Mac)
    ' + + '
    Move the cursor to the end of the document.
    ' + + '
    goPageUpPageUp, Shift-Ctrl-V (Mac)
    ' + + '
    Move the cursor up one screen, and scroll up by the same distance.
    ' + + '
    goPageDownPageDown, Ctrl-V (Mac)
    ' + + '
    Move the cursor down one screen, and scroll down by the same distance.
    ' + + '
    ', + + + 'icons': + + /*'

    Icons

    ' +*/ + '' + + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    EExcluded
    EExcluded and Hit
    EExcluded with Comment
    EExcluded and Hit with Comment
    Test Hit Data
    ' + }; + + return templates[tempId]; +} +function processSrcData(g_data) { + var srcNumber = sourceNumber; + var tabIndex = tabId; + + srcData[srcNumber] = g_data; + constructSrcData(tabIndex, srcNumber); +} + +function constructSrcData(tabId, srcNumber) { + var data = srcData[srcNumber]; + + + + editor[srcNumber] = createCodeMirrorInstance('#editor' + tabId, tabId, dataObj.bl[tabId][BLOCKS_SRC.MAX_ITEMS], { + mode: data[SRC.LANG], + code: '' + }); + + editor[srcNumber].setSize(null, 'calc(100vh - 205px)'); + editor[srcNumber].getDoc().setValue(data[SRC.CODE]); + editor[srcNumber].on('scroll', function() { + var scrollPosition = editor[srcNumber].getViewport(); + if (!latestScrollPosition[srcNumber] || latestScrollPosition[srcNumber].from !== scrollPosition.from && latestScrollPosition[srcNumber].to !== scrollPosition.to ) { + latestScrollPosition[srcNumber] = scrollPosition; + highlightViewPort(latestScrollPosition[srcNumber], srcNumber, tabId); + } + + }); + + + var lineNWidth = $('.CodeMirror-gutter.CodeMirror-linenumbers').width(); + $('.lineN' + tabId + '').css({'width': lineNWidth}); + var gutterWidth = $('.CodeMirror-gutter.codemirror-gut1').width() * dataObj.bl[0][BLOCKS_SRC.MAX_ITEMS]; + var fileWidth = 'calc(100% - ' + gutterWidth + 'px - ' + lineNWidth + 'px - 4px)'; + $('.file').css({'width': (fileWidth)}); + + + // jump to first statement in DU + jumpToLine(editor[srcNumber], dataObj.bl[tabId].cov[0][BLOCKS_SRC.LINENO] - 1); + + // In case of small file and the first staement is in the beginging of the file we will trigger the scroll event manually + var scrollPosition = editor[srcNumber].getViewport(); + if (scrollPosition.from === 0 ) { + highlightViewPort({ from: 0, to: 50}, srcNumber, tabId); + } +} + + +// highlightViewPort +function highlightViewPort(event, srcNumber, tabId) { + + var timeout = setTimeout(function () { + clearTimeout(timeout); + var lineNo; + var endLineNo; + var itemN; + var markers = []; + + dataObj.bl[tabId].cov.forEach(function (cov) { + itemId = 0; + lineNo = cov[BLOCKS_SRC.LINENO]; + endLineNo = cov[BLOCKS_SRC.LINEENDNO]; + if (!renderedLines[srcNumber]) { + renderedLines[srcNumber] = {}; + } + if (lineNo >= event.from && lineNo <= event.to && !renderedLines[srcNumber][lineNo]) { + + renderedLines[srcNumber][lineNo] = true; + cov[BLOCKS_SRC.ITEMS_INFO] = getItemInfo(cov[BLOCKS_SRC.ITEMS_INFO]); + cov[BLOCKS_SRC.ITEMS_INFO].forEach(function (item) { + uniqueId = tabId + ',' + covId + ',' + itemId; + itemN = item[BLOCKS_SRC.ITEM_INDEX]; + if (itemN > GLOBAL_JSON.maxNumberOfGutters) { + addHitsLastGutter(editor[srcNumber], lineNo - 1 , cov[BLOCKS_SRC.ITEMS_INFO] ); + } + else { + for (let index = lineNo; index <= endLineNo; index++) { + addHitsGutters(editor[srcNumber], index - 1, itemN, item[BLOCKS_SRC.ITEM_HITS], uniqueId, item[BLOCKS_SRC.ITEM_EXC_COMMENT], item[BLOCKS_SRC.THIT] , (index - lineNo + 1), (endLineNo - lineNo + 1) ); + addMarkers(editor[srcNumber], markers, index - 1, item[BLOCKS_SRC.ITEM_START], index, (item[BLOCKS_SRC.ITEM_START]) + (item[BLOCKS_SRC.ITEM_LENGTH]), item[BLOCKS_SRC.ITEM_LENGTH], 0); + } + } + itemN++; + itemId++; + }); + + covId++; + } + }); + }, 100); +} + +function getItemInfo(itemsInfo) { + var newItemsInfo = []; + var uniqueItemsFlags = {}; + + itemsInfo.forEach(function(item) { + if (!uniqueItemsFlags.hasOwnProperty(item[BLOCKS_SRC.ITEM_INDEX])) { + uniqueItemsFlags[item[BLOCKS_SRC.ITEM_INDEX]] = true; + } + }); + + var uniqueItems = Object.keys(uniqueItemsFlags); + + uniqueItems.forEach(function(item) { + var filteredItems = itemsInfo.filter(function(obj) { + return obj[BLOCKS_SRC.ITEM_INDEX] === Number(item); + }); + + if (filteredItems && filteredItems.length > 0) { + var newItem = {}; + newItem[BLOCKS_SRC.ITEM_INDEX] = item; + if (filteredItems[0].hasOwnProperty(BLOCKS_SRC.ITEM_EXC_COMMENT)) { + newItem[BLOCKS_SRC.ITEM_EXC_COMMENT] = filteredItems[0][BLOCKS_SRC.ITEM_EXC_COMMENT]; + } + if (filteredItems[0].hasOwnProperty(BLOCKS_SRC.THIT)) { + newItem[BLOCKS_SRC.THIT] = filteredItems[0][BLOCKS_SRC.THIT]; + } + + if (filteredItems.length == 1 && !filteredItems[0].hasOwnProperty(BLOCKS_SRC.GEN_BLK)) { + newItem[BLOCKS_SRC.ITEM_HITS] = filteredItems[0][BLOCKS_SRC.ITEM_HITS]; + }else if (filteredItems.length == 1 && !filteredItems[0].hasOwnProperty(BLOCKS_SRC.CLASS_PARAM)) { + newItem[BLOCKS_SRC.ITEM_HITS] = filteredItems[0][BLOCKS_SRC.ITEM_HITS]; + } else { + newItem[BLOCKS_SRC.ITEM_HITS] = []; + + Object.keys(filteredItems).forEach(function(filteredItem) { + newItem[BLOCKS_SRC.ITEM_HITS].push({ + 'h': filteredItems[filteredItem][BLOCKS_SRC.ITEM_HITS], + 'gi': filteredItems[filteredItem][BLOCKS_SRC.GEN_BLK], + 'cp': filteredItems[filteredItem][BLOCKS_SRC.CLASS_PARAM] + }); + }); + } + + newItemsInfo.push(newItem); + } + }); + + return newItemsInfo; +} +function printPerformanceNumbers() { + if (urlParams.hasOwnProperty('p')) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function initializeData() { + columnDefs = [ + { + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + headerName: 'Source File', + headerTooltip: '', + suppressHideColumn: true, + suppressMovable: true, + suppressFilter: true, + suppressSorting: true, + minWidth: 1, width: 1, maxWidth: 1, + cellStyle: { + 'text-align': 'left', + 'left': '0px' + }, + colSpan: function(params) { + return params.data.name ? 6 : 1; + }, + cellRenderer: 'group', + cellRendererParams: { + suppressCount: true, + innerRenderer: function(params) { + return params.data.name; + } + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + }, + { + headerClass: 'justify-left', + headerName: 'File Name', + headerTooltip: 'Line', + field: 'fileName', + tooltipField: 'fileName', + filter: 'text', + minWidth: 150, width: 150, maxWidth: 150, + cellStyle: { + 'text-align': 'left', + 'padding-left': '30px' + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return params.data.fileName.split('/').pop(); + } + }, + { + headerClass: 'justify-center', + headerName: 'Line Number Start', + headerTooltip: 'Line', + field: 'line', + tooltipField: 'line', + filter: 'number', + minWidth: 80, width: 80, maxWidth: 120, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + } + }, + { + headerClass: 'justify-center', + headerName: 'Line Number End', + headerTooltip: 'End Line', + field: 'endline', + tooltipField: 'endline', + filter: 'number', + minWidth: 80, width: 80, maxWidth: 120, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + } + }, + { + headerClass: 'justify-center', + headerName: 'Item', + headerTooltip: 'Item', + field: 'item', + tooltipField: 'item', + filter: 'number', + minWidth: 80, width: 80, maxWidth: 120, + cellRenderer: function (params) { + if (params.value) { + return '' + params.data.genblk + params.value + ''; + } + }, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + } + }, + { + headerClass: 'justify-center', + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits', fieldName: 'nameSt'}); + } + }, + { + headerName: '', + headerTooltip: '', + field: '', + tooltipField: '', + suppressHideColumn: true, + suppressMovable: true, + suppressFilter: true, + suppressSorting: true + } + ]; +} diff --git a/covhtmlreport/scripts/branches.js b/covhtmlreport/scripts/branches.js new file mode 100644 index 000000000..0fe664543 --- /dev/null +++ b/covhtmlreport/scripts/branches.js @@ -0,0 +1,452 @@ +/* global $, document, console, window, getPageTemplate, createDataGridInstance, createPanel, parseUrl, updateUrlHash, GLOBAL_JSON, loadJsonFile, hitsRenderer, headerTemplate, queryUrlParamsByPrefix, updateUrlParams, urlParams, pageName, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa */ +/* exported processBranchesData, closeDetails, processSrcNamesData */ + +'use strict'; + +var startDateBr; +var startDateBrDetails; +var timeDiffBr; +var timeDiffBrDetails; + +var dataObj = {}; +var branchesColumnDefs; +var branchDetailsColumnDefs; +var branchesPageSize = 25; +var branchDetailsPageSize = 25; +var brItems = []; +var sourceMapData; + +var gridOptionsDetails = {}; +var nodeParams; +var branchesUrlParams; +var firstrendering = true; + + +var BRANCH_ITEM = { + SOURCE_LINE: 's', + GEN_BLK: 'gi', + CLASS_PARAM: 'cp', + HITS: 'h', + TOKEN_START: 't', + TOKEN_CHARS: 'n', + EXCLUDED: 'e', + COV_PERCENTAGE: 'p', + FILE_PATH: 'f', + LINE_NUMBER: 'l', + ITEM_NUMBER: 'i', + BRANCH_STMT: 'bs', + BRANCH: 'br', + THIT: 'th', + THIT_FILE_NUM: 0, + THIT_SCOPE: 1 +}; + +var PREFIX = { + BRANCHES: 'br' +}; +var branchesPageUrl = pageName.b; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDateBr = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + branchesUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.BRANCHES, { + pageUrl: branchesPageUrl, + pageSize: branchesPageSize + }); + + // load json file + loadJsonFile('srcn'); + +}); + +function processSrcNamesData(g_data) { + sourceMapData = g_data; + loadJsonFile('b' + urlParams.f); +} + +function processBranchesData(g_data) { + dataObj = g_data[urlParams.s] || g_data[urlParams.oneInst]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj, g_data[urlParams.s + '_sub']); + } + } + + topPageDescription(urlParams.pr || dataObj.pr); + + // initialize dataGrid data + initializeData(); + + $('#page-body').append(getTemplate('br')); + var panelBodyId = createPanel('#brPanel', 'Branches Coverage', urlParams.cp); + $('#' + panelBodyId).append('
    '); + createDataGridInstance('brGrid', branchesColumnDefs, getData(dataObj), { + isTree: false, + urlParams: branchesUrlParams, + rowSelection: 'single', + callback: function(firstNodeIndex) { + var rowId = urlParams.hasOwnProperty(PREFIX.BRANCHES) ? urlParams[PREFIX.BRANCHES] : firstNodeIndex; + $('a#branches_a' + rowId + '[name="' + rowId + '"]')[0].click(); + } + }); + + if (urlParams.p) { + timeDiffBr = new Date() - startDateBr; + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Branches ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getData(data) { + var rowData = []; + var brId = 0; + data[BRANCH_ITEM.BRANCH].forEach(function (item) { + if (item[BRANCH_ITEM.BRANCH_STMT].length > 0) { //check for empty bs in case of exclusion and no -showexcluded + brItems.push(item); + var genblk = ''; + var classparam = ''; + item[BRANCH_ITEM.BRANCH_STMT].forEach(function(bs) { + if (bs.hasOwnProperty(BRANCH_ITEM.GEN_BLK)) { + genblk = bs[BRANCH_ITEM.GEN_BLK]; + }else if (bs.hasOwnProperty(BRANCH_ITEM.CLASS_PARAM)) { + classparam = bs[BRANCH_ITEM.CLASS_PARAM]; + } + }); + + if (item[BRANCH_ITEM.BRANCH].hasOwnProperty(BRANCH_ITEM.SOURCE_LINE)) { // Source is found + rowData.push({ + name: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.SOURCE_LINE], + line: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.LINE_NUMBER] + ' ' + genblk+classparam, + covP: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.COV_PERCENTAGE], + tokenStart: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.TOKEN_START], + tokenChars: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.TOKEN_CHARS], + parent: 1, + id: brId++, + f: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.FILE_PATH], + l: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.LINE_NUMBER] + }); + } else { + rowData.push({ + name: sourceMapData[item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.FILE_PATH]], + line: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.LINE_NUMBER] + ' ' + genblk+classparam, + covP: item[BRANCH_ITEM.BRANCH][BRANCH_ITEM.COV_PERCENTAGE], + parent: 1, + id: brId++ + }); + } + } + }); + + return rowData; +} + +function processBrData(item) { + gridOptionsDetails.brs = createDataGridInstance('brsGrid', branchDetailsColumnDefs, getRowData(item), { + pageSize: branchDetailsPageSize, + isTree: false + }); + + if (urlParams.p) { + timeDiffBrDetails = new Date() - startDateBrDetails; + console.save(urlParams.p + ' ,Total Loading time ' + ((timeDiffBr || 0) + timeDiffBrDetails), 'z_console.txt'); + } +} + +function getRowData(data) { + var rowData = []; + + data.forEach(function (bs) { + if (bs.hasOwnProperty(BRANCH_ITEM.SOURCE_LINE)) { //Source is found + rowData.push({ + name: bs[BRANCH_ITEM.SOURCE_LINE], + line: bs[BRANCH_ITEM.LINE_NUMBER], + hits: bs[BRANCH_ITEM.HITS], + covP: (bs[BRANCH_ITEM.HITS] > 0) ? 'Yes' : 'No', + tokenStart: bs[BRANCH_ITEM.TOKEN_START], + tokenChars: bs[BRANCH_ITEM.TOKEN_CHARS], + thitf: (bs.hasOwnProperty(BRANCH_ITEM.THIT)) ? bs[BRANCH_ITEM.THIT][BRANCH_ITEM.THIT_FILE_NUM] : undefined, + thits: (bs.hasOwnProperty(BRANCH_ITEM.THIT)) ? bs[BRANCH_ITEM.THIT][BRANCH_ITEM.THIT_SCOPE] : undefined, + c: bs.c + }); + } else { + rowData.push({ + name: sourceMapData[bs[BRANCH_ITEM.FILE_PATH]], + line: bs[BRANCH_ITEM.LINE_NUMBER] + ' [Item: ' + bs[BRANCH_ITEM.ITEM_NUMBER] + ']', + hits: bs[BRANCH_ITEM.HITS], + covP: (bs[BRANCH_ITEM.HITS] > 0) ? 'Yes' : 'No', + thitf: (bs.hasOwnProperty(BRANCH_ITEM.THIT)) ? bs[BRANCH_ITEM.THIT][BRANCH_ITEM.THIT_FILE_NUM] : undefined, + thits: (bs.hasOwnProperty(BRANCH_ITEM.THIT)) ? bs[BRANCH_ITEM.THIT][BRANCH_ITEM.THIT_SCOPE] : undefined, + c: bs.c + }); + } + }); + + return rowData; +} + +function initializeData() { + branchesColumnDefs = [ + { + headerName: 'Source', + headerTooltip: 'Source', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + minWidth: 300, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + expanded: true, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.covP === 'string'); + }, + }, + cellRenderer: NameCellRenderer, + }, + { + headerName: 'Line Number', + headerTooltip: 'Line Number', + field: 'line', + tooltipField: 'line', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + }, + { + headerName: 'Coverage', + headerTooltip: 'coverage', + field: 'covP', + tooltipField: 'covP', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if (params.value === 'Yes') { + return '✔'; + } else if (params.value === 'No') { + return '✘'; + } else if (typeof params.data.covP === 'string') { + return 'Excluded'; + } else { + return (isValueNa(params)) ? 'na' : params.value + '%'; + } + }, + cellClassRules: { + 'fg-danger': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return ((isValueBelowThreshold(params)) || params.value === 'No'); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return (isValueAboveThreshold(params) || params.value === 'Yes'); + }, + 'exclusion': function (params) { + return (typeof params.data.covP === 'string'); + }, + } + }, + ]; + branchDetailsColumnDefs = [ + { + headerName: 'Source', + headerTooltip: 'Source', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + minWidth: 300, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + expanded: true, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: 'group', + cellRendererParams: { + suppressCount: true, + innerRenderer: function (params) { + if (typeof params.data.tokenStart !== 'undefined' && !params.data.parent) { + return params.data.name.substring(0, (params.data.tokenStart)) + '' + params.data.name.substring((params.data.tokenStart), (params.data.tokenStart + params.data.tokenChars)) + '' + params.data.name.substring((params.data.tokenStart + params.data.tokenChars), (params.data.name.length)); + } else if (params.data.parent) { + return '' + params.data.name + ''; + } else { + return params.data.name; + } + } + } + }, + { + headerName: 'Line Number', + headerTooltip: 'Line Number', + field: 'line', + tooltipField: 'line', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + }, + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits'}); + } + }, + ]; +} + + +function getTemplate(tempId) { + var templates = { + 'br': + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ', + 'details': + '' + }; + + return templates[tempId]; +} + +function closeDetails() { + $('#details-container').remove(); +} + +function NameCellRenderer() {} +NameCellRenderer.prototype.init = function(params) { + var renderDetails = this.renderDetails; + + var href = branchesPageUrl + 'cp=' + urlParams.cp + '&' + PREFIX.BRANCHES + '=' + params.node.id + ((urlParams.f && urlParams.s) ? '&f=' + urlParams.f + '&s=' + urlParams.s : '' ); + var cellValue = params.value; + var lineNumber = ' Line ' + params.data.line + ' :'; + + var cellTemplate = $( + '
    ' + + ((typeof href === 'undefined') ? ('' + cellValue + '') : ('' + cellValue + '')) + + '
    ' + ); + + var cellTemplateObj = $(cellTemplate); + + // handling details + var details = cellTemplateObj[0].querySelector('a#branches_a' + params.node.id); + if (details) { + details.addEventListener('click', function (e) { + startDateBrDetails = new Date(); + e.preventDefault(); + + if (e.which == 1) { + // Remove old instance of C/E terms, rows + for (var gridOptions in gridOptionsDetails) { + if (gridOptionsDetails.hasOwnProperty(gridOptions)) { + if (typeof gridOptionsDetails[gridOptions] !== 'undefined') { + gridOptionsDetails[gridOptions].api.destroy(); + gridOptionsDetails[gridOptions] = undefined; + } + } + } + + var headerTemplate = '
    Branch details'; + + headerTemplate += ':
        ' + + (GLOBAL_JSON.hasOwnProperty('srcAnnotate') && GLOBAL_JSON.srcAnnotate ? + (lineNumber + '' + cellValue + '') : lineNumber + cellValue ) + + '

    '; + headerTemplate += '
    '; + $('.ag-row').removeClass('clicked-row'); + $(e.path[5]).addClass('clicked-row'); + $('#details-container').remove(); + $('#br-container').append(getTemplate('details')); + $('#details-container .row').prepend( headerTemplate); + + if ($('#br').hasClass('col-xs-12')) { + $('#details-container').addClass('col-xs-12 non-animated fadeInDown'); + } + + + + $('#details-container').css({'display': ''}); + renderDetails(params); + if (firstrendering) { + firstrendering = false; + } else { + $('html, body').animate({ + scrollTop: ($('#details-container').offset().top + 100) + }, 500); + } + } + + }); + } + + this.eGui = cellTemplateObj[0]; +}; + +NameCellRenderer.prototype.getGui = function() { + return this.eGui; +}; + +NameCellRenderer.prototype.renderDetails = function(params) { + nodeParams = params; + + var newUrlParams = {}; + newUrlParams[PREFIX.BRANCHES] = params.node.id; + + urlParams = updateUrlParams(newUrlParams, branchesPageUrl); + + processBrData(brItems[nodeParams.data.id][BRANCH_ITEM.BRANCH_STMT]); +}; diff --git a/covhtmlreport/scripts/condExp.js b/covhtmlreport/scripts/condExp.js new file mode 100644 index 000000000..fc8aea3fb --- /dev/null +++ b/covhtmlreport/scripts/condExp.js @@ -0,0 +1,687 @@ +/* global $, document, window, console, getPageTemplate, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, loadJsonFile, updateUrlHash, hitsRenderer, headerTemplate, queryUrlParamsByPrefix, updateUrlParams, clearUrlParamsByPrefix, urlParams, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa, isValueExcluded */ +/* exported processCondExprData, closeDetails, processSrcNamesData */ + +'use strict'; + +var startDateCe; +var startDateCeDetails; +var timeDiffCe; +var timeDiffCeDetails; +var dataObj = {}; +var covType; +var columnDefs; +var ceColumnDefs, ce1ColumnDefs, ce1ExtColumnDefs, ceMaskColumnDefs, ceInputColumnDefs, ceInputExtColumnDefs, TotalColumnDefs, ceSumColumnDefs ; +var pageSize = 10; +var cePageSize = 25; +var ceItems = []; +var isShowexcludedEnabled; +var sourceMapData; + +var gridOptionsDetails = {}; +var nodeParams; + +var expressionsUrlParams; +var expressionInputsUrlParams; +var expressionRowsUrlParams; +var firstrendering = true; + + +var CONDEXP_ITEM = { + SOURCE_LINE: 's', + BIMODAL: 'bi', + PATTERN_TYPE: 'hp', //TRUE: Matching input pattern, FALSE: Non-masking condition + HITS: 'h', + HINT: 'h', + ROW: 'r', + NAME: 'n', + EXCLUDED: 'e', + INPUTPATTERN_OR_NON_MASKING_COND: 'm', + TERM: 't', + FILE_PATH: 'f', + LINE_NUMBER: 'l', + GEN_BLK: 'gi', + CLASS_PARAM: 'cp', + COVERED: 'c', + REASON: 'r', + COV_PERCENTAGE: 'p', + TYPE: 'x', //TRUE: Expression, FALSE: Condition + EXT_FEC: 'b', + EXC_COM: 'c', + THIT: 'th', + THIT_FILE_NUM: 0, + THIT_SCOPE: 1, + COND_EXP: 'ce', + ROW_INDEX: 'i' +}; + +var INDEX = { + TOTAL: 0, + TO0: 0, + TO1: 1 +}; + +var PREFIX = { + EXPRESSIONS: 'ex', + INPUTS: 'exi', + ROWS: 'exr' +}; + +var pageUrl = 'condExp.html?'; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDateCe = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + isShowexcludedEnabled = GLOBAL_JSON.hasOwnProperty('showexcluded') && GLOBAL_JSON.showexcluded; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + covType = (urlParams.t === 'fc') ? 'Conditions' : 'Expressions'; + + // load json file + loadJsonFile('srcn'); +}); + +function processSrcNamesData(g_data) { + sourceMapData = g_data; + loadJsonFile('ce' + urlParams.f); +} + +function processCondExprData(g_data) { + dataObj = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj, g_data[urlParams.s + '_sub']); + } + } + + topPageDescription(urlParams.pr || dataObj.pr); + + // initialize dataGrid data + initializeData(); + + //getRowData(dataObj); + $('#page-body').append(getTemplate('ce')); + var panelBodyId = createPanel('#cePanel', covType + ' Coverage', urlParams.cp); + $('#' + panelBodyId).append('
    '); + + expressionsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.EXPRESSIONS, { + pageUrl: pageUrl, + pageSize: cePageSize + }); + + createDataGridInstance('ceGrid', ceSumColumnDefs, getCE(dataObj[CONDEXP_ITEM.COND_EXP]), { + isTree: false, + urlParams: expressionsUrlParams, + rowSelection: 'single', + callback: function(firstNodeIndex) { + var rowId = urlParams.hasOwnProperty(PREFIX.EXPRESSIONS) ? urlParams[PREFIX.EXPRESSIONS] : firstNodeIndex; + $('a[name="' + rowId + '"]')[0].click(); + } + }); + + if (urlParams.p) { + timeDiffCe = new Date() - startDateCe; + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' ' + covType + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getCE(data) { + var ceData = []; + var ceId = 0; + data.forEach(function (item) { + if (((covType === 'Conditions' && (!item[CONDEXP_ITEM.TYPE])) || (covType === 'Expressions' && (item[CONDEXP_ITEM.TYPE])) ) + && ((!((typeof item[CONDEXP_ITEM.COV_PERCENTAGE] === 'string') && (!item.t.length))) || ((typeof item[CONDEXP_ITEM.COV_PERCENTAGE] === 'string') && isShowexcludedEnabled ))) { + var genblk = item.hasOwnProperty(CONDEXP_ITEM.GEN_BLK) ? item[CONDEXP_ITEM.GEN_BLK] : ''; + var classparam = item.hasOwnProperty(CONDEXP_ITEM.CLASS_PARAM) ? item[CONDEXP_ITEM.CLASS_PARAM] : ''; + var source = (item.hasOwnProperty(CONDEXP_ITEM.SOURCE_LINE)) ? + item[CONDEXP_ITEM.SOURCE_LINE] : sourceMapData[item[CONDEXP_ITEM.FILE_PATH]]; + + source += genblk; + source += classparam; + ceItems.push(item); + ceData.push({ + covtype: source, + line: item[CONDEXP_ITEM.LINE_NUMBER], + covP: item[CONDEXP_ITEM.COV_PERCENTAGE], + id: ceId++, + f: item.f, // file Number + l: item.l, // line Number + exc: item.c //exclusion comment + }); + } + }); + return ceData; +} + +function processCeData(item) { + expressionInputsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.INPUTS, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + gridOptionsDetails.terms = createDataGridInstance('termsGrid', columnDefs, getRowData(item[CONDEXP_ITEM.TERM], 'terms'), { + isTree: false, + urlParams: expressionInputsUrlParams + }); + + TotalColumnDefs = (!item[CONDEXP_ITEM.BIMODAL] && !item[CONDEXP_ITEM.PATTERN_TYPE]) ? + ceColumnDefs.concat(ce1ColumnDefs, ceMaskColumnDefs) : + (!item[CONDEXP_ITEM.BIMODAL] && item[CONDEXP_ITEM.PATTERN_TYPE]) ? + ceColumnDefs.concat(ce1ColumnDefs, ceInputColumnDefs) : + (item[CONDEXP_ITEM.BIMODAL] && !item[CONDEXP_ITEM.PATTERN_TYPE]) ? + ceColumnDefs.concat(ce1ExtColumnDefs, ceMaskColumnDefs) : + ceColumnDefs.concat(ce1ExtColumnDefs, ceInputExtColumnDefs) ; + + expressionRowsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.ROWS, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + gridOptionsDetails.rows = createDataGridInstance('rowsGrid', TotalColumnDefs, getRowData(item, 'rows'), { + isTree: false, + urlParams: expressionRowsUrlParams + }); + + $('#page-body').append('
    '); + + if (urlParams.p) { + timeDiffCeDetails = new Date() - startDateCeDetails; + console.save(urlParams.p + ' ,Total Loading time ' + ((timeDiffCe || 0) + timeDiffCeDetails), 'z_console.txt'); + } +} + +function getRowData(data, type) { + var rowData = []; + var rowNum = 1; + + if (type === 'terms') { //get terms row data + data.forEach(function (t) { + rowData.push({ + inputTerm: t[CONDEXP_ITEM.NAME], + covered: (t[CONDEXP_ITEM.COVERED]) ? 'Yes' : 'No', + reason: t[CONDEXP_ITEM.REASON], + hint: t[CONDEXP_ITEM.HINT], + excluded: t[CONDEXP_ITEM.EXCLUDED] + }); + }); + return rowData; + } else { //rows + data.r.forEach(function (r) { + var rowItems = {} ; + rowItems.rows = 'Row ' + r[CONDEXP_ITEM.ROW_INDEX]; + rowItems.fectarget = r[CONDEXP_ITEM.NAME]; + rowItems.c = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.EXC_COM]; //exclusion comment if exist + if (((!data[CONDEXP_ITEM.BIMODAL]) && (!data[CONDEXP_ITEM.PATTERN_TYPE])) || ((!data[CONDEXP_ITEM.BIMODAL]) && (data[CONDEXP_ITEM.PATTERN_TYPE]))) { + rowItems.hits = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.HITS]; + + if (r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL].hasOwnProperty(CONDEXP_ITEM.THIT)) { + rowItems.thitf = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_FILE_NUM]; + rowItems.thits = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_SCOPE]; + } + + if ((!data[CONDEXP_ITEM.BIMODAL]) && (data[CONDEXP_ITEM.PATTERN_TYPE])) { + rowItems.matchinginput = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.INPUTPATTERN_OR_NON_MASKING_COND]; + } else { + rowItems.nonmaskingc = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.INPUTPATTERN_OR_NON_MASKING_COND]; + } + } else if (((data[CONDEXP_ITEM.BIMODAL]) && (!data[CONDEXP_ITEM.PATTERN_TYPE])) || ((data[CONDEXP_ITEM.BIMODAL]) && (data[CONDEXP_ITEM.PATTERN_TYPE]))) { + rowItems.hitsTo0 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO0][CONDEXP_ITEM.HITS]; + if (r[CONDEXP_ITEM.EXT_FEC][INDEX.TO0].hasOwnProperty(CONDEXP_ITEM.THIT)) { + rowItems.thitf0 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO0][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_FILE_NUM]; + rowItems.thits0 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO0][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_SCOPE]; + } + + rowItems.hitsTo1 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO1][CONDEXP_ITEM.HITS]; + if (r[CONDEXP_ITEM.EXT_FEC][INDEX.TO1].hasOwnProperty(CONDEXP_ITEM.THIT)) { + rowItems.thitf1 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO1][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_FILE_NUM]; + rowItems.thits1 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO1][CONDEXP_ITEM.THIT][CONDEXP_ITEM.THIT_SCOPE]; + } + + if ((data[CONDEXP_ITEM.BIMODAL]) && (data[CONDEXP_ITEM.PATTERN_TYPE])) { + rowItems.matchinginputTo0 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO0][CONDEXP_ITEM.INPUTPATTERN_OR_NON_MASKING_COND]; + rowItems.matchinginputTo1 = r[CONDEXP_ITEM.EXT_FEC][INDEX.TO1][CONDEXP_ITEM.INPUTPATTERN_OR_NON_MASKING_COND]; + } else { + rowItems.nonmaskingc = r[CONDEXP_ITEM.EXT_FEC][INDEX.TOTAL][CONDEXP_ITEM.INPUTPATTERN_OR_NON_MASKING_COND]; + } + } + + rowData.push(rowItems); + rowNum++; + }); + } + return rowData; +} + + +function initializeData() { + columnDefs = [ + { + headerName: 'Input Term', + headerTooltip: 'Input Term', + headerClass: 'justify-left', + field: 'inputTerm', + tooltipField: 'inputTerm', + minWidth: 120, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function(params) { + return params.data.excluded; + } + } + }, + { + headerName: 'Covered', + headerTooltip: 'Covered', + field: 'covered', + tooltipField: 'covered', + minWidth: 100, width: 100, + filter: 'text', + cellRenderer: function (params) { + if (params.data.excluded) { + return 'Excluded'; + } else if (params.value === 'Yes') { + return '✔'; + } else if (params.value === 'No') { + return '✘'; + } else { + return params.value; + } + }, + cellClassRules: { + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return (params.value === 'No' && !params.data.excluded); + }, + 'success': function (params) { + return (params.value === 'Yes' && !params.data.excluded); + }, + 'exclusion': function(params) { + return params.data.excluded; + } + } + }, + { + headerName: 'Reason For No Coverage', + headerTooltip: 'Reason For No Coverage', + field: 'reason', + tooltipField: 'reason', + minWidth: 100, width: 100, + filter: 'text', + }, + { + headerName: 'Hint', + headerTooltip: 'Hint', + field: 'hint', + tooltipField: 'hints', + minWidth: 100, width: 100, + filter: 'text' + }, + ]; + ceColumnDefs = [ + { + headerName: 'Rows', + headerTooltip: 'Rows', + headerClass: 'justify-left', + field: 'rows', + tooltipField: 'rows', + minWidth: 120, width: 120, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + + }, + { + headerName: 'FEC Target', + headerTooltip: 'FEC Target', + field: 'fectarget', + tooltipField: 'fectarget', + minWidth: 120, width: 120, + filter: 'text', + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + }, + + ]; + ce1ColumnDefs = [ + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + minWidth: 120, width: 120, + filter: 'number', + cellClassRules: { + 'danger': function (params) { + return !params.value; + }, + 'exclusion': function (params) { + return (isValueExcluded(params)); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits', fieldName: 'fectarget'}); + } + }, + ]; + ce1ExtColumnDefs = [ + { + headerName: 'Hits (->0)', + headerTooltip: 'Hits (->0)', + field: 'hitsTo0', + tooltipField: 'hitsTo0', + minWidth: 120, width: 120, + filter: 'number', + cellClassRules: { + 'danger': function (params) { + return !params.value; + }, + 'exclusion': function (params) { + return (isValueExcluded(params)); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf0', scope: 'thits0'}); + } + }, + { + headerName: 'Hits (->1)', + headerTooltip: 'Hits (->1)', + field: 'hitsTo1', + tooltipField: 'hitsTo1', + minWidth: 120, width: 120, + filter: 'number', + cellClassRules: { + 'danger': function (params) { + return !params.value; + }, + 'exclusion': function (params) { + return (isValueExcluded(params)); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf1', scope: 'thits1'}); + } + }, + ]; + ceMaskColumnDefs = [ + { + headerName: 'Non-Masking Condition(s)', + headerTooltip: 'Non-Masking Condition(s)', + field: 'nonmaskingc', + tooltipField: 'nonmaskingc', + minWidth: 120, width: 120, + filter: 'text', + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + }, + ]; + + + ceInputColumnDefs = [ + { + headerName: 'Matching Input Pattern', + headerTooltip: 'Matching Input Pattern', + field: 'matchinginput', + tooltipField: 'matchinginput', + minWidth: 120, width: 120, + filter: 'text', + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + }, + ]; + + ceInputExtColumnDefs = [ + { + headerName: 'Matching Input Pattern (->0)', + headerTooltip: 'Matching Input Pattern (->0)', + field: 'matchinginputTo0', + tooltipField: 'matchinginputTo0', + minWidth: 120, width: 120, + filter: 'text', + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + }, + { + headerName: 'Matching Input Pattern (->1)', + headerTooltip: 'Matching Input Pattern (->1)', + field: 'matchinginputTo1', + tooltipField: 'matchinginputTo1', + minWidth: 120, width: 120, + filter: 'text', + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string') || (typeof params.data.hitsTo0 === 'string') || (typeof params.data.hitsTo1 === 'string'); + }, + }, + }, + ]; + + ceSumColumnDefs = [ + { + headerName: covType, + headerTooltip: covType, + headerClass: 'justify-left', + field: 'covtype', + tooltipField: 'covtype', + minWidth: 120, width: 120, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + filter: 'text', + cellRenderer: NameCellRenderer, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.covP === 'string'); + }, + }, + + }, + { + headerName: 'Line Number', + headerTooltip: 'Line Number', + field: 'line', + tooltipField: 'line', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + }, + { + headerName: 'Coverage', + headerTooltip: 'coverage', + field: 'covP', + tooltipField: 'covP', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if (typeof params.data.covP === 'string') { + return 'Excluded'; + } else { + return (isValueNa(params)) ? 'na' : params.value + '%'; + } + + }, + cellClassRules: { + 'fg-danger': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return (typeof params.data.covP === 'string'); + }, + } + }, + ]; + +} + +function getTemplate(tempId) { + var templates = { + 'ce': + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ', + 'details': + '' + }; + + return templates[tempId]; +} + +function closeDetails() { + $('#details-container').remove(); +} + +function NameCellRenderer() {} +NameCellRenderer.prototype.init = function(params) { + var renderDetails = this.renderDetails; + + var href = pageUrl + 't=' + urlParams.t + '&cp=' + urlParams.cp + '&' + PREFIX.EXPRESSIONS + '=' + params.node.id + ((urlParams.f && urlParams.s) ? '&f=' + urlParams.f + '&s=' + urlParams.s : '' ); + var cellValue = params.value; + var lineNumber = ' Line ' + params.data.line + ' :'; + + var cellTemplate = $( + '
    ' + + ((typeof href === 'undefined') ? ('' + cellValue + '') : ('' + cellValue + '')) + + '
    ' + ); + + var cellTemplateObj = $(cellTemplate); + + // handling details + var details = cellTemplateObj[0].querySelector('a#' + covType + '_a' + params.node.id); + if (details) { + details.addEventListener('click', function (e) { + startDateCeDetails = new Date(); + e.preventDefault(); + + if (e.which == 1) { + // Remove old instance of C/E terms, rows + for (var gridOptions in gridOptionsDetails) { + if (gridOptionsDetails.hasOwnProperty(gridOptions)) { + if (typeof gridOptionsDetails[gridOptions] !== 'undefined') { + urlParams = clearUrlParamsByPrefix(urlParams, gridOptions == 'terms' ? PREFIX.INPUTS : PREFIX.ROWS); + gridOptionsDetails[gridOptions].api.destroy(); + gridOptionsDetails[gridOptions] = undefined; + } + } + } + + var headerTemplate = '
    ' + covType.slice(0, -1) + ' details'; + + headerTemplate += ':
        ' + + (GLOBAL_JSON.hasOwnProperty('srcAnnotate') && GLOBAL_JSON.srcAnnotate ? + (lineNumber + '' + cellValue + ' ') : lineNumber + cellValue ) + + '

    '; + headerTemplate += '
    '; + $('.ag-row').removeClass('clicked-row'); + $(e.path[5]).addClass('clicked-row'); + $('#details-container').remove(); + $('#ce-container').append(getTemplate('details')); + $('#details-container .row').prepend( headerTemplate); + + if ($('#ce').hasClass('col-xs-12')) { + $('#details-container').addClass('col-xs-12 non-animated fadeInDown'); + } + + $('#details-container').css({'display': ''}); + renderDetails(params); + if (firstrendering) { + firstrendering = false; + } else { + $('html, body').animate({ + scrollTop: ($('#details-container').offset().top + 100) + }, 500); + } + + } + }); + } + + this.eGui = cellTemplateObj[0]; +}; + +NameCellRenderer.prototype.getGui = function() { + return this.eGui; +}; + +NameCellRenderer.prototype.renderDetails = function(params) { + nodeParams = params; + + var newUrlParams = {}; + newUrlParams[PREFIX.EXPRESSIONS] = params.node.id; + + urlParams = updateUrlParams(newUrlParams, pageUrl); + + processCeData(ceItems[nodeParams.data.id]); +}; diff --git a/covhtmlreport/scripts/covSummary.js b/covhtmlreport/scripts/covSummary.js new file mode 100644 index 000000000..6737b3efa --- /dev/null +++ b/covhtmlreport/scripts/covSummary.js @@ -0,0 +1,629 @@ +/* global $, document, window, parent, getPageTemplate, Chart, createPanel, createDataGridInstance, GLOBAL_JSON, coverageMapper, adjustPrecision, updateUrlHash, OVERALL, loadJsonFile, headerTemplate, gridSortingCustomComparator, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa, isValueExcluded */ +/* exported processOverallduData, processTestRecordsData */ + +'use strict'; + +var columnDefs; +var structureColumnDefs; +var chart; +var trData; +var overallData; +var strTree; +var trExist; +var instExist; +var structExist; +var duExist; +var testPlanExist; +var strucDivId; +var duDivId; +var instDivId; +var testPlanDiv; +var isPA; +var isShowExcluded; +var FILE_SIZE_LIMIT = 52428800; // 50 MB + +var pageUrl = 'covSummary.html?'; + +$(window).resize(function () { + updateChartHeight(); +}); + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + $('#page-body').append(getBodyTemplate()); + + // update url hash + updateUrlHash(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + isPA = (GLOBAL_JSON.hasOwnProperty('pa') && GLOBAL_JSON.pa); + isShowExcluded = (GLOBAL_JSON.hasOwnProperty('showexcluded') && GLOBAL_JSON.showexcluded); + topPageDescription(); + initializeData(); + + loadJsonFile('overalldu'); +}); + +function processOverallduData(g_data) { + overallData = g_data; + + if (GLOBAL_JSON.hasOwnProperty('trExist') && GLOBAL_JSON.trExist) { + loadJsonFile('tr'); + } else { + constrcutCovSummaryData(); + } +} + +function processTestRecordsData(g_data) { + trData = g_data; + constrcutCovSummaryData(); +} + +function constrcutCovSummaryData() { + createSummary(); + + if (GLOBAL_JSON.hasOwnProperty('trExist') && GLOBAL_JSON.trExist) { + createTestChart(); + } + + if (GLOBAL_JSON.hasOwnProperty('tpExist') && GLOBAL_JSON.tpExist) { + createTestPlanSummary(); + } + + addFooter(); +} + +function topPageDescription() { + $('#page-header-text').text(GLOBAL_JSON.prod + (isPA ? ' Power Aware' : '') + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report Summary'); + + headerTemplate(); +} + +function getBodyTemplate() { + return '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; +} + +function createSummary() { + checkGrids(); + if (overallData.hasOwnProperty(OVERALL.DESIGN_INSTANCES_DATA) && structExist) { + var panelBodyId = createPanel('#' + strucDivId, (isPA ? 'Power Aware Coverage' : 'Design Coverage By Instance'), overallData[OVERALL.DESIGN_INSTANCES_DATA].tc); + $('#' + panelBodyId).append('
    '); + createDataGridInstance('structure-summary-Grid', structureColumnDefs, getStructureData(overallData[OVERALL.DESIGN_STRUCTURE_DATA]), { + isTree: strTree + }); + } + if (overallData.hasOwnProperty(OVERALL.DESIGN_UNITS_DATA)) { + panelBodyId = createPanel('#' + duDivId, 'Design Units Coverage Summary', overallData[OVERALL.DESIGN_UNITS_DATA].tc); + $('#' + panelBodyId).append('
    '); + createDataGridInstance('du-summary-Grid', columnDefs, getSummaryTypeData(overallData[OVERALL.DESIGN_UNITS_DATA], 'du'), { + isTree: false + }); + } + if (overallData.hasOwnProperty(OVERALL.DESIGN_INSTANCES_DATA)) { + panelBodyId = createPanel('#' + instDivId, 'Instance Coverage Summary', overallData[OVERALL.DESIGN_INSTANCES_DATA].tc); + $('#' + panelBodyId).append('
    '); + createDataGridInstance('instance-summary-Grid', columnDefs, getSummaryTypeData(overallData[OVERALL.DESIGN_INSTANCES_DATA], 'inst'), { + isTree: false + }); + } + + + + + +} + +function createTestPlanSummary() { + loadJsonFile('tp'); +} + +function processTpLinks(g_data) { + + initializeTestPlanData(g_data.head, 'summary'); + + var tpUrlParams = queryUrlParamsByPrefix(urlParams, 'tp', { + pageUrl: pageUrl, + pageSize: 25 + }); + + var panelBodyId = createPanel('#' + testPlanDiv, 'Testplan Summary'); + $('#' + panelBodyId).append('
    '); + createDataGridInstance('testplan-summary-grid', testplanColumnDefs, getTestPlanRowData(g_data, 'summary'), { + paginationEnabled: false, + urlParams: tpUrlParams, + }); +} + + + +function checkGrids() { + if (GLOBAL_JSON.hasOwnProperty('trExist') && GLOBAL_JSON.trExist) { + trExist = true; + } + if (overallData.hasOwnProperty(OVERALL.DESIGN_INSTANCES_DATA) || GLOBAL_JSON.summaryReport) { // CHECK if summary report Also -summary + instExist = true; + } + if (overallData.hasOwnProperty(OVERALL.DESIGN_UNITS_DATA)) { + duExist = true; + } + if (overallData.hasOwnProperty(OVERALL.DESIGN_INSTANCES_DATA) && (GLOBAL_JSON.hasOwnProperty('instlinkSize') && GLOBAL_JSON.instlinkSize > FILE_SIZE_LIMIT)) { + structExist = true; + } + + if (GLOBAL_JSON.hasOwnProperty('testPlanReport') && GLOBAL_JSON.testPlanReport) { + testPlanExist = true; + } + + + // Locating the DIVs according to the existing tables + if (structExist) { // If File Size > 50 Instance structure table exists + strucDivId = 'structure-summary'; + if (trExist) { // If test chart exists + instDivId = 'instance-summary'; + duDivId = 'du-summary'; + } else { // If test chart doen't exists + duDivId = 'du-summary'; + testPlanDiv = 'testplan-summary'; + instDivId = duExist || testPlanExist ? 'instance-summary' : 'tests-summary'; // check if the instance summary will be moved to the top row or stay in the bottom row alongside the du-summary + } + } else { // If there is no instance structure table we will check if only one of the DU/instance summary table exists will be moved to the top row + + + testPlanDiv = 'structure-summary'; + duDivId = instExist || testPlanExist ? 'du-summary' : 'structure-summary'; + instDivId = duExist || testPlanExist ? 'instance-summary' : 'structure-summary'; + } + +} + +function getSummaryTypeData(data, type) { + var gridData = []; + + Object.keys(data).sort().forEach(function (covType) { + if (data.hasOwnProperty(covType)) { + if (!(covType === 'f' || covType === 'tc' || covType === 'gb' || covType === 'cvpc' || covType === 'pb')) { + var rowData = { + name: coverageMapper[covType], + type: covType, + bins: data[covType][OVERALL.BINS_INDEX], + hit: data[covType][OVERALL.HITS_INDEX], + miss: data[covType][OVERALL.BINS_INDEX] - data[covType][OVERALL.HITS_INDEX], + cp: data[covType][OVERALL.COVERAGE_INDEX], + exclude: (isShowExcluded)? data[covType][OVERALL.EXCLUDED_INDEX] : -1 + }; + + var cvgChildData; + if (covType === 'g') { + rowData.hit = -1; + rowData.miss = -1; + //rowData.exclude = -1; + var cvgChildCovType = 'cvpc'; + if (data.hasOwnProperty(cvgChildCovType)) { + rowData.group = true; + cvgChildData = { + name: coverageMapper[cvgChildCovType], + type: cvgChildCovType, + bins: data[cvgChildCovType][OVERALL.BINS_INDEX], + hit: -1, + miss: -1, + cp: data[cvgChildCovType][OVERALL.COVERAGE_INDEX], + exclude: (isShowExcluded)? data[cvgChildCovType][OVERALL.EXCLUDED_INDEX] : -1 + }; + + var crossChildCovType = 'gb'; + if (data.hasOwnProperty(crossChildCovType)) { + cvgChildData.group = true; + cvgChildData.children = [ + { + name: coverageMapper[crossChildCovType], + type: crossChildCovType, + bins: data[crossChildCovType][OVERALL.BINS_INDEX], + hit: data[crossChildCovType][OVERALL.HITS_INDEX], + miss: data[crossChildCovType][OVERALL.BINS_INDEX] - data[crossChildCovType][OVERALL.HITS_INDEX], + cp: ((data[crossChildCovType][OVERALL.COVERAGE_INDEX] == -1) ? + adjustPrecision(data[crossChildCovType][OVERALL.HITS_INDEX] / data[crossChildCovType][OVERALL.BINS_INDEX] * 100) : + data[crossChildCovType][OVERALL.COVERAGE_INDEX]), + exclude: (isShowExcluded)? data[crossChildCovType][OVERALL.EXCLUDED_INDEX] : -1 + } + ]; + } + } + rowData.children = [cvgChildData]; + } + + var paCvgChildData; + if (covType === 'pg') { + rowData.hit = -1; + rowData.miss = -1; + // rowData.exclude = -1; + var paCvgChildCovType = 'pb'; + if (data.hasOwnProperty(paCvgChildCovType)) { + rowData.group = true; + paCvgChildData = { + name: coverageMapper[paCvgChildCovType], + type: paCvgChildCovType, + bins: data[paCvgChildCovType][OVERALL.BINS_INDEX], + hit: data[paCvgChildCovType][OVERALL.HITS_INDEX], + miss: data[paCvgChildCovType][OVERALL.BINS_INDEX] - data[paCvgChildCovType][OVERALL.HITS_INDEX], + cp: ((data[paCvgChildCovType][OVERALL.COVERAGE_INDEX] == -1) ? + adjustPrecision(data[paCvgChildCovType][OVERALL.HITS_INDEX] / data[paCvgChildCovType][OVERALL.BINS_INDEX] * 100) : + data[paCvgChildCovType][OVERALL.COVERAGE_INDEX]), + exclude: (isShowExcluded)? data[paCvgChildCovType][OVERALL.EXCLUDED_INDEX] : -1 + }; + } + rowData.children = [paCvgChildData]; + } + + if (covType === 'a' || covType === 'd' || covType === 'g' || covType === 'pc' || covType === 'pg') { + rowData.type = type; + } + + gridData.push(rowData); + } + } + }); + + return gridData; +} + +function getStructureData(data) { + var dataObj = []; + var parentChildren = {}; + + for (var key in data) { + if (data.hasOwnProperty(key)) { + var currentParentId = data[key][0]; + + if (currentParentId == -1) { + dataObj.push(getRowData(data, key)); + } else { + if (!parentChildren.hasOwnProperty(currentParentId)) { + parentChildren[currentParentId] = []; + } + parentChildren[currentParentId].push(getRowData(data, key)); + } + } + + + } + dataObj.forEach(function (row) { + if (parentChildren.hasOwnProperty(row.s)) { + row.group = true; + row.children = getChildrenFullpath(parentChildren[row.s], row.name); + strTree = true; + } + }); + return dataObj; +} + +function getRowData(data, key, parentName) { + return { + name: parentName ? parentName + '/' + data[key][1] : data[key][1], + cp: data[key][2], + f: data[key][3], + s: key + }; +} + +function getChildrenFullpath(children, append) { + children.forEach(function (child) { + child.name = append + '/' + child.name; + + }); + return children; + +} + +function createTestChart() { + if (typeof trData !== 'undefined') { + var testListData = getTestlistData(trData); + var panelBodyId = createPanel('#tests-summary', 'Test Summary' + ' (' + testListData.reduce(getSum) + ' tests)'); + $('#' + panelBodyId).append('
    '); + + chart = new Chart('tests-summary-chart', { + type: 'pie', + responsive: true, + data: { + datasets: [{ + data: testListData, + backgroundColor: [ + '#009688', + '#ffcd56', + '#f73333', + '#AB2828' + ] + }], + labels: [ + 'Ok' + ' (' + testListData[0] + ')', + 'Warning' + ' (' + testListData[1] + ')', + 'Error' + ' (' + testListData[2] + ')', + 'Fatal' + ' (' + testListData[3] + ')', + 'Missing' + ' (' + testListData[4] + ')' + ] + }, + options: { + animation: { + animateScale: true, + easing: 'easeOutBounce' + }, + legend: { + position: 'bottom', + } + } + }); + + updateChartHeight(); + } +} + +function updateChartHeight() { + $('#tests-summary div .panel-body').height($('#structure-summary div .panel-body').height()); + // $('canvas#tests-summary-chart').height($('#structure-summary div .panel-body').height() - 30); + $('canvas#tests-summary-chart').width('100%'); + // chart.reset(); + if (chart) { + chart.update({ + duration: 800, + easing: 'easeOutBounce' + }); + } +} + +function getTestlistData(data) { + var testData = [0, 0, 0, 0, 0]; + + Object.keys(data).forEach(function (test) { + data[test].forEach(function (item) { + if (item[5] === 0) { + testData[0]++; //passed + } else if (item[5] === 1) { + testData[1]++; //warning + } else if (item[5] === 4) { + testData[4]++; //missing + } else if (item[5] === 2 || item[5] === 5) { + testData[2]++; //error + } else if (item[5] === 3) { + testData[3]++; //fatal + } + }); + }); + return testData; +} + +function getSum(total, num) { + return total + num; +} + +function initializeData() { + columnDefs = [ + { + headerName: 'Coverage Type', + headerTooltip: 'Coverage Type', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + sort: 'asc', + minWidth: 150, width: 150, + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left' + }, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + if (params.value == 'Covergroups' && GLOBAL_JSON.hasOwnProperty('cvg_n_files') && GLOBAL_JSON.cvg_n_files > 0) { + return '' + params.value + ''; + } else if (params.value == 'Assertions' && GLOBAL_JSON.hasOwnProperty('assert_n_files') && GLOBAL_JSON.assert_n_files > 0) { + return '' + params.value + ''; + } else if (params.value == 'Directives' && GLOBAL_JSON.hasOwnProperty('direct_n_files') && GLOBAL_JSON.direct_n_files > 0) { + return '' + params.value + ''; + } else if (params.value == 'Power Aware Checks' && GLOBAL_JSON.hasOwnProperty('assert_n_files') && GLOBAL_JSON.assert_n_files > 0) { + return '' + params.value + ''; + } else if (params.value == 'Power Aware Covergroups' && GLOBAL_JSON.hasOwnProperty('cvg_n_files') && GLOBAL_JSON.cvg_n_files > 0) { + return '' + params.value + ''; + } else { + return params.value; + } + }, + suppressCount: true + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + } + }, + { + headerName: 'Bins', + headerTooltip: 'bins', + field: 'bins', + tooltipField: 'bins', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + if ((typeof params.data.cp === 'string')) { //In case of Exclusions + return '-'; + } else { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + } + }, + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hit', + filter: 'number', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + if ((typeof params.data.cp === 'string')) { //In case of Exclusions + return '-'; + } else { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + } + }, + ]; + + if (!(GLOBAL_JSON.hasOwnProperty('nomissing') && GLOBAL_JSON.nomissing)) { + columnDefs.push( + { + headerName: 'Misses', + headerTooltip: 'Misses', + field: 'miss', + filter: 'number', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + if ((typeof params.data.cp === 'string')) { //In case of Exclusions + return '-'; + } else { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + } + }); + } + + if (isShowExcluded) { + columnDefs.push( + { + headerName: 'Excluded', + headerTooltip: 'Excluded', + field: 'exclude', + filter: 'number', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + } + }); + } + + columnDefs.push( + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'cp', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + if ((typeof params.data.cp === 'string')) { //In case of Exclusions + return 'Excluded'; + } else { + return '' + ((isValueNa(params)) ? 'na' : (isValueUndefined(params)) ? '-' : params.value + '%') + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return typeof params.data.cp === 'string' || isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + } + } + } + ); + + structureColumnDefs = [ + { + headerName: 'Instance', + headerTooltip: 'Instance', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + minWidth: 150, width: 150, + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left' + }, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + return '' + params.value.split('/').pop() + ''; + }, + suppressCount: true + } + }, + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'cp', + tooltipField: 'cp', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + return (isValueNa(params)) ? 'na' : (isValueUndefined(params)) ? '-' : ((isValueExcluded(params)) ? 'Excluded' : (params.value + '%')); + + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return isValueExcluded(params); //In case of Exclusions + }, + } + } + ]; +} diff --git a/covhtmlreport/scripts/cvg.js b/covhtmlreport/scripts/cvg.js new file mode 100644 index 000000000..6baece67d --- /dev/null +++ b/covhtmlreport/scripts/cvg.js @@ -0,0 +1,1123 @@ +/* global $, document, window, getPageTemplate, createDataGridInstance, GLOBAL_JSON, parseUrl, adjustPrecision, updateProgressBarLoader,loadJsonFile, updateUrlHash, createPanel, hitsRenderer, headerTemplate, urlParams, pageName, queryUrlParamsByPrefix, updateUrlParams, gridSelectNode, clearUrlParamsByPrefix, gridParams, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueExcluded */ +/* exported processCovergroupsData, processCoverpointsData, closeDetails */ + +'use strict'; + +var startDateCvg; +var startDateCvgDetails; +var timeDiffCvg; +var timeDiffCvgDetails; + +var cvgPageSize = 25; +var detailsPageSize = 10; +var dataObj = {}; +var cDataObj = {}; +var nodeParams; + +var reportType; +var reportScope = ''; +var isPA; +var isPACombined; +var isShowExcluded; +var isPAInstance; +var cvgColumnDefs; +var cvgSummaryColumnDefs; +var cvgCrossesColumnDefs; +var cvgPointsColumnDefs; + +var consolidatedView; +var consolidatedViewType; +var totalJsonFilesCount = 1; +var jsonFilesCount = 1; +var isDataLoaded = false; +var isAllDataLoaded = false; +var firstrendering = true; + +var gridOptions; +var gridOptionsDetails = {}; + +var cvgOpts = {}; +var tree; +var isNoCvgBinEnabled = false; + +var cvgUrlParams; +var coverpointsUrlParams; +var crossesUrlParams; +var contribution = { + 1: 'Does not contribute to coverage as weight is 0', + 2: 'Does not contribute to coverage as the item is empty', + 3: 'Does not contribute to coverage as the item is marked as ungradable', +}; + +var COVERGROUPS_IDs = { + COVERGROUP_TYPE: 1, + COVERGROUP_INSTANCE: 2, + COVERPOINT: 4, + CROSS: 8, +}; + +var COVERGROUPS_TYPEs = { + 1: 'cvgType', + 2: 'cvgInstance', + 4: 'coverpoint', + 8: 'cross' +}; + +var TYPE = { + DU: 0, + INSTANCE: 1, + BOTH: 2 +}; + +var PREFIX = { + COVERGROUP: 'cg', + COVERPOINT: 'cpp', + CROSS: 'c', + GOOD_BINS: 'bg', + BAD_BINS: 'bb' +}; +var cvgPageUrl = pageName.g; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + $('[data-toggle="tooltip"]').tooltip(); + + startDateCvg = new Date(); + + noCvgBinsSwitchEnabled(); + // Adding another contribution reason Here as it depends on GLOBAL_JSON + contribution['4'] ='Uncovered bins are not printed for this item as it has huge number of bins (exceeds ' + GLOBAL_JSON.maxNumberOfCrossBins +' bins)'; + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + isPA = (GLOBAL_JSON.hasOwnProperty('pa') && GLOBAL_JSON.pa); + isPACombined = (GLOBAL_JSON.hasOwnProperty('paCombined') && GLOBAL_JSON.paCombined ); + isShowExcluded = (GLOBAL_JSON.hasOwnProperty('showexcluded') && GLOBAL_JSON.showexcluded); + // parse url + urlParams = parseUrl(); + if ((consolidatedView = !urlParams.hasOwnProperty('s'))) { + consolidatedViewType = (urlParams.type === 'inst') ? TYPE.INSTANCE : TYPE.DU; + var fieldName = 'cvg_n_files'; + if (GLOBAL_JSON.hasOwnProperty(fieldName)) { + totalJsonFilesCount = GLOBAL_JSON[fieldName]; + } + } + + // update url hash + updateUrlHash(); + + cvgUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.COVERGROUP, { + pageUrl: cvgPageUrl, + pageSize: cvgPageSize + }); + + // initialize dataGrid data + initializeData(); + + window.addEventListener('message', receiveMessage, false); + + // load json files + loadJsonFile('g' + (consolidatedView ? '1' : urlParams.f)); +}); + +function noCvgBinsSwitchEnabled() { + if (GLOBAL_JSON.hasOwnProperty('commandargs')) { + GLOBAL_JSON.commandargs.forEach(function(cmd) { + if (cmd === '-nocvgbin') { + isNoCvgBinEnabled = true; + } + }); + } +} + +function receiveMessage(event) { + if (event.data.qTarget === 'cvg') { + if (event.data.qAction === 'replaceState') { + urlParams = updateUrlParams(event.data.urlParams, cvgPageUrl); + } else if (event.data.qAction === 'updateBinsFrameHeight') { + var height = event.data.height.substr(0, event.data.height.length - 2); + height = parseInt(height) + 50; + $('#cvgBins').height(height); + } + } +} + +function processCovergroupsData(g_data) { + var instanceName; + var rowData = []; + + if (consolidatedView) { + $.extend(dataObj, g_data); + + isDataLoaded = (jsonFilesCount == 1); + isAllDataLoaded = ( totalJsonFilesCount == 1 || jsonFilesCount == totalJsonFilesCount); + + if (jsonFilesCount < totalJsonFilesCount) { + loadJsonFile('g' + (++jsonFilesCount)); + } + + if (!(isDataLoaded && isAllDataLoaded)) { + updateProgressBarLoader((jsonFilesCount / totalJsonFilesCount * 100), '#progress-bar-loading'); + } + } else { + dataObj[urlParams.s] = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj[urlParams.s].cvgs, g_data[urlParams.s + '_sub'].cvgs); + } + } + instanceName = (urlParams.hasOwnProperty('type') && urlParams.hasOwnProperty('pr') && urlParams.type === 'du') ? urlParams.pr : dataObj[urlParams.s].pr; + isDataLoaded = true; + } + + if (isDataLoaded) { + + if (urlParams.hasOwnProperty('pg') && urlParams.pg == 1) { + reportType = ' Power Aware'; + reportScope = ' Instance'; + var newUrlParams = {}; + newUrlParams['ty'] = 4; + isPAInstance = true; + urlParams = updateUrlParams(newUrlParams, cvgPageUrl); + } else { + reportType = ' Covergroups'; + } + + topPageDescription(instanceName); + + $('#page-body').append(getTemplate('cvg')); + var panelBodyId = createPanel('#cvgPanel', reportType + reportScope + ' Coverage', urlParams.cp); + $('#' + panelBodyId).append('
    '); + rowData = getData(dataObj); + initializeData('cvg', cvgOpts); + gridOptions = createDataGridInstance('cvgGrid', cvgColumnDefs, rowData, { + isTree: tree, + urlParams: cvgUrlParams, + rowSelection: 'single', + callback: function(firstNodeIndex) { + var rowId; + if (urlParams.hasOwnProperty(PREFIX.COVERGROUP + '_filter')) { + var selectItem = urlParams[PREFIX.COVERGROUP + '_filter'].split(',').pop(); + var lastRowIndex = gridOptions.api.getDisplayedRowCount() - 1; + var rowIndex = 0; + while (rowIndex <= lastRowIndex) { + var node = gridOptions.api.getDisplayedRowAtIndex(rowIndex); + if(node.data.name === selectItem) { + rowId = node.id; + break; + } + rowIndex ++; + } + } + if(rowId === undefined ) { + rowId = urlParams.hasOwnProperty(PREFIX.COVERGROUP) ? (urlParams.hasOwnProperty(PREFIX.COVERGROUP + '_c') ? urlParams[PREFIX.COVERGROUP + '_c'] : urlParams[PREFIX.COVERGROUP]) : firstNodeIndex; + } + $('a[name="' + rowId + '"]')[0].click(); + gridSelectNode(gridOptions, rowId); + } + }, false); + + + if (consolidatedView && !isAllDataLoaded) { + $('.progress-bar-loader').css('display', 'initial'); + updateProgressBarLoader((jsonFilesCount / totalJsonFilesCount * 100), '#progress-bar-loading'); + } + } + + if (consolidatedView && isAllDataLoaded && (totalJsonFilesCount != 1)) { + gridOptions.api.setRowData(getData(dataObj)); + $('.progress-bar-loader').css('display', 'none'); + } + + if (urlParams.p) { + timeDiffCvg = new Date() - startDateCvg; + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + reportType + reportScope + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getData(dataObj) { + var data = []; + var children = []; + for (var key in dataObj) { + //chech the Key && Extra condition for the viewcov mode to remove the istance data in case of navigation by DU + if (dataObj.hasOwnProperty(key) && !( dataObj[key].ty == 2 && GLOBAL_JSON.command === 'coverage' && urlParams.type === 'du')) { + var element = dataObj[key]; + if (!consolidatedView || (consolidatedView && (element.ty == consolidatedViewType || element.ty == TYPE.BOTH || element.ty == 4))) { + if (element.hasOwnProperty('cvgs')) { + var cvgTypes = element.cvgs.filter(function (e) { + return ( (!(urlParams.pg && urlParams.pg ==1 ) && e.h[1] === COVERGROUPS_IDs.COVERGROUP_TYPE) || // Covergroup + ( (urlParams.pg && urlParams.pg ==1 ) && e.h[1] === COVERGROUPS_IDs.COVERGROUP_INSTANCE && element.hasOwnProperty('ty') && element.ty == 4) + ); + }); // Covergroup Instance in case of PA Report + cvgTypes.forEach(function(type) { + + var extraData = { + type: element.ty, + consolidatedViewType: consolidatedViewType, + pr: element.pr, + dun: element.dun, + covType: 'cvg', + parentName: type.h[0] + }; + + extraData.dataType = COVERGROUPS_IDs.COVERGROUP_TYPE; + data.push(constructDataObj(type, extraData)); + children = []; + + var cvgInstances = element.cvgs.filter(function (e) { return e.h[4] === type.h[3]; }); + cvgInstances.forEach(function(instance) { + extraData.dataType = COVERGROUPS_IDs.COVERGROUP_INSTANCE; + children.push(constructDataObj(instance, extraData)); + }); + + if (children.length > 0) { + data[data.length - 1].group = true; + data[data.length - 1].children = children; + tree = true; + } + }); + } + } + } + } + + return data; +} + + +function constructDataObj(cvg, extraData) { + + var obj = { + name: cvg.h[1] === 1 && urlParams.hasOwnProperty('type') && urlParams.type === 'du' ? ( getCovergroupDUName(cvg.h[0], cvg.h[1], extraData)) : (extraData && extraData.parentName != cvg.h[0] ? (extraData.parentName + '/' + cvg.h[0]) : cvg.h[0]), + h: cvg.h, + type: cvg.h[1], + cf: cvg.h[2], + pr: parent, + detailsId: cvg.h[3], + bins: cvg.cov[0], + hits: cvg.cov[1], + misses: cvg.cov[0] - cvg.cov[1], + hitPercentage: (cvg.cov[0] == 0) ? 100 : adjustPrecision(cvg.cov[1] / cvg.cov[0] * 100), + exclude: isShowExcluded? cvg.cov[3] : -1, + coverage: cvg.cov[2], + goal: cvg.opts.goal, + goalp: (cvg.cov[2] > cvg.opts.goal) ? '100' : adjustPrecision((cvg.cov[2] / cvg.opts.goal) * 100), + opts: cvg.opts, + c: isShowExcluded? cvg.cov[4] : cvg.cov[3], //Exclusion Comment if exist + sc: cvg.sc // Source if exists + }; + + if (extraData && extraData.parentName != cvg.h[0]) { + obj['childName'] = cvg.h[0]; + } + + if (extraData && cvg.h.length == 6) { + obj.contribution = true; + } else if (!extraData && cvg.h.length == 5) { + obj.contribution = true; + } + //delete cvg.opts.goal; + + for (var opt in cvg.opts) { + if (opt !== 'goal') { + if (cvg.opts.hasOwnProperty(opt)) { + obj[opt.replace(/_/g, '')] = cvg.opts[opt]; + cvgOpts[opt] = cvg.opts[opt]; + } + } + } + + if (cvg.hasOwnProperty('cvps')) { + obj.cvps = cvg.cvps; + } + + return obj; +} + +function getCovergroupDUName(Name, type, extraData) { + + var pr = extraData.pr.replace('::', '/'); + var duName = extraData.dun ? Name.replace(pr, extraData.dun) : Name; + + if (duName.indexOf('::') === -1 && type === 1 ) { // replace the first / to :: in case of covergroup type + duName = duName.replace('/', '::'); + } + return duName; + +} + +function constructSummaryData(cvgData, hasCoverpoints, hasCrosses) { + var data = []; + + // check if no coverpoints exits + if (hasCoverpoints) { + data.push({ + name: (urlParams.pg && urlParams.pg == 1) ? 'Power Aware States' : 'Coverpoints', + bins: cvgData[0], + hits: cvgData[1], + exclude: isShowExcluded? cvgData[4] : -1, + hitPercentage: adjustPrecision(cvgData[1] / cvgData[0] * 100) + }); + } + + // check if no crosses exits + if (hasCrosses) { + data.push({ + name: 'Crosses', + bins: cvgData[2], + hits: cvgData[3], + exclude: isShowExcluded? cvgData[5] : -1, + hitPercentage: adjustPrecision(cvgData[3] / cvgData[2] * 100) + }); + } + + return data; +} + +function closeDetails() { + // $('#cvg').removeClass('col-xs-5 not-animated fadeInRightBig'); + // $('#cvg').addClass('col-xs-12 not-animated fadeInLeft'); + $('#details-container').remove(); +} + +function NameCellRenderer() {} +NameCellRenderer.prototype.init = function(params) { + var cvgId; + if (params.node.hasOwnProperty('parent')) { + cvgId = PREFIX.COVERGROUP + '=' + params.node.parent.id + '&' + PREFIX.COVERGROUP + '_c=' + params.node.id; + } else { + cvgId = PREFIX.COVERGROUP + '=' + params.node.id; + + } + + var renderDetails = this.renderDetails; + var urlQueryParams = (typeof params.data.cf !== 'undefined' && !isNoCvgBinEnabled) ? ('?f=' + params.data.cf + '&s=' + params.data.detailsId + '&cp=' + params.data.coverage + (urlParams.ty ? ('&ty=' + urlParams.ty) : '' ) + (urlParams.type ? ('&type=' + urlParams.type) : '' )) : undefined; + var href = (params.data.type == COVERGROUPS_IDs.COVERPOINT || params.data.type == COVERGROUPS_IDs.CROSS) ? ((typeof urlQueryParams !== 'undefined') ? ('cvgBins.html' + urlQueryParams) : undefined) : (cvgPageUrl + cvgId + ((urlParams.f && urlParams.s ) ? ('&f=' + urlParams.f + '&s=' + urlParams.s) : '') + '&cp=' + urlParams.cp + (urlParams.ty ? ('&ty=' + urlParams.ty) : '') + (urlParams.type ? ('&type=' + urlParams.type) : '' ) ); + var cellValue = params.data.childName ? params.data.childName : params.value; + var hrefBins = href; + + var cellHTMLTemplate = + '
    ' + + ((typeof href === 'undefined') ? ('' + cellValue + '') : ('' + cellValue + '')); + + + if ((params.data.type == COVERGROUPS_IDs.COVERPOINT || params.data.type == COVERGROUPS_IDs.CROSS) && params.data.h.length == 5) { + cellHTMLTemplate += + ' ' + + '' + + ''; + } else if ((params.data.type == COVERGROUPS_IDs.COVERGROUP_TYPE || params.data.type == COVERGROUPS_IDs.COVERGROUP_INSTANCE) && params.data.h.length == 6) { + cellHTMLTemplate += + ' ' + + '' + + ''; + } + + cellHTMLTemplate += '
    '; + + var cellTemplate = $(cellHTMLTemplate); + + var cellTemplateObj = $(cellTemplate); + // $('[data-toggle="tooltip"]').tooltip(); + + // handling details + var details = cellTemplateObj[0].querySelector('a#' + COVERGROUPS_TYPEs[params.data.type] + '_a' + params.node.id); + if (details) { + details.addEventListener('click', function (e) { + e.preventDefault(); + startDateCvgDetails = new Date(); + + if (params.data.type === COVERGROUPS_IDs.COVERPOINT || params.data.type === COVERGROUPS_IDs.CROSS) { + switch (e.which) { + case 1: + var newUrlParams = {}; + newUrlParams[params.data.type === COVERGROUPS_IDs.CROSS ? PREFIX.CROSS : PREFIX.COVERPOINT] = params.node.id; + + delete urlParams[params.data.type === COVERGROUPS_IDs.COVERPOINT ? PREFIX.CROSS : PREFIX.COVERPOINT]; + + var currentGridOptions = gridOptionsDetails[params.data.type === COVERGROUPS_IDs.COVERPOINT ? 'crosses' : 'coverPoints']; + if (typeof currentGridOptions !== 'undefined') { + currentGridOptions.api.deselectAll(); + } + + urlParams = updateUrlParams(newUrlParams, cvgPageUrl); + + if (typeof href !== 'undefined') { + + var binUrlParams = getBinsUrlParams(); + href = hrefBins + '&dt=' + (params.data.type === COVERGROUPS_IDs.COVERPOINT ? 'cp' : 'cc') + (urlParams.pg ? ('&pg=' + urlParams.pg) : ''); + if (params.data.sc) { // Adding source file data + href += '&sf=' + params.data.sc[0] + '&l=' + params.data.sc[1]; + } + $('#frameCont').remove(); + $('.tabs').after('

    Bins

    '); + $('html, body').animate({ + scrollTop: ($('#frameCont').offset().top + 100) + }, 500); + } + break; + case 2: + if (typeof href !== 'undefined') { + if (!window.open(href, '_blank')) { + alert('Please allow popups to open page in a new tab'); + } + } + break; + } + } else { + gridSelectNode(params.node.gridOptionsWrapper.gridOptions, params.node.id); + if (e.which == 1) { + // Remove old instances of summary, crosses and coverpoints tables + for (var gridOptions in gridOptionsDetails) { + if (gridOptionsDetails.hasOwnProperty(gridOptions)) { + if (typeof gridOptionsDetails[gridOptions] !== 'undefined') { + getCvgCommonUrlParams(urlParams, gridOptions == 'crosses' ? PREFIX.CROSS : PREFIX.COVERPOINT); + gridOptionsDetails[gridOptions].api.destroy(); + gridOptionsDetails[gridOptions] = undefined; + } + } + } + if (isPAInstance && dataObj[urlParams.s]) { + var infoPageTemplate = + '
    ' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    Power Aware Type ' + dataObj[urlParams.s]['cvgs'][0]['opts']['html_report_painfo_type'] + '
    Power Aware Path ' + dataObj[urlParams.s]['cvgs'][0]['opts']['html_report_painfo_path'] + '
    ' + + '
    '; + } + + + var headerTemplate = '
    ' + reportType ; + if (e.currentTarget.id.indexOf('cvgType') !== -1) { + headerTemplate += ' type'; + } else if (e.currentTarget.id.indexOf('cvgInstance') !== -1) { + headerTemplate += ' instance'; + } + headerTemplate += '   '; + if (params.data.sc) { // Source file Exists + headerTemplate += '' + (e.currentTarget.innerText || e.currentTarget.innerHTML) + '' + } else { + headerTemplate += (e.currentTarget.innerText || e.currentTarget.innerHTML) + } + headerTemplate +='

    '; + headerTemplate += '
    '; + $('.ag-row').removeClass('clicked-row'); + $(e.path[5]).addClass('clicked-row'); + $('#details-container').remove(); + $('#cvg-container').append(getTemplate('details')); + $('#details-container .row').prepend( headerTemplate); + if (infoPageTemplate) { + $('#details-container .row').prepend( infoPageTemplate); + } + + if ($('#cvg').hasClass('col-xs-12')) { + $('#details-container').addClass('col-xs-12 not-animated fadeInDown'); + } + $('#details-container').css({'display': ''}); + + + renderDetails(params); + if (firstrendering) { + firstrendering = false; + } else { + $('html, body').animate({ + scrollTop: ($('#details-container').offset().top + 100) + }, 500); + } + } + } + }); + } + + this.eGui = cellTemplateObj[0]; +}; + +NameCellRenderer.prototype.getGui = function() { + return this.eGui; +}; + +NameCellRenderer.prototype.renderDetails = function(params) { + nodeParams = params; + + var newUrlParams = {}; + + if ( typeof params.node.parent !== 'undefined') { + newUrlParams[PREFIX.COVERGROUP] = params.node.parent.id; + newUrlParams[PREFIX.COVERGROUP + '_c'] = params.node.id; + } else { + newUrlParams[PREFIX.COVERGROUP] = params.node.id; + if (urlParams.hasOwnProperty(PREFIX.COVERGROUP + '_c')) { + delete urlParams[PREFIX.COVERGROUP + '_c']; + } + } + urlParams = updateUrlParams(newUrlParams, cvgPageUrl); + + if (cDataObj[nodeParams.data.cf] == undefined) { + loadJsonFile('c' + nodeParams.data.cf); + } else { + processCoverpointsData(cDataObj[nodeParams.data.cf]); + } +}; + +function processCoverpointsData (g_data) { + var data; + var stack = []; + var coverPointsData = []; + var crossesData = []; + + cDataObj[nodeParams.data.cf] = g_data; + data = cDataObj[nodeParams.data.cf]; + + if (nodeParams.data.type === COVERGROUPS_IDs.COVERGROUP_TYPE || nodeParams.data.type === COVERGROUPS_IDs.COVERGROUP_INSTANCE) { + var node = nodeParams.node; + stack.push(node.data.detailsId); + + while (node.parent) { + node = node.parent; + stack.push(node.data.detailsId); + } + + while (stack.length) { + data = data[stack.pop()]; + } + } + + // coverPoints + cvgOpts = {}; + data.cvpc.forEach(function(element) { + if (element.h[1] == COVERGROUPS_IDs.COVERPOINT) { + coverPointsData.push(constructDataObj(element)); + } + }); + var coverpointCvgOpts = cvgOpts; + + // crosses + cvgOpts = {}; + data.cvpc.forEach(function(element) { + if (element.h[1] == COVERGROUPS_IDs.CROSS) { + crossesData.push(constructDataObj(element)); + } + }); + var crossCvgOpts = cvgOpts; + $('#summaryGrid').empty(); // remove any renderd summary grid + $('#summaryGrid-toolbar').remove();// remove any renderd summary grid toolbar + var summaryData = constructSummaryData(data.cvgdata, coverPointsData.length, crossesData.length); + + gridOptionsDetails.summary = createDataGridInstance('summaryGrid', cvgSummaryColumnDefs, summaryData, { + isTree: false + }); + + $('.tabs-container').remove(); // remove any renderd tabs + $('#details-container').append(getTemplate('container')); + $('.nav-tabs li:first').addClass('active'); + $('#summary').addClass('active'); + $('#summary').append('
    '); + + var fTab; + if (coverPointsData.length != 0) { + initializeData('cvp', coverpointCvgOpts); + $('.nav-tabs').append(getTemplate('tab', 'coverPoints', (urlParams.pg && urlParams.pg == 1) ? 'power aware states' : 'coverpoints')); + $('.tabs').append(getTemplate('tabCont', 'coverPoints')); + $('#coverPoints').append(getTemplate('grid', 'coverPoints')); + $('#coverPoints').append('
    '); + + coverpointsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.COVERPOINT, { + pageUrl: cvgPageUrl, + pageSize: detailsPageSize + }); + + gridOptionsDetails.coverPoints = createDataGridInstance('coverPointsGrid', cvgPointsColumnDefs, coverPointsData, { + isTree: false, + urlParams: coverpointsUrlParams, + rowSelection: 'single', + callback: function() { + if (urlParams.hasOwnProperty(PREFIX.COVERPOINT)) { + $('a#coverpoint_a' + urlParams[PREFIX.COVERPOINT] + '[name="' + urlParams[PREFIX.COVERPOINT] + '"]')[0].click(); + } + } + }, false , true); + fTab = 'coverPoints'; + } + + if (crossesData.length != 0) { + initializeData('cross', crossCvgOpts); + $('.nav-tabs').append(getTemplate('tab', 'crosses', 'crosses')); + $('.tabs').append(getTemplate('tabCont', 'crosses')); + $('#crosses').append(getTemplate('grid', 'crosses')); + $('#crosses').append('
    '); + + crossesUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.CROSS, { + pageUrl: cvgPageUrl, + pageSize: detailsPageSize + }); + + gridOptionsDetails.crosses = createDataGridInstance('crossesGrid', cvgCrossesColumnDefs, crossesData, { + isTree: false, + urlParams: crossesUrlParams, + rowSelection: 'single', + callback: function() { + if (urlParams.hasOwnProperty(PREFIX.CROSS)) { + $('a#cross_a' + urlParams[PREFIX.CROSS] + '[name="' + urlParams[PREFIX.CROSS] + '"]')[0].click(); + } + } + }, false , true); + + if (urlParams.hasOwnProperty(PREFIX.CROSS)) { + fTab = 'crosses'; + } + } + + $('.nav-tabs li:nth(0)').addClass('active'); + if (fTab === 'coverPoints') { + $('#' + fTab).addClass('active'); + } else { + $('#crosses').addClass('active'); + if (coverPointsData.length != 0) { + $('.nav-tabs li:nth(0)').removeClass('active'); + $('.nav-tabs li:nth(1)').addClass('active'); + } + } + + if (urlParams.p) { + timeDiffCvgDetails = new Date() - startDateCvgDetails; + console.save(urlParams.p + ' ,Total Loading time ' + ((timeDiffCvg || 0) + timeDiffCvgDetails), 'z_console.txt'); + } +} + +function getBinsUrlParams() { + var params = ''; + + var goodBinsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.GOOD_BINS, { + options: { + skipParsingSorting: true, + skipParsingFiltering: true, + } + }); + + var badBinsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.BAD_BINS, { + options: { + skipParsingSorting: true, + skipParsingFiltering: true, + } + }); + + gridParams.forEach(function(param) { + if (goodBinsUrlParams && goodBinsUrlParams.hasOwnProperty(param) && goodBinsUrlParams[param] !== 'undefined' && goodBinsUrlParams[param] !== '') { + params += PREFIX.GOOD_BINS + '_' + param + '=' + goodBinsUrlParams[param] + '&'; + } + + if (badBinsUrlParams && badBinsUrlParams.hasOwnProperty(param) && badBinsUrlParams[param] !== 'undefined' && badBinsUrlParams[param] !== '') { + params += PREFIX.BAD_BINS + '_' + param + '=' + badBinsUrlParams[param] + '&'; + } + }); + + params = params.substr(0, params.length - 1); + + return params; +} + +function getTemplate(tempId, tabId, title) { + var templates = { + 'cvg': + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ', + 'details': + '')) + ); + + var cellTemplateObj = $(cellTemplate); + + //Icon tooltip handler + // if ((exclusion.hasComment && exclusion.excludedStatus) || exclusion.hasReason) { + // var toolTip = cellTemplateObj[0].querySelector('#item' + params.rowIndex); + // toolTip.addEventListener('click', function (e) { + // $('#hoverTableH').remove(); + // var hoverTableTemplate = + // '
    ' + + // '' ; + // //Incase of exclusion comment + // if ((exclusion.hasComment && exclusion.excludedStatus)) { + // hoverTableTemplate += ''; + // hoverTableTemplate += ''; + // } + // //Incase of exclusion reason + // if (GLOBAL_JSON.exclReason[params.value] ) { + // hoverTableTemplate += ''; + // hoverTableTemplate += ''; + // } + + // hoverTableTemplate += + // '
    Exclusion Comment
    ' + (params.data.c ? params.data.c : params.data.exc ) + '
    Exclusion Reason
    ' + GLOBAL_JSON.exclReason[params.value] + '
    '; + // //Adjusting hoverTable position + // $('#page-body').append(hoverTableTemplate); + // $('#hoverTableH').css({ + // position: 'fixed', + // top: e.clientY - ($('.wellEx').outerHeight() / 2) + 4, + // left: e.clientX + 10, + // display: 'block !important' + // }); + // }); + + // toolTip.addEventListener('mouseleave', function () { + // $('#hoverTableH').hide(); + // }); + // } + + return cellTemplateObj[0]; +} +//Setting file number, scope, name. +function showTestHitData(thd) { + testhitInfo = { + fileNum: thd.fileNum, + scope: thd.scope, + fieldName: thd.fieldName + }; + + loadTests(); +} +//Load Tests' json if it's not loaded +function loadTests () { + if ( typeof tests === 'undefined') { + loadJsonFile('tests'); + } else { + loadTesthitData(); + } +} + +function processTestsData(g_data) { + tests = g_data; + loadTesthitData(); +} + +function loadTesthitData() { + if ( typeof testhitFiles[testhitInfo.fileNum] === 'undefined') { + loadJsonFile('thit' + testhitInfo.fileNum); + } else { + constructTestHitDataModal(); + } +} + +function processTestHitData(g_data) { + testhitFiles[testhitInfo.fileNum] = g_data; + constructTestHitDataModal(); +} +//Constructing Testhit Data Modal +function constructTestHitDataModal() { + var id = 'testhitdata-modal'; + $('#testhitdata').remove(); + $('body').append(getTesthitDataTemplate(id, testhitInfo.fieldName)); + constructTesthitData(id, testhitFiles[testhitInfo.fileNum][testhitInfo.scope]); + $('#' + id).modal(); +} + +//Testhit Data Modal Template +function getTesthitDataTemplate(id, title) { + var template; + + template = + '
    ' + + '' + + '
    '; + + return template; +} +//Constructing Testhit Data in source editor +function thdModal(e) { + var exclId = e.path[1].attributes.excl; + var scope = exclId.nodeValue.split(',').map(Number); + var lineN = Number(e.path[1].attributes.line.nodeValue) + 1; + var itemN = Number(e.path[1].attributes[3].nodeValue); + var thData = dataObj.stmts[scope[0]].cov[scope[1]].i[scope[2]].th; + if (thData) { + showTestHitData({fileNum: thData[STATEMENTS_SRC.THIT_FILE_NUM], scope: thData[STATEMENTS_SRC.THIT_SCOPE], fieldName: ('Line: ' + lineN + ' Item:' + itemN) }); + } +} + +function constructTesthitData(id, dataArr) { + var isPreserveCount = Array.isArray(dataArr[0]); + + var columnDefs = [ + { + headerName: 'Testname', + headerTooltip: 'Testname', + headerClass: 'justify-left', + field: 'name', + sort: 'asc', + minWidth: 300, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + } + } + ]; + if (isPreserveCount) { + columnDefs.push({ + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120 + }); + } + + var rowData = []; + // construct RowData + dataArr.forEach(function(data) { + var row = {}; + + if (isPreserveCount) { + row.name = tests[data[0]]; + row.hits = data[1]; + } else { + row.name = tests[data]; + } + + rowData.push(row); + }); + + createDataGridInstance(id + 'Grid', columnDefs, rowData); +} + +function HTMLEncode(str) { + if(str){ + var i = str.length, + aRet = []; + + while (i--) { + var iC = str[i].charCodeAt(); + if (iC < 65 || iC > 127 || (iC>90 && iC<97)) { + aRet[i] = '&#'+iC+';'; + } else { + aRet[i] = str[i]; + } + } + return aRet.join(''); +} +else + return ""; +} diff --git a/covhtmlreport/scripts/shared/testPlanService.js b/covhtmlreport/scripts/shared/testPlanService.js new file mode 100644 index 000000000..62369eb9b --- /dev/null +++ b/covhtmlreport/scripts/shared/testPlanService.js @@ -0,0 +1,453 @@ +'use strict'; + +var startDate; +var testplanColumnDefs; +var pageSize = 25; +var tpUrlParams; +var urlParams; + +var TESTPLAN_ITEM = { + BINS: 0, + HITS: 1, + COVERAGE: 2, + GOALP: 3, + TYPE: 4, + WEIGHT: 5, + SECTION_NAME: 6, + GOAL: 7, + SCOPE: 8, + FILE: 9, + SUB_SCOPE: 10, + LEVEL: 8, + SECTION_NUMBER: 9, + LINKSTATUS: 10 +}; +var parentExc; + +var TESTPLAN_TYPE = { + 'stmt bin': 'Statement Bin', + 'expr bin': 'Expression Bin', + 'cond bin': 'Condition Bin', + 'toggle bin': 'Toggle Bin', + 'branch bin': 'Branch Bin', + 'fsm bin': 'FSM Bin', + 'cover bin': 'Cover Directive Bin', + 'assert bin': 'Assertion Fail Bin', + 'pass bin': 'Assertion Pass Bin', +}; + +var PREFIX = { + TEST_PLAN: 'tp' +}; + + +function buildTree (tree) { + var map = {}, parents = [], i; + for (i = 0; i < tree.length; i += 1) { + map[tree[i].id] = i; + if (tree[i].parent !== '' && tree[map[tree[i].parent]]) { + if (!(tree[map[tree[i].parent]].hasOwnProperty('children'))) { + tree[map[tree[i].parent]].children = []; + tree[map[tree[i].parent]].group = true; + } + tree[map[tree[i].parent]].children.push(tree[i]); + } else { + tree[i].children = []; + tree[i].group = true; + parents.push(tree[i]); + } + } + return parents; +} + + +function getTestPlanRowData(data, mode) { + urlParams = parseUrl(); + var testPlanTree = MapTPData(data.tp , mode , true); + return testPlanTree; +} + + + + +function MapTPData (array , mode , firstParent) { + var parentId, Idn; + let result = []; + array.forEach(function (testPlanItem, itemIndex) { + if ((testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE]) === 'testplan') { + var index = (testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER]).lastIndexOf('.'); + Idn = testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER]; + + // Check the parent Id to be Empty ('') if first element in the Data and there is no dots ('.') in the section number + // Check the parent Id to be (0) if there is no dots ('.') in the section number + parentId = index == -1 ? Idn == 0 ? '' : 0 : (testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER]).slice(0, index); + } + + var rowItems = { + bins: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.BINS], + hits: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.HITS], + coverage: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.COVERAGE], + goal: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.GOAL], + goalP: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.GOALP], + type: (TESTPLAN_TYPE[testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE]]) ? TESTPLAN_TYPE[testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE]] : testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE], + weight: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.WEIGHT], + f: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.FILE], + s: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SCOPE], + fsub: testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SUB_SCOPE], + } ; + + if ((testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE]) === 'testplan') { //Section or SubSection + rowItems.testplan = testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER] + ' ' + testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NAME]; + rowItems.sectionName = testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NAME]; + rowItems.linkStatus = (testPlanItem.fixed_attr_val[TESTPLAN_ITEM.LINKSTATUS] === 1) ? 'Clean' : 'Not Clean'; + rowItems.id = testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER]; + rowItems.parent = parentId; + + if ((testPlanItem).hasOwnProperty('usr_attr')) { + for (var usratt = 0, l = testPlanItem.usr_attr.length; usratt < l; usratt++ ) { + rowItems['usrattr' + Object.keys(testPlanItem.usr_attr[usratt])] = testPlanItem.usr_attr[usratt][Object.keys(testPlanItem.usr_attr[usratt])]; + } + } + } else { + rowItems.testplan = testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NAME]; + rowItems.parent = Idn; + } + + ['coverage', 'goal', 'goalP', 'weight'].forEach(function(covType) { + if (rowItems[covType] == '-') { + delete rowItems[covType]; + } + }); + + + + if (testPlanItem.hasOwnProperty('children') && testPlanItem['children'].length) { + rowItems['children'] = MapTPData(testPlanItem['children'] , mode, false); + if (rowItems['children'].length) { + rowItems.group = true; + } + } + + + if (firstParent) { // First element in the testplan + rowItems.expand = true + firstParent = false; + } + if (urlParams.hasOwnProperty('section') && testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NAME] == urlParams.section) { + rowItems.expand = true; + } + + if (mode === 'summary') // If summary mode we will check only for the section headers + { + if ((testPlanItem.fixed_attr_val[TESTPLAN_ITEM.TYPE]) === 'testplan' && (testPlanItem.fixed_attr_val[TESTPLAN_ITEM.SECTION_NUMBER]).indexOf('.') === -1 ) { + result.push(rowItems); + } + + } else { // Else Add sections and sub sections + result.push(rowItems); + } + }) + return result; +} + +function initializeTestPlanData(usr_attr, mode) { + testplanColumnDefs = [ + { + headerName: 'Testplan Section / Coverage Link', + headerTooltip: 'Testplan Section / Coverage Link', + headerClass: 'justify-left', + field: 'testplan', + tooltipField: 'testplan', + minWidth: 180, width: 250, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left' + }, + expanded: true, + cellRenderer: 'group', + cellRendererParams: { + suppressCount: true, + innerRenderer: function (params) { + if (mode === 'summary') { + return '' + params.value + '' + } else if (params && params.data && params.data.type !== 'testplan' && params.data.type !== 'test' && params.data.type !== 'potential_test' && params.data.f > -1) { + return '' + params.value + ''; + } else { + // Handling Linking testplan to crossbin by replacing "<" and ">" by the corresponding HTML symbols + if (params.data.type === 'cvg bin' && params.value.indexOf('<') > -1 && params.value.indexOf('>') > -1) { + return params.value.replace('<', '<').replace('>', '>') + } else { + + return params.value; + } + + } + } + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + { + headerName: 'Type', + headerTooltip: 'Type', + field: 'type', + tooltipField: 'type', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'text', + headerClass: 'justify-left', + cellStyle: { + 'text-align': 'left' + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + minWidth: 100, width: 100, maxWidth: 100, + filter: 'number', + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + { + headerName: 'Bins', + headerTooltip: 'Bins', + field: 'bins', + tooltipField: 'bins', + minWidth: 100, width: 100, maxWidth: 100, + filter: 'number', + filterParams: { + clearButton: true, + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'coverage', + tooltipField: 'coverage', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if (params.value == 'C') { + return 'Covered'; + } else if (params.value == 'U') { + return 'Uncovered'; + } else if (isValueUndefined(params)) { + return '-'; + } else { + return params.value + '%'; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return params.value === 'na'; + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params) || params.value === 'U'; + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params) || params.value === 'C'; + }, + 'exclusion': function (params) { + return CheckExclusion(params); + }, + } + }, + { + headerName: '% of Goal', + headerTooltip: '% of Goal', + field: 'goalP', + tooltipField: 'goalP', + minWidth: 100, width: 100, maxWidth: 100, + filter: 'number', + cellRenderer: function (params) { + return (typeof params.value !== 'undefined') ? (params.value + '%') : '-'; + }, + cellClassRules: { + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return CheckExclusion(params); + }, + } + }, + { + headerName: 'Goal', + headerTooltip: 'Goal', + field: 'goal', + tooltipField: 'goal', + comparator: gridSortingCustomComparator, + minWidth: 100, width: 100, maxWidth: 100, + filter: 'number', + cellRenderer: function (params) { + return (typeof params.value !== 'undefined') ? (params.value) : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + 'justify-center': function (params) { + return isValueUndefined(params) || params.value === '-'; + }, + } + }, + { + headerName: 'Weight', + headerTooltip: 'Weight', + field: 'weight', + tooltipField: 'weight', + minWidth: 100, width: 100, maxWidth: 100, + filter: 'number', + cellRenderer: function (params) { + return (typeof params.value !== 'undefined') ? Number(params.value) : '-'; + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + { + headerName: 'Link Status', + headerTooltip: 'Link Status', + field: 'linkStatus', + tooltipField: 'linkStatus', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'text', + headerClass: 'justify-left', + cellStyle: { + 'text-align': 'left' + }, + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + }, + }, + ]; + + if (mode != 'summary') { + for (var usratt = 0; usratt < usr_attr.length; usratt++ ) { + testplanColumnDefs.push({ + headerName: usr_attr[usratt], + headerTooltip: usr_attr[usratt], + field: 'usrattr' + usr_attr[usratt], + tooltipField: 'usrattr' + usr_attr[usratt], + minWidth: 120, width: 120, + filter: 'text', + hide: true, + cellStyle: { + 'text-align': 'left' + }, + headerClass: 'justify-left', + cellClassRules: { + 'exclusion': function (params) { + return CheckExclusion(params); + }, + 'justify-right': function (params) { + return (!isNaN(params.value)); + }, + }, + + }); + } + } else { // In case of summary tracker remove unwanted columns + + delete testplanColumnDefs.splice(8, 1); // Remove Hits Column + delete testplanColumnDefs.splice(7, 1); // Remove Hits Column + delete testplanColumnDefs.splice(3, 1); // Remove Hits Column + delete testplanColumnDefs.splice(2, 1); // Remove Hits Column + delete testplanColumnDefs.splice(1, 1); // Remove Type Column + } + +} + +function getTypeFilter(data) { + switch(data.type){ + case 'toggle' : { + var toggle = data.testplan.split('/').pop().split('[')[0]; + return 'tsca_filter=name,contains,' + toggle; + } + case 'cross': + case 'coverpoint': + { + var href = '' + var fullName = data.testplan.split('\\').pop(); + var lastIndex = fullName.lastIndexOf('/'); + var instance = fullName.substr(0, lastIndex); + var cross = fullName.split('/').pop(); + if (instance){ + href+= '&cg_filter=name,contains,' + instance ; + } + if (data.type == 'cross'){ + href += '&cg_c=1&c=1&&c_page=1&c_filter=name,contains,' + cross; + } else { + href += '&cpp_filter=name,contains,' + cross; + } + return href; + } + case 'coverinstance': { + return '&cg_filter=name,equals,' + data.testplan; + } + case 'branch' : { + var lineNumber = data.testplan.split('#')[1]; + return '&br_sort=line,asc&br_filter=line,greaterThan,' + (lineNumber - 1); + } + case 'cond' : + case 'expr' : + { + var lineNumber = data.testplan.split('#')[1]; + return '&ex_filter=line,equals,' + lineNumber; + } + case 'assert': { + return '&a_filter=name,contains,' + data.testplan.split('/').pop(); + } + case 'cover': { + return '&d_filter=name,contains,' + data.testplan.split('/').pop(); + } + } +} + +function CheckExclusion(params) { + var node = params.node; + parentExc = false; + while (node.parent) { + if (!node.parent.data.weight) { + parentExc = true; + break; + } + node = node.parent; + } + return (!params.data.weight || parentExc); +} diff --git a/covhtmlreport/scripts/shared/utils.js b/covhtmlreport/scripts/shared/utils.js new file mode 100644 index 000000000..b5862fbc6 --- /dev/null +++ b/covhtmlreport/scripts/shared/utils.js @@ -0,0 +1,852 @@ +/* exported parseUrl, createDataGridInstance, createPanel, onGridPageSizeChange, gridExportToCsv, onDataGridMenuCheckboxChange, coverageMapper, adjustPrecision, gridExpandCollapseAll, updateProgressBarLoader, loadJsonFile, createCodeMirrorInstance, updateUrlHash, pageName, OVERALL, DULIST, updateMenuSelection, addHitsGutters, addMarkers, jumpToLine, getFileName, BODY_TEMPLATE, checkTpTrIcons, getFileSize, hitsRenderer, processTestsData, processTestHitData, queryUrlParamsByPrefix, getFileExt, headerTemplate, urlParams, escapeAngleBrackets, gridSortingCustomComparator, getPageTemplate, STATEMENTS_SRC, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa, isValueExcluded, isTogglesExtendedValueExcluded */ +/* global $, window, document, parent, location, console, Event, agGrid, GLOBAL_JSON, updateUrlParamsFrame, updateUrlParams, GLOBAL_JSON, g_oCONST */ + +'use strict'; + +/* main routine */ +$(document).ready(function () { + processGlobaljson(); +}); + +/* + * Set of constants + */ +var urlParams = {}; + +var coverageMapper = { + 'a': 'Assertions', + 'b': 'Branches', + 'd': 'Directives', + 'f': 'FSM', + 'fc': 'Conditions', + 'fe': 'Expressions', + 'fs': 'FSM States', + 'ft': 'FSM Transitions', + 'g': 'Covergroups', + 'gb': 'Covergroup Bins', + 's': 'Statements', + 't': 'Toggles', + 'cvpc': 'Coverpoints/Crosses', + 'pc' : 'Power Aware Checks', + 'pg' : 'Power Aware Covergroups', + 'pb' : 'Power Aware Bins', + 'bl' : 'Block Coverage' + // 'tc' : 'Total Coverage', + // 'cp' : 'Total Coverage' +}; + +var pageName = { + 'a': 'assertionsDirectives.html?t=a&', + 'b': 'branches.html?', + 'd': 'assertionsDirectives.html?t=d&', + 'f': 'fsm.html?', + 'fs': 'fsm.html?t=state&', + 'ft': 'fsm.html?t=trans&', + 'fc': 'condExp.html?t=fc&', + 'fe': 'condExp.html?t=fe&', + 'g': 'cvg.html?', + 'gb': 'cvgBins.html?', + 's': 'statements.html?', + 't': 'toggles.html?', + 'pc': 'assertionsDirectives.html?pc=1&t=a&', + 'pg': 'cvg.html?pg=1&', + 'pb': 'cvgBins.html?pg=1&', + 'bl': 'blockCoverage.html?' +}; + +var testPlanPageName = { + 'assert': 'assertionsDirectives.html?t=a&', + 'branch': 'branches.html?', + 'cover': 'assertionsDirectives.html?t=d&', + 'fsm': 'fsm.html?', + 'fsm_states': 'fsm.html?t=state&', + 'fsm_trans': 'fsm.html?t=trans&', + 'cond': 'condExp.html?t=fc&', + 'expr': 'condExp.html?t=fe&', + 'statement': 'statements.html?', + 'toggle': 'toggles.html?', + 'covergroup': 'cvg.html?', + 'bblock_scope': 'blockCoverage.html?', + 'coverinstance': 'cvg.html?', + 'instance': 'summary.html?', + 'du_arch': 'summary.html?type=du&', + 'coverpoint': 'cvg.html?type=inst&', + 'cross': 'cvg.html?type=inst&', + 'du_module': 'summary.html?type=du&', + 'package': 'summary.html?' +}; + + +var OVERALL = { + DESIGN_UNITS_DATA: 'du', + DESIGN_INSTANCES_DATA: 'ds', + DESIGN_STRUCTURE_DATA: 'ds_list', + + BINS_INDEX: 0, + HITS_INDEX: 1, + COVERAGE_INDEX: 2, + EXCLUDED_INDEX: 3 +}; + +var DULIST = { + DESIGN_UNITS_DATA: 'data', + + BINS_INDEX: 0, + HITS_INDEX: 1, + COVERAGE_INDEX: 2 +}; + +var STATEMENTS_SRC = { + THIT_FILE_NUM: 0, + THIT_SCOPE: 1 +}; + +/* + * Global.json interface + */ +var GLOBAL_JSON = {}; +function processGlobaljson() { + var precision; + var defaultPrecision = 2; + var isInstanceReport = false; + + GLOBAL_JSON = { + prod: g_oCONST.hasOwnProperty('prod') ? g_oCONST.prod : undefined, // Product "Modelsim - Questa" + prodlink: g_oCONST.hasOwnProperty('prodlink') ? g_oCONST.prodlink : undefined, // Product Website + version: g_oCONST.hasOwnProperty('version') ? g_oCONST.version : undefined, // Product Version + time: g_oCONST.hasOwnProperty('time') ? g_oCONST.time : undefined, // Date and Time the report generated + nomissing: g_oCONST.hasOwnProperty('nomissing') ? g_oCONST.nomissing : undefined, // No Misses Switch + lthres: g_oCONST.hasOwnProperty('lthres') ? g_oCONST.lthres : undefined, // Low Threshold + hthres: g_oCONST.hasOwnProperty('hthres') ? g_oCONST.hthres : undefined, // high Threshold + assert_n_files: g_oCONST.hasOwnProperty('assert_n_files') ? g_oCONST.assert_n_files : undefined, // Number of Assertion files + direct_n_files: g_oCONST.hasOwnProperty('direct_n_files') ? g_oCONST.direct_n_files : undefined, // Number of Directive files + cvg_n_files: g_oCONST.hasOwnProperty('cvg_n_files') ? g_oCONST.cvg_n_files : undefined, // Number of Cvg files + tpExist: g_oCONST.hasOwnProperty('tpExist') ? g_oCONST.tpExist : undefined, // Testplan Exist + trExist: g_oCONST.hasOwnProperty('trExist') ? g_oCONST.trExist : undefined, // Testrecord Exist + instlinkSize: g_oCONST.hasOwnProperty('instlinkSize') ? g_oCONST.instlinkSize : undefined, // Instlink file size + dulinkSize: g_oCONST.hasOwnProperty('dulinkSize') ? g_oCONST.dulinkSize : undefined, // dulink file size + command: g_oCONST.hasOwnProperty('command') ? g_oCONST.command : undefined, // Command + commandargs: g_oCONST.hasOwnProperty('commandargs') ? g_oCONST.commandargs : undefined, // Command's arguments + exclReason: g_oCONST.hasOwnProperty('exclReason') ? g_oCONST.exclReason : undefined, // Exclusion Reason + paCombined: g_oCONST.hasOwnProperty('PACombined') ? (g_oCONST.PACombined === 1 ? true : false ) : undefined, // PA Combined (Power aware and Coverage report ) + pa: (g_oCONST.hasOwnProperty('PA') && g_oCONST.hasOwnProperty('PACombined')) ? (g_oCONST.PA && !g_oCONST.PACombined) : undefined, // PA Only and not combined + crossBinsCompactView: g_oCONST.hasOwnProperty('CrossBinsCompactView') ? g_oCONST.CrossBinsCompactView : undefined, // CrossBinsCompactView + formal_report_name: g_oCONST.hasOwnProperty('is_formal_report') ? (g_oCONST.is_formal_report? 'Formal ' : '') : undefined, + byDu: g_oCONST.hasOwnProperty('commandargs') ? + ((checkCommandArgs(g_oCONST.commandargs, '-du') || checkCommandArgs(g_oCONST.commandargs, '-bydu')) && !checkCommandArgs(g_oCONST.commandargs, '-dumptables')) : undefined, // by Du + byInstance: g_oCONST.hasOwnProperty('commandargs') ? + (checkCommandArgs(g_oCONST.commandargs, '-instance') || checkCommandArgs(g_oCONST.commandargs, '-byinstance')) : undefined, // by Instance + srcAnnotate: g_oCONST.hasOwnProperty('commandargs') ? checkCommandArgs(g_oCONST.commandargs, '-annotate') : undefined, // -annotate + testPlanReport: g_oCONST.hasOwnProperty('TestPlanHtmlReport') ? g_oCONST.TestPlanHtmlReport : undefined, // Testplan section + summaryReport: g_oCONST.hasOwnProperty('commandargs') ? checkCommandArgs(g_oCONST.commandargs, '-summary') : undefined, // Summary Report -summary + showexcluded : g_oCONST.hasOwnProperty('showexcluded') ? g_oCONST.showexcluded : undefined, // showexcluded + maxNumberOfGutters: 5, // Max number of Gutter items in source code editor + maxNumberOfCrossBins : g_oCONST.hasOwnProperty('max_n_crossbins') ? g_oCONST.max_n_crossbins : undefined, // Max number of Cross Bins to be viewed + }; + if (GLOBAL_JSON.hasOwnProperty('exclReason')) { + delete GLOBAL_JSON.exclReason.E; // removing 'E' from exclusion reason + } + + + // Check if the report is generated with -instance switch + for (var i = 0; i < GLOBAL_JSON.commandargs.length; i++) { + if (GLOBAL_JSON.commandargs[i] && GLOBAL_JSON.commandargs[i].indexOf('-instance') !== -1) { + isInstanceReport = true; + break; + } + } + GLOBAL_JSON.isInstance_report = isInstanceReport; + + // getPrecision + for (i = 0; i < GLOBAL_JSON.commandargs.length; i++) { + if (GLOBAL_JSON.commandargs[i] && GLOBAL_JSON.commandargs[i] === '-precision') { + precision = GLOBAL_JSON.commandargs[++i]; + break; + } + } + + GLOBAL_JSON.precision = (precision || defaultPrecision); + + // Parsing command's argument into 1 string + GLOBAL_JSON.fullCommand = GLOBAL_JSON.command + ' report ' + GLOBAL_JSON.commandargs.join(' '); +} + + +/* + * Value range check functions + */ +function isValueBelowThreshold(params) { + return params.value >= 0 && params.value < GLOBAL_JSON.lthres; +} + +function isValueInRange(params) { + return params.value >= GLOBAL_JSON.lthres && params.value < GLOBAL_JSON.hthres; +} + +function isValueAboveThreshold(params) { + return params.value >= GLOBAL_JSON.hthres; +} + +function isValueUndefined(params) { + return typeof params.value === 'undefined'; +} +// Not applicable values are sent fro the core as -1 so they'll be rendedred to Na +function isValueNa(params) { + return params.value === -1; +} +// Excluded hits are shown as 'E', 'E-hit', ... so all of these values are string +function isValueExcluded(params) { + return (typeof params.value === 'string' && params.value !== '-'); // some hits are string and == '-' not excluded +} +// Excluded hits of toggles are shown as 'E', 'E-hit', ... so all of these values are string and there're several values for hits: low to high hits, ..... +function isTogglesExtendedValueExcluded(params) { + return params.value == 'E' || params.value == 'E-hit' || params.data.coverage == 'E' || (typeof params.data.hits === 'string'); +} + +/* + * Constructing Page template + */ + +function getPageTemplate() { + var homeHref = (window.top != window.self) ? 'covSummary.html' : 'index.html#covSummary.html'; + + var BODY_TEMPLATE = + '
    ' + + '
    ' + + '' + + '

    ' + + '
    ' + + '

    ' + + // Constructing Icons + '' + + '' + + '' + + '' + + '
    ' + + '
    ' + + '
    '; + + return BODY_TEMPLATE; +} + +/* + * DataGrid Functions + */ +var gridOptionsList = {}; +function createDataGridInstance(id, columnDefs, rowData, config, height , forceFloatingFilters) { + if (height === undefined) { + height = false; + } + if (forceFloatingFilters === undefined) { + forceFloatingFilters = false; + } + var options = {}; + // Initialization of static variables used in gridGetNumOfEntries function as it's called recursively + gridGetNumOfEntries.totalCount = 0; + gridGetNumOfEntries.topCount = 0; + gridGetNumOfEntries.top = 1; + var nEntries = gridGetNumOfEntries(rowData); + var defaultPageSize = 10; + if (config) { + options = config; + if (!options.hasOwnProperty('pageSize')) { + options.pageSize = defaultPageSize; + } + if (options.urlParams && options.urlParams.hasOwnProperty('pageSize')) { + options.pageSize = options.urlParams.pageSize == 'All' ? nEntries.totalCount : options.urlParams.pageSize; + } + } else { + options.pageSize = defaultPageSize; + } + + options.pageSize = Number(options.pageSize); + + var gridOptions = { + columnDefs: columnDefs, + rowData: rowData, + rowSelection: (config && config.rowSelection) ? config.rowSelection : 'multiple', + rowDeselection: true, + paginationPageSize: options.pageSize, + enableColResize: true, + enableSorting: (options && options.hasOwnProperty('sortingEnabled')) ? options.sortingEnabled : true, + enableFilter: false, + floatingFilter: (options && options.hasOwnProperty('floatingFilterEnabled')) ? options.floatingFilterEnabled : true, + animateRows: true, + groupSelectsChildren: false, + groupSelectsFiltered: true, + domLayout: height ? 'normal' : 'autoHeight', + suppressVerticalScroll: false, + rowHeight: 25, + autoGroupColumnDef: { + pinned: 'left', + }, + getNodeChildDetails: function (rowItem) { + var expand = (options && options.hasOwnProperty('treeExpanded')) ? true : (rowItem.expand) ? true : (nEntries.topCount <= 10 && nEntries.totalCount <= 12); + return (rowItem.group) ? { + group: true, + expanded: expand, + children: rowItem.children + } : null; + }, + defaultColDef: { + cellStyle: { + 'text-align': 'right', + 'padding-right': '4px' + }, + headerClass: 'ag-numeric-header', + enableCellChangeFlash: true + }, + onGridReady: function () { + gridEvents(gridOptions); + + if (config && config.urlParams ) { + if (config.urlParams.hasOwnProperty('filter')) { + gridOptions.api.setFilterModel(config.urlParams.filter); + } + + if (config.urlParams.hasOwnProperty('page')) { + gridOptions.api.paginationGoToPage(config.urlParams.page); + } + + if (config.urlParams.hasOwnProperty('sort')) { + gridOptions.api.setSortModel(config.urlParams.sort); + } + + if (config.urlParams.hasOwnProperty('prefix')) { + gridSelectNode(gridOptions, config.urlParams[config.urlParams.prefix]); + } + + if (config.urlParams.hasOwnProperty('prefix')) { + if (config.urlParams.hasOwnProperty(config.urlParams.prefix + '_c')) { + var node = gridOptions.api.getRowNode(config.urlParams[config.urlParams.prefix]); + if (node) { + node.setExpanded(true); + } + } + + var selectedNodeId = config.urlParams.hasOwnProperty(config.urlParams.prefix + '_c') ? config.urlParams[config.urlParams.prefix + '_c'] : config.urlParams[config.urlParams.prefix]; + gridSelectNode(gridOptions, selectedNodeId); + } + + if (config.hasOwnProperty('callback')) { + var firstNodeIndex = 0; + var firstDisplayedNode = gridOptions.api.getDisplayedRowAtIndex(0); + + if (typeof firstDisplayedNode !== 'undefined') { + firstNodeIndex = (firstDisplayedNode.hasOwnProperty('parent')) ? firstDisplayedNode.parent.id : firstDisplayedNode.id; + } + + config.callback(firstNodeIndex); + } + } + }, + onPaginationChanged: function () { + if (config && config.urlParams && config.urlParams.prefix) { + var currentPage = gridOptions.api.paginationGetCurrentPage(); + var currentPageSize = $('select#' + id + '_pagination').val(); + var newUrlParams = {}; + + newUrlParams[config.urlParams.prefix + '_page'] = currentPage + 1; + newUrlParams[config.urlParams.prefix + '_pageSize'] = currentPageSize; + + if (config.urlParams.openedInFrame) { + updateUrlParamsFrame(newUrlParams); + } else { + updateUrlParams(newUrlParams, config.urlParams.pageUrl); + } + } + }, + onSortChanged: function () { + if (config && config.urlParams && config.urlParams.prefix) { + var currentSortModel = gridOptions.api.getSortModel(); + var newUrlParams = {}; + var sortParams = []; + + currentSortModel.forEach(function(element) { + sortParams.push(element.colId + ',' + element.sort); + }); + + newUrlParams[config.urlParams.prefix + '_sort'] = sortParams.join(';'); + if (config.urlParams.openedInFrame) { + updateUrlParamsFrame(newUrlParams); + } else { + updateUrlParams(newUrlParams, config.urlParams.pageUrl); + } + } + }, + onFilterChanged: function () { + if (config && config.urlParams && config.urlParams.prefix) { + var currentFilterModel = gridOptions.api.getFilterModel(); + var newUrlParams = {}; + var filterParams = []; + + Object.keys(currentFilterModel).forEach(function(key) { + filterParams.push(key + ',' + currentFilterModel[key].type + ',' + currentFilterModel[key].filter); + }); + + newUrlParams[config.urlParams.prefix + '_filter'] = filterParams.join(';'); + if (config.urlParams.openedInFrame) { + updateUrlParamsFrame(newUrlParams); + } else { + updateUrlParams(newUrlParams, config.urlParams.pageUrl); + } + } + }, + onViewportChanged: function () { + // gridEvents(gridOptions); + }, + onGridSizeChanged: function () { + gridEvents(gridOptions); + }, + onColumnVisible: function (e) { + var currentGridId; + gridOptions.api.sizeColumnsToFit(); + for (var key in gridOptionsList) { + if (gridOptionsList.hasOwnProperty(key)) { + if (gridOptionsList[key] == gridOptions) { + currentGridId = key; + } + } + } + + $('#' + currentGridId + '_' + e.column.colId).prop('checked', e.visible); + }, + onBodyScroll: function () { + // gridEvents(gridOptions); + } + }; + + if (options && options.hasOwnProperty('paginationEnabled')) { + gridOptions.pagination = options.paginationEnabled; + } else if (nEntries.topCount <= 10 && nEntries.totalCount <= 12) { + gridOptions.pagination = false; + if (!forceFloatingFilters && (nEntries.totalCount == 0 || nEntries.totalCount == 1 )) { + gridOptions.floatingFilter = false; + } + } else { + gridOptions.pagination = true; + } + + gridOptions.domLayout = height ? 'normal' : 'autoHeight'; + + var eGridDiv = document.querySelector('#' + id); + if (height) { + eGridDiv.style.height = height; + } + new agGrid.Grid(eGridDiv, gridOptions); + gridOptionsList[id] = gridOptions; + if (!(options && options.hideToolbar)) { + $('#' + id).before(gridToolbarTemplate(id, columnDefs, nEntries.totalCount, options)); + } + + return gridOptions; +} + +function gridEvents(gridOptions) { + gridOptions.api.sizeColumnsToFit(); + $('input.ag-floating-filter-input').attr('placeholder', 'Search...'); + $('input.ag-floating-filter-input').attr('type', 'search'); + $('input.ag-floating-filter-input').addClass('close-icon'); +} + +function gridSelectNode(gridOptions, id) { + var node = gridOptions.api.getRowNode(id); + if (node) { + node.setSelected(true, true); + } +} + +function gridGetNumOfEntries(rowData) { + gridGetNumOfEntries.totalCount = gridGetNumOfEntries.totalCount + rowData.length; + if (gridGetNumOfEntries.top) { + gridGetNumOfEntries.topCount = rowData.length; + } + + rowData.forEach(function (entry) { + if (entry.hasOwnProperty('children')) { + gridGetNumOfEntries.top = 0; + gridGetNumOfEntries(entry.children); + + } + }); + + var numOfEntries = { + topCount: gridGetNumOfEntries.topCount, + totalCount: gridGetNumOfEntries.totalCount, + }; + return numOfEntries; +} + +function gridToolbarTemplate(id, columnDefs, nEntries, options) { + var gridId = id; + var columnsList = []; + var isTree; + + if (options && options.hasOwnProperty('isTree')) { + isTree = options.isTree; + } else { + isTree = gridOptionsList[gridId].columnDefs[0].cellRenderer === 'group'; + if (gridOptionsList[gridId].columnDefs.length > 1 && !isTree) { + isTree = gridOptionsList[gridId].columnDefs[1].cellRenderer === 'group'; + } + } + + for (var i = 0; i < columnDefs.length; i++) { + var checked = !(columnDefs[i].hasOwnProperty('hide') && columnDefs[i].hide); //hide column if found hide in columnDefs + + columnsList += + '
  • ' + + // suppressHideColumn to prevent hiding the column + '' + + '' + + columnDefs[i].headerName + + '' + + '' + + '
  • '; + } + + // other stuff + var controlPanelTemplate = + '
    ' + + '
    '; + if (gridOptionsList[gridId].pagination) { + controlPanelTemplate += + '

    ' + + 'Page Size: ' + + '' + + '

    '; + } + + controlPanelTemplate += + '
    ' + + '' + + '' + + '
    ' + + '
    '; + + if (isTree) { + controlPanelTemplate += + '
    ' + + '' + + '
    ' + + '
    ' + + '' + + '
    '; + + } + + controlPanelTemplate += + '' + + '' + + '
    '; + + return controlPanelTemplate; +} + +function onGridPageSizeChange(id, value, nEntries) { + var gridId = id.split('_')[0]; + + gridOptionsList[gridId].api.paginationSetPageSize(value === 'All' ? nEntries : Number(value)); + gridOptionsList[gridId].api.doLayout(); +} + +function onDataGridMenuCheckboxChange(id, cb) { + var gridId = id; + var dataGridColId = cb.id.split(/_(.+)/)[1]; + gridOptionsList[gridId].columnApi.setColumnVisible(dataGridColId, cb.checked); + gridOptionsList[gridId].api.sizeColumnsToFit(); + gridEvents(gridOptionsList[gridId]); +} + +function gridExportToCsv(id, allData, allColumns) { + + var gridId = id.split('_')[0]; + var params = { + allColumns: allColumns, + onlySelected: !allData, + fileName: 'export.csv', + processCellCallback: ExportFormattingFunction + }; + + gridOptionsList[gridId].api.exportDataAsCsv(params); + event.stopPropagation(); +} +//Export to Csv formatting function +function ExportFormattingFunction (params) { + if ((params.column.getColId() === 'hit' || params.column.getColId() === 'miss' || params.column.getColId() === 'cp' || params.column.getColId() === 'exclude') && (isValueNa(params))) { + return 'na'; + } else if (params.column.getColId() === 'item' && params.value) { + return params.node.data.genblk + params.value; + } else { + return params.value; + } +} +//Grid Expand and Collapse +function gridExpandCollapseAll(id) { + var gridId = id.split('_')[0]; + + if (id.split('_')[1] === 'collapseAll') { + gridOptionsList[gridId].api.collapseAll(); + } else { + gridOptionsList[gridId].api.expandAll(); + } +} + +/* + * panel + */ +var panelCounter = 0; + +function createPanel(cssSelector, title, ratio) { + panelCounter++; + var progressBarClass; + ratio = Number(ratio); + if (!(typeof ratio === 'number' && (ratio >= 0 && ratio <= 100))) { + ratio = undefined; + } + + if (typeof ratio !== 'undefined') { + progressBarClass = (ratio <= GLOBAL_JSON.lthres) ? 'danger' : (ratio > GLOBAL_JSON.lthres && ratio <= GLOBAL_JSON.hthres) ? 'warning' : 'success'; + } else { + progressBarClass = 'undefined'; + } + + var panelId = 'panel' + panelCounter; + var panelTemplate = + '
    ' + + '' + + '' + + '
    '; + + $(cssSelector).append(panelTemplate); + + return panelId; +} + +/* + * Miscellaneous Functions + */ + +//Adjusting Precision +function adjustPrecision(no) { + var value = (Math.floor(no * Math.pow(10, GLOBAL_JSON.precision)) / (Math.pow(10, GLOBAL_JSON.precision))); + return Number(parseFloat(value).toFixed(Number(GLOBAL_JSON.precision))); +} + +//Appending Header Template +function headerTemplate(urlParams, instance) { + $('.header img').css({ + 'height': (GLOBAL_JSON.prod == 'ModelSim' ? 25 : 33), + 'margin-top': (GLOBAL_JSON.prod == 'ModelSim' ? -18 : -8), + 'margin-right': (GLOBAL_JSON.prod == 'ModelSim' ? 1 : -7) + }); + + if (instance) { + // $('#page-header-container h4').html(' ' + (urlParams.hasOwnProperty('type') && urlParams.type === 'du' ? 'Design Unit' : 'Instance') + ': ' + instance); + $('#page-header-container h4').html(' ' + (urlParams.hasOwnProperty('pr') || (urlParams.hasOwnProperty('type') && urlParams.type === 'du') ? 'Design Unit' : 'Instance') + ': ' + instance); + + } +} + +// load json file +function loadJsonFile(fileName) { + loadScript('files/' + fileName + '.js'); +} + +function loadScript(fileName) { + var headId = document.getElementsByTagName('head')[0]; + var javaScriptElement = document.createElement('script'); + javaScriptElement.type = 'text/javascript'; + javaScriptElement.src = fileName; + javaScriptElement.async = false; + headId.appendChild(javaScriptElement); +} + +//Get source file Name +function getFileName(filename) { + return (filename) ? filename.split('/').pop() : ''; +} +//Get source file extension +function getFileExt(filename) { + return (filename) ? ('.' + filename.split('.').pop()) : ''; +} + +(function (console) { + console.save = function (data, filename) { + if (!data) { + console.error('console.save: No data'); + return; + } + + if (!filename) filename = 'console.json'; + + if (typeof data === 'object') { + data = JSON.stringify(data, undefined, 4); + } + + var blob = new Blob([data], { type: 'text/json' }); + var e = document.createEvent('MouseEvents'); + var a = document.createElement('a'); + + a.download = filename; + a.href = window.URL.createObjectURL(blob); + a.dataset.downloadurl = ['text/json', a.download, a.href].join(':'); + e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + a.dispatchEvent(e); + }; +})(console); + + +if (!('path' in Event.prototype)) { + Object.defineProperty(Event.prototype, 'path', { + get: function() { + var path = []; + var currentElem = this.target; + while (currentElem) { + path.push(currentElem); + currentElem = currentElem.parentElement; + } + if (path.indexOf(window) === -1 && path.indexOf(document) === -1) + path.push(document); + if (path.indexOf(window) === -1) + path.push(window); + return path; + } + }); +} + +// update progress-bar loader value. used in assertion,direcives and covergroups consolidated views +function updateProgressBarLoader(percent, progressBarId) { + $(progressBarId + ' div').animate({ width: percent + '%' }, 500); + $(progressBarId + ' span').html(percent.toFixed(2) + ' %'); + $(progressBarId + ' span').css('color', (Number(percent) < 60 ? 'black' : 'white')); +} + +//Escaping Angle Brackets +function escapeAngleBrackets(string) { + string = string.replace(//g, '>'); + + return string; +} + +//Custom comparator for sorting to exclude '-' from sorting +function gridSortingCustomComparator (valueA, valueB, nodeA, nodeB, isInverted) { + if ((valueA === null && valueB === null) || (valueA === undefined && valueB === undefined)) { + return 0; + } + var returnValA = (!isInverted) ? 1 : -1; + var returnValB = (!isInverted) ? -1 : 1; + + if (valueA === null || valueA === undefined || valueA === -1) { + return returnValA; + } + if (valueB === null || valueB === undefined || valueB === -1) { + return returnValB; + } + + return valueA === valueB ? 0 : (valueA > valueB) ? 1 : -1 ; +} + +// Command Arguments Search +function checkCommandArgs(commandArgs, searchArg) { + + var result = false; + commandArgs.forEach(function(element) { + if (element.indexOf(searchArg) === 0) { + result = true; + } + }); + + return result; +} + +function addFooter () { + $('#page-body').append( + '' + ); +} diff --git a/covhtmlreport/scripts/sourceViewer.js b/covhtmlreport/scripts/sourceViewer.js new file mode 100644 index 000000000..30b03e294 --- /dev/null +++ b/covhtmlreport/scripts/sourceViewer.js @@ -0,0 +1,197 @@ +/* global $, document, getPageTemplate, console, parseUrl, GLOBAL_JSON, loadJsonFile, createCodeMirrorInstance, updateUrlHash, jumpToLine, headerTemplate, urlParams */ +/* exported processScopesDbFile, processSummaryData, processAssertionsData, processDirectivesData, processStatementsData, processSrcData, helpModal */ + +'use strict'; + +var startDate; + +var SRC = { + NAME: 'name', + MAX_ITEMS: 'maxItems', + LANG: 'lang', + CODE: 'src', +}; + +//var editor; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + // load json file + loadJsonFile('src' + urlParams.f); +}); + +function processSrcData(g_data) { + var dataObj = g_data; + + topPageDescription(); + + // file name + $('#page-body').append( + '
    ' + + '
    Ln#
    ' + + '' + + ' Filename:
    ' + + '' + + dataObj[SRC.NAME] + + '' + + '
    ' + + '' + + '' + + '' + + '
    ' + ); + + $('#page-body').append('
    '); + var editor = createCodeMirrorInstance('#editor', 0, 0, { + mode: dataObj[SRC.LANG], + code: '' + }); + editor.getDoc().setValue(dataObj[SRC.CODE]); + editor.setSize(null, 'calc(100vh - 140px)'); + var lineNGutWidth = $('.CodeMirror-gutter.CodeMirror-linenumbers').width(); + $('.lineN').css({'width': (lineNGutWidth + 9.09)}); + $('.file').css({'width': 'calc(100% - ' + lineNGutWidth + 'px - 9.09px)'}); + jumpToLine(editor, urlParams.l == 0 ? 0 : urlParams.l - 1); + + if (urlParams.p) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function topPageDescription() { + $('#page-header-text').text(GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + headerTemplate(urlParams); +} + +function helpModal() { + var id = 'help-modal'; + $('#help').remove(); + $('body').append(getHelpTemplate(id, 'Help')); + constructHelpData(id); + $('#' + id).modal(); +} +function getHelpTemplate(id, title) { + var template; + template = + '
    ' + + ''; + return template; +} + +function constructHelpData(id) { + $('#' + id + 'Shortcuts').append(getHelpDataTemplate('shortcuts')); + $('#' + id + 'icons').append(getHelpDataTemplate('icons')); +} +function getHelpDataTemplate(tempId) { + var templates = { + 'shortcuts': + '

    Search

    ' + + '
    ' + + '
    findCtrl-F (PC), Cmd-F (Mac)
    ' + + '
    findNextCtrl-G (PC), Cmd-G (Mac)
    ' + + '
    findPrevShift-Ctrl-G (PC), Shift-Cmd-G (Mac)
    ' + + '
    ' + + 'We can search either normally by writing the string dirctly or by using Regex.' + + '

    ' + + 'Regex Search Example:' + + '

    ' + + '
    /^.*\\b(reg|input|logic)\\b.*$/: Finding Lines Containing reg or input or logic keywords
    ' + + '

    Navigation

    ' + + '
    selectAllCtrl-A (PC), Cmd-A (Mac)
    ' + + '
    Select the whole content of the editor.
    ' + + '
    singleSelectionEsc
    ' + + '
    When multiple selections are present, this deselects all but the primary selection.
    ' + + '
    undoSelectionCtrl-U (PC), Cmd-U (Mac)
    ' + + '
    Undo the last change to the selection, or if there are no selection-only changes at the top of the history, undo the lastchange.
    ' + + '
    redoSelectionAlt-U (PC), Shift-Cmd-U (Mac)
    ' + + '
    Redo the last change to the selection, or the last text change if no selection changes remain.
    ' + + '
    goDocStartCtrl-Home (PC), Cmd-Up (Mac), Cmd-Home (Mac)
    ' + + '
    Move the cursor to the start of the document.
    ' + + '
    goDocEndCtrl-End (PC), Cmd-End (Mac), Cmd-Down (Mac)
    ' + + '
    Move the cursor to the end of the document.
    ' + + '
    goPageUpPageUp, Shift-Ctrl-V (Mac)
    ' + + '
    Move the cursor up one screen, and scroll up by the same distance.
    ' + + '
    goPageDownPageDown, Ctrl-V (Mac)
    ' + + '
    Move the cursor down one screen, and scroll down by the same distance.
    ' + + '
    ', + + + 'icons': + + /*'

    Icons

    ' +*/ + '' + + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    EExcluded
    EExcluded and Hit
    EExcluded with Comment
    EExcluded and Hit with Comment
    Test Hit Data
    ' + }; + + return templates[tempId]; +} diff --git a/covhtmlreport/scripts/statements.js b/covhtmlreport/scripts/statements.js new file mode 100644 index 000000000..d5b5a82a0 --- /dev/null +++ b/covhtmlreport/scripts/statements.js @@ -0,0 +1,712 @@ +/* global $, document, console, getPageTemplate, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, loadJsonFile, createCodeMirrorInstance, updateUrlHash, addHitsGutters, addMarkers, getFileName, hitsRenderer, getFileExt, jumpToLine, headerTemplate, urlParams, pageName, queryUrlParamsByPrefix */ +/* exported processScopesDbFile, processSummaryData, processAssertionsData, processDirectivesData, processStatementsData, processSrcData, processSrcNamesData, helpModal */ + +'use strict'; + +var startDate; +var dataObj = {}; +var columnDefs; +var pageSize = 25; + +var srcData = []; +var editor = []; +var gridInstances = []; +var sourceMapData; +var tabId; +var sourceNumber; +var stmtsUrlParams; + +var latestScrollPosition = []; +var renderedLines = {}; +var covId = 0; +var itemId = 0; +var uniqueId; + +var SRC = { + NAME: 'name', + LANG: 'lang', + CODE: 'src', +}; + +var STATEMENTS_SRC = { + SRC_NO: 'n', + NAME: 'f', + MAX_ITEMS: 'mi', + LINENO: 'l', + ITEM_NO: 'l', + ITEMS_INFO: 'i', + ITEM_HITS: 'h', + ITEM_INDEX: 'in', + GEN_BLK: 'gi', + CLASS_PARAM: 'cp', + ITEM_START: 's', + ITEM_LENGTH: 'l', + ITEM_EXC_COMMENT: 'ec', + THIT: 'th', + THIT_FILE_NUM: 0, + THIT_SCOPE: 1 +}; + +var PREFIX = { + STMTS: 'st' +}; + +var pageUrl = pageName.s; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + // load json file + loadJsonFile('srcn'); +}); + +function processSrcNamesData(g_data) { + sourceMapData = g_data; + loadJsonFile('s' + urlParams.f); +} + +function processStatementsData(g_data) { + var panelBodyId; + var sourceFileFound = 0; + + dataObj = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj.stmts, g_data[urlParams.s + '_sub'].stmts); + + dataObj.stmts = dataObj.stmts.reduce(function(o, cur) { + var occurs = o.reduce(function(n, item, i) { + return (item.f === cur.f) ? i : n; + }, -1); + if (occurs >= 0) { + o[occurs].cov = o[occurs].cov.concat(cur.cov); + } else { + var obj = {f: cur.f, cov: cur.cov, mi: cur.mi}; + o = o.concat([obj]); + } + return o; + }, []); + } + } + + topPageDescription(urlParams.pr || dataObj.pr); + + dataObj.stmts.some(function(stmt) { + return (sourceFileFound = stmt.hasOwnProperty(STATEMENTS_SRC.SRC_NO)); + }); + + if (sourceFileFound) { + processSrcEditorData(); + } else { + // initialize dataGrid data + initializeData(); + + panelBodyId = createPanel('#page-body', 'Statements Coverage', urlParams.cp); + $('#' + panelBodyId).append('
    '); + + stmtsUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.STMTS, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid', columnDefs, getRowData(dataObj.stmts), { + urlParams: stmtsUrlParams + }); + + printPerformanceNumbers(); + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Statements ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getRowData(data) { + var rowData = []; + + data.forEach(function(file) { + var row = { + name: sourceMapData[file[STATEMENTS_SRC.NAME]], + group: true, + children: [] + }; + + file.cov.forEach(function(stmt) { + stmt[STATEMENTS_SRC.ITEMS_INFO].forEach(function(item) { + var currentRowData = { + line: stmt[STATEMENTS_SRC.LINENO], + fileName: row.name, + //item: (item.hasOwnProperty(STATEMENTS_SRC.GEN_BLK) ? (item[STATEMENTS_SRC.GEN_BLK] + ' ') : '') + item[STATEMENTS_SRC.ITEM_INDEX], + item: (item.hasOwnProperty(STATEMENTS_SRC.CLASS_PARAM) ? (item[STATEMENTS_SRC.CLASS_PARAM] + ' ') : '') + item[STATEMENTS_SRC.ITEM_INDEX], + genblk: (item.hasOwnProperty(STATEMENTS_SRC.GEN_BLK) ? (item[STATEMENTS_SRC.GEN_BLK] + ' ') : ''), + hits: item[STATEMENTS_SRC.ITEM_HITS], + thitf: (item.hasOwnProperty(STATEMENTS_SRC.THIT)) ? item[STATEMENTS_SRC.THIT][STATEMENTS_SRC.THIT_FILE_NUM] : undefined, + thits: (item.hasOwnProperty(STATEMENTS_SRC.THIT)) ? item[STATEMENTS_SRC.THIT][STATEMENTS_SRC.THIT_SCOPE] : undefined, + c: item[STATEMENTS_SRC.ITEM_EXC_COMMENT], + nameSt: sourceMapData[file[STATEMENTS_SRC.NAME]] + ' [L: ' + stmt[STATEMENTS_SRC.LINENO] + ', Item: ' + item[STATEMENTS_SRC.ITEM_INDEX] + ']' + }; + + row.children.push(currentRowData); + }); + }); + + rowData.push(row); + }); + + return rowData; +} + +function processSrcEditorData() { + + $('#page-body').append(getSourceCodeTemplate()); + if (dataObj.stmts.length === 1) { + tabId = 0; + for (var h = 1; h <= (dataObj.stmts[tabId][STATEMENTS_SRC.MAX_ITEMS] > GLOBAL_JSON.maxNumberOfGutters ? GLOBAL_JSON.maxNumberOfGutters :dataObj.stmts[tabId][STATEMENTS_SRC.MAX_ITEMS] ); h++) { + $('.hits' + tabId + '').append('
    Item' + h + '
    '); + } + $('.lineN' + tabId + '').css({'height': '46px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'font-size': '15px', 'float': 'left', 'font-weight': 'bold'}); + $('.hits' + tabId + '').css({'height': '23px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'margin-bottom': '10px', 'font-size': '15px', 'float': 'left', 'text-align': 'center'}); + var tabData = dataObj.stmts[tabId]; + sourceNumber = tabData[STATEMENTS_SRC.SRC_NO]; + if (srcData[sourceNumber] == undefined) { + loadJsonFile('src' + sourceNumber); + } else { + constructSrcData(tabId, sourceNumber); + } + } else { + $('#source-tabs li a').on('click', function (e) { + e.preventDefault(); + covId = 0; + var pane = $(this); + var prevTabId = tabId; + tabId = this.hash.replace('#editor-tab', ''); + var tabData = dataObj.stmts[tabId]; + + if (tabData.hasOwnProperty(STATEMENTS_SRC.SRC_NO)) { + sourceNumber = tabData[STATEMENTS_SRC.SRC_NO]; + $('.srcMenu' + prevTabId + '').css('display', 'none'); + if (editor[sourceNumber] == undefined) { + + $('#tabs-body').append( + '' + + '
    ' + + '
    ' + + '
    ' + ); + + for (var h = 1; h <= (dataObj.stmts[tabId][STATEMENTS_SRC.MAX_ITEMS] > GLOBAL_JSON.maxNumberOfGutters ? GLOBAL_JSON.maxNumberOfGutters : dataObj.stmts[tabId][STATEMENTS_SRC.MAX_ITEMS]); h++) { + $('.hits' + tabId + '').append('
    Item' + h + '
    '); + } + $('.lineN' + tabId + '').css({'height': '46px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'font-size': '15px', 'float': 'left', 'font-weight': 'bold'}); + $('.hits' + tabId + '').css({'height': '23px', 'border': '1px solid #eee', 'color': '#3c3838', 'background': '#f1f1f1', 'margin-top': '10px', 'margin-bottom': '10px', 'font-size': '15px', 'float': 'left', 'text-align': 'center'}); + + if (srcData[sourceNumber] == undefined) { + loadJsonFile('src' + sourceNumber); + } else { + constructSrcData(tabId, sourceNumber); + } + } + $('.srcMenu' + tabId + '').css('display', 'block'); + } else { + if (gridInstances[tabId] == undefined) { + if (columnDefs == undefined) { + // initialize dataGrid data + initializeData(); + } + + $('#tabs-body').append( + '
    ' + + '
    ' + + '
    ' + ); + + $('#editor-body' + tabId).append(); + gridInstances[tabId] = createDataGridInstance('grid' + tabId, columnDefs, getRowData([tabData]), { + pageSize: pageSize + }); + } + } + + pane.tab('show'); + }); + } + + + $('#tab-anchor0').trigger('click'); +} + +function getSourceCodeTemplate() { + var template; + var tabHeaderTemplate = ''; + var file; + var fileName; + + if (dataObj.stmts.length === 1) { + //var gutterWidth = 60.5*dataObj.stmts[0][STATEMENTS_SRC.MAX_ITEMS]; + file = dataObj.stmts[0]; + fileName = (file.hasOwnProperty(STATEMENTS_SRC.SRC_NO)) ? sourceMapData[file[STATEMENTS_SRC.SRC_NO]] : sourceMapData[file[STATEMENTS_SRC.NAME]]; + + template = + '
    ' + + '
    Ln#
    ' + + '
    Hits' + + '
    ' + + '
    ' + + '' + + ' Filename:
    ' + + '' + + fileName + + '' + + '
    ' + + '' + + '' + + '' + + '
    ' + + '
    ' ; + } else { + for (var i = 0; i < dataObj.stmts.length; i++) { + file = dataObj.stmts[i]; + fileName = (file.hasOwnProperty(STATEMENTS_SRC.SRC_NO)) ? sourceMapData[file[STATEMENTS_SRC.SRC_NO]] : sourceMapData[file[STATEMENTS_SRC.NAME]]; + + tabHeaderTemplate += + '
  • ' + + '' + + '' + + ' ' + + ' ' + + getFileExt(fileName) + + '' + + '' + + '' + + '  ' + getFileName(fileName) + + '' + + '' + + '
  • '; + } + template = + '
    ' + + '' + + '
    ' + + '
    ' + + '
    '; + } + return template; +} + +function helpModal() { + var id = 'help-modal'; + $('#help').remove(); + $('body').append(getHelpTemplate(id, 'Help')); + constructHelpData(id); + $('#' + id).modal(); +} +function getHelpTemplate(id, title) { + var template; + template = + '
    ' + + ''; + return template; +} + +function constructHelpData(id) { + $('#' + id + 'Shortcuts').append(getHelpDataTemplate('shortcuts')); + $('#' + id + 'icons').append(getHelpDataTemplate('icons')); +} +function getHelpDataTemplate(tempId) { + var templates = { + 'shortcuts': + '

    Search

    ' + + '
    ' + + '
    findCtrl-F (PC), Cmd-F (Mac)
    ' + + '
    findNextCtrl-G (PC), Cmd-G (Mac)
    ' + + '
    findPrevShift-Ctrl-G (PC), Shift-Cmd-G (Mac)
    ' + + '
    ' + + 'There are two modes of search: Search by string and Search Text with Regular Expressions.' + + '

    ' + + 'Regex Search Example:' + + '

    ' + + '
    /^.*\\b(reg|input|logic)\\b.*$/: Finding Lines Containing reg or input or logic keywords
    ' + + '

    Navigation

    ' + + '
    selectAllCtrl-A (PC), Cmd-A (Mac)
    ' + + '
    Select the whole content of the editor.
    ' + + '
    singleSelectionEsc
    ' + + '
    When multiple selections are present, this deselects all but the primary selection.
    ' + + '
    undoSelectionCtrl-U (PC), Cmd-U (Mac)
    ' + + '
    Undo the last change to the selection, or if there are no selection-only changes at the top of the history, undo the lastchange.
    ' + + '
    redoSelectionAlt-U (PC), Shift-Cmd-U (Mac)
    ' + + '
    Redo the last change to the selection, or the last text change if no selection changes remain.
    ' + + '
    goDocStartCtrl-Home (PC), Cmd-Up (Mac), Cmd-Home (Mac)
    ' + + '
    Move the cursor to the start of the document.
    ' + + '
    goDocEndCtrl-End (PC), Cmd-End (Mac), Cmd-Down (Mac)
    ' + + '
    Move the cursor to the end of the document.
    ' + + '
    goPageUpPageUp, Shift-Ctrl-V (Mac)
    ' + + '
    Move the cursor up one screen, and scroll up by the same distance.
    ' + + '
    goPageDownPageDown, Ctrl-V (Mac)
    ' + + '
    Move the cursor down one screen, and scroll down by the same distance.
    ' + + '
    ', + + + 'icons': + + /*'

    Icons

    ' +*/ + '' + + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    EExcluded
    EExcluded and Hit
    EExcluded with Comment
    EExcluded and Hit with Comment
    Test Hit Data
    ' + }; + + return templates[tempId]; +} +function processSrcData(g_data) { + var srcNumber = sourceNumber; + var tabIndex = tabId; + + srcData[srcNumber] = g_data; + constructSrcData(tabIndex, srcNumber); +} + +function constructSrcData(tabId, srcNumber) { + var data = srcData[srcNumber]; + + + + editor[srcNumber] = createCodeMirrorInstance('#editor' + tabId, tabId, dataObj.stmts[tabId][STATEMENTS_SRC.MAX_ITEMS], { + mode: data[SRC.LANG], + code: '' + }); + + editor[srcNumber].setSize(null, 'calc(100vh - 205px)'); + editor[srcNumber].getDoc().setValue(data[SRC.CODE]); + editor[srcNumber].on('scroll', function() { + var scrollPosition = editor[srcNumber].getViewport(); + if (!latestScrollPosition[srcNumber] || latestScrollPosition[srcNumber].from !== scrollPosition.from && latestScrollPosition[srcNumber].to !== scrollPosition.to ) { + latestScrollPosition[srcNumber] = scrollPosition; + highlightViewPort(latestScrollPosition[srcNumber], srcNumber, tabId); + } + + }); + + + var lineNWidth = $('.CodeMirror-gutter.CodeMirror-linenumbers').width(); + $('.lineN' + tabId + '').css({'width': lineNWidth}); + var gutterWidth = $('.CodeMirror-gutter.codemirror-gut1').width() * dataObj.stmts[0][STATEMENTS_SRC.MAX_ITEMS]; + var fileWidth = 'calc(100% - ' + gutterWidth + 'px - ' + lineNWidth + 'px - 4px)'; + $('.file').css({'width': (fileWidth)}); + + + // jump to first statement in DU + jumpToLine(editor[srcNumber], dataObj.stmts[tabId].cov[0][STATEMENTS_SRC.LINENO] - 1); + + // In case of small file and the first staement is in the beginging of the file we will trigger the scroll event manually + var scrollPosition = editor[srcNumber].getViewport(); + if (scrollPosition.from === 0 ) { + highlightViewPort({ from: 0, to: 50}, srcNumber, tabId); + } +} + + +// highlightViewPort +function highlightViewPort(event, srcNumber, tabId) { + + var timeout = setTimeout(function () { + clearTimeout(timeout); + var lineNo; + var itemN; + var markers = []; + + dataObj.stmts[tabId].cov.forEach(function (cov) { + itemId = 0; + lineNo = cov[STATEMENTS_SRC.LINENO]; + if (!renderedLines[srcNumber]) { + renderedLines[srcNumber] = {}; + } + if (lineNo >= event.from && lineNo <= event.to && !renderedLines[srcNumber][lineNo]) { + + renderedLines[srcNumber][lineNo] = true; + cov[STATEMENTS_SRC.ITEMS_INFO] = getItemInfo(cov[STATEMENTS_SRC.ITEMS_INFO]); + cov[STATEMENTS_SRC.ITEMS_INFO].forEach(function (item) { + uniqueId = tabId + ',' + covId + ',' + itemId; + itemN = item[STATEMENTS_SRC.ITEM_INDEX]; + if (itemN > GLOBAL_JSON.maxNumberOfGutters) { + addHitsLastGutter(editor[srcNumber], lineNo - 1 , cov[STATEMENTS_SRC.ITEMS_INFO] ); + } + else { + addHitsGutters(editor[srcNumber], lineNo - 1, itemN, item[STATEMENTS_SRC.ITEM_HITS], uniqueId, item[STATEMENTS_SRC.ITEM_EXC_COMMENT], item[STATEMENTS_SRC.THIT] , null, null); + addMarkers(editor[srcNumber], markers, lineNo - 1, item[STATEMENTS_SRC.ITEM_START], lineNo, (item[STATEMENTS_SRC.ITEM_START]) + (item[STATEMENTS_SRC.ITEM_LENGTH]), item[STATEMENTS_SRC.ITEM_LENGTH], 0); + } + itemN++; + itemId++; + }); + + covId++; + } + }); + }, 100); +} + +function getItemInfo(itemsInfo) { + var newItemsInfo = []; + var uniqueItemsFlags = {}; + + itemsInfo.forEach(function(item) { + if (!uniqueItemsFlags.hasOwnProperty(item[STATEMENTS_SRC.ITEM_INDEX])) { + uniqueItemsFlags[item[STATEMENTS_SRC.ITEM_INDEX]] = true; + } + }); + + var uniqueItems = Object.keys(uniqueItemsFlags); + + uniqueItems.forEach(function(item) { + var filteredItems = itemsInfo.filter(function(obj) { + return obj[STATEMENTS_SRC.ITEM_INDEX] === Number(item); + }); + + if (filteredItems && filteredItems.length > 0) { + var newItem = {}; + newItem[STATEMENTS_SRC.ITEM_INDEX] = item; + if (filteredItems[0].hasOwnProperty(STATEMENTS_SRC.ITEM_EXC_COMMENT)) { + newItem[STATEMENTS_SRC.ITEM_EXC_COMMENT] = filteredItems[0][STATEMENTS_SRC.ITEM_EXC_COMMENT]; + } + if (filteredItems[0].hasOwnProperty(STATEMENTS_SRC.THIT)) { + newItem[STATEMENTS_SRC.THIT] = filteredItems[0][STATEMENTS_SRC.THIT]; + } + + if (filteredItems.length == 1 && !filteredItems[0].hasOwnProperty(STATEMENTS_SRC.GEN_BLK)) { + newItem[STATEMENTS_SRC.ITEM_HITS] = filteredItems[0][STATEMENTS_SRC.ITEM_HITS]; + }else if (filteredItems.length == 1 && !filteredItems[0].hasOwnProperty(STATEMENTS_SRC.CLASS_PARAM)) { + newItem[STATEMENTS_SRC.ITEM_HITS] = filteredItems[0][STATEMENTS_SRC.ITEM_HITS]; + } else { + newItem[STATEMENTS_SRC.ITEM_HITS] = []; + + Object.keys(filteredItems).forEach(function(filteredItem) { + newItem[STATEMENTS_SRC.ITEM_HITS].push({ + 'h': filteredItems[filteredItem][STATEMENTS_SRC.ITEM_HITS], + 'gi': filteredItems[filteredItem][STATEMENTS_SRC.GEN_BLK], + 'cp': filteredItems[filteredItem][STATEMENTS_SRC.CLASS_PARAM] + }); + }); + } + + newItemsInfo.push(newItem); + } + }); + + return newItemsInfo; +} +function printPerformanceNumbers() { + if (urlParams.hasOwnProperty('p')) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function initializeData() { + columnDefs = [ + { + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + headerName: 'Source File', + headerTooltip: '', + suppressHideColumn: true, + suppressMovable: true, + suppressFilter: true, + suppressSorting: true, + minWidth: 1, width: 1, maxWidth: 1, + cellStyle: { + 'text-align': 'left', + 'left': '0px' + }, + colSpan: function(params) { + return params.data.name ? 6 : 1; + }, + cellRenderer: 'group', + cellRendererParams: { + suppressCount: true, + innerRenderer: function(params) { + return params.data.name; + } + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + }, + { + headerClass: 'justify-left', + headerName: 'File Name', + headerTooltip: 'Line', + field: 'fileName', + tooltipField: 'fileName', + filter: 'text', + minWidth: 150, width: 150, maxWidth: 150, + cellStyle: { + 'text-align': 'left', + 'padding-left': '30px' + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return params.data.fileName.split('/').pop(); + } + }, + { + headerClass: 'justify-center', + headerName: 'Line Number', + headerTooltip: 'Line', + field: 'line', + tooltipField: 'line', + filter: 'number', + minWidth: 80, width: 80, maxWidth: 120, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + } + }, + { + headerClass: 'justify-center', + headerName: 'Item', + headerTooltip: 'Item', + field: 'item', + tooltipField: 'item', + filter: 'number', + minWidth: 80, width: 80, maxWidth: 120, + cellRenderer: function (params) { + if (params.value) { + return '' + params.data.genblk + params.value + ''; + } + }, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + } + }, + { + headerClass: 'justify-center', + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hits', + tooltipField: 'hits', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellStyle: { + 'text-align': 'center', + }, cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return (typeof params.data.hits === 'string'); + }, + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits', fieldName: 'nameSt'}); + } + }, + { + headerName: '', + headerTooltip: '', + field: '', + tooltipField: '', + suppressHideColumn: true, + suppressMovable: true, + suppressFilter: true, + suppressSorting: true + } + ]; +} diff --git a/covhtmlreport/scripts/summary.js b/covhtmlreport/scripts/summary.js new file mode 100644 index 000000000..59a9af498 --- /dev/null +++ b/covhtmlreport/scripts/summary.js @@ -0,0 +1,637 @@ +/* global $, document, getPageTemplate, window, pageName, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, coverageMapper, adjustPrecision, loadJsonFile, updateUrlHash, updateMenuSelection, headerTemplate, escapeAngleBrackets, urlParams, queryUrlParamsByPrefix, gridSortingCustomComparator, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa, isValueExcluded */ +/* exported processScopesDbFile, processSummaryData, processSrcNamesData */ +'use strict'; + +var startDate; +var dataObj; +var locRecTotalCount = 0; +var sourceMapData; +var isPA; +var isPAInstance; +var isShowExcluded; +var summaryUrlParams; +var localUrlParams; +var recursiveUrlParams; + +var DATA_ARR; + +var PREFIX = { + SUMMARY: 'sm', + LOCAL: 'loc', + RECURSIVE: 're' +}; +var pageSize = 10; +var pageUrl = 'summary.html?'; +var instanceType; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + isPA = GLOBAL_JSON.hasOwnProperty('pa') && GLOBAL_JSON.pa; + isShowExcluded = (GLOBAL_JSON.hasOwnProperty('showexcluded') && GLOBAL_JSON.showexcluded); + DATA_ARR = { + BINS_INDEX: 0, + HITS_INDEX: 1, + EXCLUDED_INDEX: (isShowExcluded)? 2 : undefined, + FILE_NUM_INDEX: (isShowExcluded)? 3 : 2, + FILE_SUB_NUM_INDEX: (isShowExcluded)? 4: 3 + }; + // parse url + urlParams = parseUrl(); + if (urlParams.hasOwnProperty('type') && urlParams.type) { + updateMenuSelection(urlParams.type, urlParams.s); + } + + // update url hash + updateUrlHash(); + + // load json files + loadJsonFile('srcn'); +}); + +function processSrcNamesData(g_data) { + sourceMapData = g_data; + loadJsonFile((urlParams.f) ? ('z' + urlParams.f) : ('sdb' + urlParams.b)); +} + +function processScopesDbFile(g_db_data) { + loadJsonFile('z' + g_db_data[urlParams.s]); +} + +function processSummaryData(g_data) { + dataObj = g_data[urlParams.s]; + + isPAInstance = (dataObj.hasOwnProperty('pa') && dataObj.pa); + instanceType = isPAInstance? 'UPF Object' : 'Instance'; + + if (dataObj.loc) locRecTotalCount++; + if (dataObj.rec) locRecTotalCount++; + + if (dataObj) { + topPageDescription(escapeAngleBrackets(dataObj.n), dataObj.st); + var sourceFile = { + name: sourceMapData[dataObj.sn], + fileNum: dataObj.sn, + lineNum: dataObj.ln + }; + + if (dataObj.hasOwnProperty('one_inst')) { + urlParams.oneInst = dataObj.one_inst; + } + + pageInfo(dataObj.bc, (dataObj.st == 'du') ? dataObj.n : dataObj.du, dataObj.l, sourceFile, dataObj.st); + + if (dataObj.children) { + covSummaryByInstance('#page-body', dataObj, dataObj.st); + } + + if (dataObj.loc || dataObj.rec) { + covSummaryTables('#page-body', dataObj, dataObj.st); + } + } + + if (urlParams.p) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function topPageDescription(instance, type) { + if (type == 'du') { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Design Unit ' + GLOBAL_JSON.formal_report_name + 'Coverage'); + $('#page-header-container h4').html(' Design Unit: ' + instance); + } else { + $('#page-header-text').text(GLOBAL_JSON.prod + (isPA ? ' Power Aware Instance' : ' Instance' ) + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage'); + + $('#page-header-container h4').html(''+ instanceType + ': ' + instance); + + } + + headerTemplate(urlParams); +} + +function pageInfo(instance, du, language, sourceFile, type) { + var infoPageTemplate = + '
    ' + + ''; + + if (type == 'du') { + infoPageTemplate += + '' + + '' + + '' + + ''; + } else { + infoPageTemplate += + '' + + '' + + '' + + '' + + '' + + ''; + + infoPageTemplate += (du.hasOwnProperty('b') && du.b != 0) ? + ('') : + (''); + + infoPageTemplate += + ''; + } + } + if (!(isPAInstance || isPA)) { // In case of NON PA instance OR PA report + infoPageTemplate += + '' + + '' + + '' + + ''; + } + + infoPageTemplate += '' + + '' + + '' + + '' + + '
    Design Unit ' + + '' + escapeAngleBrackets(du) + '' + + '
    '+ instanceType + ' Path '; + + instance.forEach(function (scope) { + infoPageTemplate += (scope.z) ? '/' + escapeAngleBrackets(scope.n) + '' : + '/' + scope.n + ''; + }); + + if (!(isPAInstance || isPA)) { // In case of NON PA instance OR PA report + infoPageTemplate += + '
    Design Unit ' + escapeAngleBrackets(du.n) + ' ' + escapeAngleBrackets(du.n) + ' (No Coverage)
    Language ' + language + '
    Source File ' + ((sourceFile.lineNum) ? ('' + sourceFile.name + '') : (sourceFile.name)) + '
    ' + + '
    '; + + $('#page-body').append(infoPageTemplate); + $('#page-body').append('
    '); +} + +function covSummaryByInstance(id, dataObj, type) { + var panelBodyId; + var columnDefs; + var rowData; + + columnDefs = [ + { + headerName: 'Instance', + headerTooltip: 'Instance', + headerClass: 'justify-left', + field: 'n', + tooltipField: 'n', + sort: 'asc', + minWidth: 200, width: 200, + cellStyle: { + 'text-align': 'left' + }, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + if (params.data.zf && params.data.id) { + return '' + params.value + ''; + } else { + return params.value; + } + }, + suppressCount: true + } + } + ]; + + ['a', 'b', 'fc', 'g', 'd', 'fe', 'fs', 'ft', 's', 't','pc', 'pg'].forEach(function (covType) { + if (dataObj.rec.data.hasOwnProperty(covType)) { + if (!(covType === 'f' || covType === 'gb' || covType === 'cvpc')) { + if (coverageMapper.hasOwnProperty(covType)) { + columnDefs.push({ + headerName: coverageMapper[covType], + headerTooltip: coverageMapper[covType], + field: covType, + tooltipField: covType, + minWidth: 120, width: covType === 'pc' || covType == 'pg' ? 180 : 120, maxWidth: covType === 'pc' || covType == 'pg' ? 180 : 120, + comparator: gridSortingCustomComparator, + filter: 'number', + cellRenderer: function (params) { + return (typeof params.value !== 'undefined') ? ((isValueExcluded(params)) ? 'Excluded' : (params.value + '%')) : '-'; + }, + cellClassRules: { + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return isValueExcluded(params); //In case of Exclusions + }, + } + }); + } + } + } + }); + + columnDefs.push( + { + headerName: 'Total', + headerTooltip: 'Total', + field: 'tc', + tooltipField: 'tc', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + return (typeof params.value !== 'undefined') ? ((isValueExcluded(params)) ? 'Excluded' : (params.value + '%')) : '-'; + }, + cellClassRules: { + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return isValueExcluded(params); //In case of Exclusions + }, + } + }); + + rowData = [{ + n: 'Total', + tc: dataObj.rec.cp, + rec: dataObj.rec, + group: true, + children: dataObj.children, + }]; + + if (dataObj.hasOwnProperty('loc')) { + rowData[0].children = [{ + n: dataObj.bc[dataObj.bc.length - 1].n, + zf: dataObj.bc[dataObj.bc.length - 1].z, + id: dataObj.bc[dataObj.bc.length - 1].s, + tc: dataObj.loc.cp, + group: true, + children: dataObj.children + }]; + + for (var covType in dataObj.loc.data) { + if (dataObj.loc.data.hasOwnProperty(covType)) { + rowData[0].children[0][covType] = (covType == 'g' || covType == 'pg') ? (dataObj.loc.data[covType][1]) : (typeof dataObj.loc.data[covType][0] === 'string') ? (dataObj.loc.data[covType][0]) : adjustPrecision((dataObj.loc.data[covType][1] / dataObj.loc.data[covType][0] * 100)); + } + } + } else { + rowData[0].children = dataObj.children; + } + + for (covType in dataObj.rec.data) { + if (dataObj.rec.data.hasOwnProperty(covType)) { + rowData[0][covType] = (covType == 'g' || covType == 'pg') ? (dataObj.rec.data[covType][1]) : (typeof dataObj.rec.data[covType][0] === 'string') ? (dataObj.rec.data[covType][0]) : adjustPrecision((dataObj.rec.data[covType][1] / dataObj.rec.data[covType][0] * 100)); + } + } + + panelBodyId = createPanel(id, (type == 'du') ? 'Design Unit Hierarchical Summary' : 'Coverage Summary By Instance', dataObj.rec.cp); + $('#' + panelBodyId).append('
    '); + + summaryUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.SUMMARY, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid', columnDefs, rowData, { + treeExpanded: true, + isTree: false, + urlParams: summaryUrlParams + }); + + $('#page-body').append('
    '); +} + +function getRowData(data, type) { + var gridData = []; + Object.keys(data).sort().forEach(function (covType) { + if (data.hasOwnProperty(covType)) { + if (!(covType === 'gb' || covType === 'cvpc' || covType === 'f' || covType === 'pb')) { + var rowData = { + name: coverageMapper[covType], + type: covType, + bins: data[covType][DATA_ARR.BINS_INDEX], + hit: data[covType][DATA_ARR.HITS_INDEX], + miss: data[covType][DATA_ARR.BINS_INDEX] - data[covType][DATA_ARR.HITS_INDEX], + cp: (covType === 'g' || covType === 'pg') ? data[covType][DATA_ARR.HITS_INDEX] : adjustPrecision(data[covType][DATA_ARR.HITS_INDEX] / data[covType][DATA_ARR.BINS_INDEX] * 100), + exclude: isShowExcluded? data[covType][DATA_ARR.EXCLUDED_INDEX] : -1 + }; + + if (data[covType].length > 3 || (data[covType].length > 2 && !isShowExcluded)) { + rowData.f = data[covType][DATA_ARR.FILE_NUM_INDEX]; + if (typeof data[covType][DATA_ARR.FILE_SUB_NUM_INDEX] !== 'undefined') { + rowData.fsub = data[covType][DATA_ARR.FILE_SUB_NUM_INDEX]; + } + } else if (data[covType].length > 1 && typeof data[covType][0] === 'string' && (typeof data[covType][1] !== 'string') ) { + rowData.f = data[covType][data[covType].length - 1]; + } + + rowData.s = urlParams.s; + if (urlParams.hasOwnProperty('oneInst')) { + rowData.oneInst = urlParams.oneInst; + } + + if (urlParams.hasOwnProperty('oneInst') || (urlParams.hasOwnProperty('type') && urlParams.type === 'du')) { + rowData.pr = dataObj.n; + } + + var cvgChildData; + if (covType == 'g') { + rowData.hit = -1; + rowData.miss = -1; + rowData.group = true; + // rowData.exclude = -1; + var cvgChildCovType = 'cvpc'; + if (data.hasOwnProperty(cvgChildCovType)) { + rowData.group = true; + cvgChildData = { + name: coverageMapper[cvgChildCovType], + type: cvgChildCovType, + bins: data[cvgChildCovType][DATA_ARR.BINS_INDEX], + hit: -1, + miss: -1, + cp: -1, + exclude: data[cvgChildCovType][DATA_ARR.EXCLUDED_INDEX -1] + }; + + var crossChildCovType = 'gb'; + if (data.hasOwnProperty(crossChildCovType)) { + cvgChildData.group = true; + cvgChildData.children = [ + { + name: coverageMapper[crossChildCovType], + type: crossChildCovType, + bins: data[crossChildCovType][DATA_ARR.BINS_INDEX], + hit: data[crossChildCovType][DATA_ARR.HITS_INDEX], + miss: data[crossChildCovType][DATA_ARR.BINS_INDEX] - data[crossChildCovType][DATA_ARR.HITS_INDEX], + cp: adjustPrecision(data[crossChildCovType][DATA_ARR.HITS_INDEX] / data[crossChildCovType][DATA_ARR.BINS_INDEX] * 100), + exclude: isShowExcluded? data[crossChildCovType][DATA_ARR.EXCLUDED_INDEX] : -1 + } + ]; + } + } + rowData.children = [cvgChildData]; + } + + var paCvgChildData; + if (covType == 'pg') { + rowData.hit = -1; + rowData.miss = -1; + rowData.group = true; + // rowData.exclude = -1; + var paCvgChildCovType = 'pb'; + if (data.hasOwnProperty(paCvgChildCovType)) { + rowData.group = true; + paCvgChildData = { + name: coverageMapper[paCvgChildCovType], + type: paCvgChildCovType, + bins: data[paCvgChildCovType][DATA_ARR.BINS_INDEX], + hit: data[paCvgChildCovType][DATA_ARR.HITS_INDEX], + miss: data[paCvgChildCovType][DATA_ARR.BINS_INDEX] - data[paCvgChildCovType][DATA_ARR.HITS_INDEX], + cp: adjustPrecision(data[paCvgChildCovType][DATA_ARR.HITS_INDEX] / data[paCvgChildCovType][DATA_ARR.BINS_INDEX] * 100), + exclude: isShowExcluded? data[paCvgChildCovType][DATA_ARR.EXCLUDED_INDEX] : -1 + }; + } + rowData.children = [paCvgChildData]; + } + + gridData.push(rowData); + } + } + }); + + return gridData; +} + +function covSummaryTables(id, dataObj, type) { + var panelBodyId; + var columnDefs = []; + columnDefs.push( + { + headerName: 'Coverage Type', + headerTooltip: 'Coverage Type', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + sort: 'asc', + minWidth: 150, width: 150, + suppressHideColumn: true, + suppressMovable: true, + cellStyle: { + 'text-align': 'left' + }, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + if (params.data.f && (params.data.type != 'gb' && params.data.type != 'cvpc' && params.data.type != 'pb')) { + return '' + params.value + ''; + } else { + return params.value; + } + }, + suppressCount: true + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); //In case of Exclusions + }, + }, + } + ); + + columnDefs.push( + { + headerName: 'Bins', + headerTooltip: 'bins', + field: 'bins', + tooltipField: 'bins', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if ((typeof params.data.bins === 'string') || (typeof params.data.hit === 'string')) { //In case of Exclusions + return '-'; + } else { + return params.value; + } + }, + cellClassRules: { + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); + }, + }, + }, + { + headerName: 'Hits', + headerTooltip: 'Hits', + field: 'hit', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if ((typeof params.data.bins === 'string') || (typeof params.data.hit === 'string')) { //In case of Exclusions + return '-'; + } else { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); + }, + } + } + ); + + if (!(GLOBAL_JSON.hasOwnProperty('nomissing') && GLOBAL_JSON.nomissing)) { + columnDefs.push( + { + headerName: 'Misses', + headerTooltip: 'Misses', + field: 'miss', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if ((typeof params.data.bins === 'string') || (typeof params.data.hit === 'string')) { //In case of Exclusions + return '-'; + } else { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); + }, + } + }); + } + if (isShowExcluded) { + columnDefs.push( + { + headerName: 'Excluded', + headerTooltip: 'Excluded', + field: 'exclude', + comparator: gridSortingCustomComparator, + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + return '' + ((isValueNa(params)) ? 'na' : params.value) + ''; + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); + }, + } + }); + } + columnDefs.push( + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'cp', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'number', + cellRenderer: function (params) { + if ((typeof params.data.bins === 'string') || (typeof params.data.hit === 'string')) { //In case of Exclusions + return 'Excluded'; + } else { + return '' + ((isValueNa(params)) ? 'na' : (isValueUndefined(params)) ? '-' : params.value + '%') + ''; + } + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return isValueBelowThreshold(params); + }, + 'warning': function (params) { + return isValueInRange(params); + }, + 'success': function (params) { + return isValueAboveThreshold(params); + }, + 'exclusion': function (params) { + return (typeof params.data.bins === 'string') || (typeof params.data.hit === 'string'); + }, + } + } + ); + + var locRecId = 'loc-rec'; + + $(id).append( (locRecTotalCount == 1) ? '
    ' : + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + ); + + var locRecCount = 1; + if (dataObj.loc) { + panelBodyId = createPanel('#' + locRecId + locRecCount, (type == 'du') ? 'Design Unit Coverage Details' : 'Local Instance Coverage Details', dataObj.loc.cp); + $('#' + panelBodyId).append('
    '); + + localUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.LOCAL, { + pageUrl: pageUrl + }); + + createDataGridInstance(panelBodyId + 'Grid-details', columnDefs, getRowData(dataObj.loc.data, type ), { + isTree: false, + urlParams: localUrlParams + }); + $('#page-body').append('
    '); + locRecCount++; + } + + if (dataObj.rec) { + panelBodyId = createPanel('#' + locRecId + locRecCount, 'Recursive Hierarchical Coverage Details', dataObj.rec.cp); + $('#' + panelBodyId).append('
    '); + + recursiveUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.RECURSIVE, { + pageUrl: pageUrl + }); + + createDataGridInstance(panelBodyId + 'Grid-details', columnDefs, getRowData(dataObj.rec.data), { + isTree: false, + urlParams: recursiveUrlParams + }); + $('#page-body').append('
    '); + } +} diff --git a/covhtmlreport/scripts/testPlan.js b/covhtmlreport/scripts/testPlan.js new file mode 100644 index 000000000..198ced0e3 --- /dev/null +++ b/covhtmlreport/scripts/testPlan.js @@ -0,0 +1,66 @@ +/* global $, document, getPageTemplate, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, loadJsonFile, updateUrlHash, headerTemplate, urlParams, queryUrlParamsByPrefix, gridSortingCustomComparator, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined */ +/* exported processTpLinks */ + +'use strict'; + +var startDate; +var pageSize = 25; +var tpUrlParams; + + +var pageUrl = 'testPlan.html?'; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + if (GLOBAL_JSON.testPlanReport) { // If testplan report remove menus Icons && Add Footer + $('#page-header-container a').remove(); + addFooter(); + } + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + // load json file + loadJsonFile('tp'); +}); + +function topPageDescription() { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Testplan Summary'); + + headerTemplate(urlParams); +} + +function processTpLinks(g_data) { + topPageDescription(); + + initializeTestPlanData(g_data.head, 'full-view'); + + var panelBodyId = createPanel('#page-body', ' Testplan Tracking'); + $('#' + panelBodyId).append('
    '); + + tpUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.TEST_PLAN, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance('testplan', testplanColumnDefs, getTestPlanRowData(g_data, 'full-view'), { + paginationEnabled: false, + urlParams: tpUrlParams, + }); + + if (urlParams.p) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + diff --git a/covhtmlreport/scripts/testRecords.js b/covhtmlreport/scripts/testRecords.js new file mode 100644 index 000000000..bf7f93c38 --- /dev/null +++ b/covhtmlreport/scripts/testRecords.js @@ -0,0 +1,508 @@ +/* global $, document, getPageTemplate ,createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, updateUrlHash, loadJsonFile, headerTemplate, urlParams, queryUrlParamsByPrefix, isValueUndefined */ +/* exported processTestRecordsData, closeDetails */ +'use strict'; + +var startDateTr; +var startDateTrDetails; +var timeDiffTr; +var timeDiffTrDetails; + +var testlistColumnDefs; +var trDetailsColumnDefs; + +var pageSize = 25; + +var gridOptionsDetails = {}; +var nodeParams; + +var trDataObj; +var dataObj; + +var trUrlParams; + +var TEST_RECORD_ITEM = { + TESTNAME: 0, + USER: 1, + CPUTIME: 2, + SIMTIME: 3, + TIMESCALE: 4, + STATUS: 5, + TESTDETAILS: 6, + FILENUMBER : 7, + USERATTR: 13 +}; + +var TEST_RECORD_STATUS = { + OK: 0, + WARNING: 1, + ERROR: 2, + FATAL: 3, + MISSING: 4 +}; + +var TEST_ATTR = { + 0: 'File Name', + 1: 'Date', + 2: 'Seed', + 3: 'VSIM Args', + 4: 'Test Args', + 5: 'Comment', + 6: 'Compulsory', + 7: 'Host Name', + 8: 'Host O/S', + 9: 'Log File', + 10: 'Memory Usage', + 11: 'Tool Version', + 12: 'WLF File' +}; + +var MONTH = { + 1: 'Jan', + 2: 'Feb', + 3: 'Mar', + 4: 'Apr', + 5: 'May', + 6: 'Jun', + 7: 'Jul', + 8: 'Aug', + 9: 'Sep', + 10: 'Oct', + 11: 'Nov', + 12: 'Dec' +}; + +var DATE = { + 'YEAR_START': 0, + 'YEAR_END': 4, + 'MONTH_END': 6, + 'DAYS_END': 8, + 'HOURS_END': 10, + 'MINS_END': 12, + 'SECS_END': 14 +}; + +var PREFIX = { + TEST_RECORDS: 'tr' +}; + +var pageUrl = 'testRecords.html?'; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDateTr = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + loadJsonFile('tr'); +}); + +function topPageDescription() { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Test Records Summary'); + + headerTemplate(urlParams); +} + +function processTestRecordsData (g_data) { + dataObj = g_data; + + topPageDescription(); + + initializeData(); + + $('#page-body').append(getTemplate('tr')); + var panelBodyId = createPanel('#trPanel', ' Test included in report'); + $('#' + panelBodyId).append('
    '); + + trUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.TEST_RECORDS, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance('trGrid', testlistColumnDefs, getRowData(dataObj), { + isTree: false, + urlParams: trUrlParams, + callback: function(firstNodeIndex) { + var rowId = urlParams.hasOwnProperty(PREFIX.TEST_RECORDS) ? urlParams[PREFIX.TEST_RECORDS] : firstNodeIndex; + $('a[name="' + rowId + '"]')[0].click(); + } + }); + + if (urlParams.p) { + timeDiffTr = new Date() - startDateTr; + } +} + +function getRowData(data) { + var rowData = []; + + Object.keys(data).forEach(function(test) { + data[test].forEach(function(item) { + rowData.push({ + testname: item[TEST_RECORD_ITEM.TESTNAME], + user: item[TEST_RECORD_ITEM.USER], + cpuTime: (item[TEST_RECORD_ITEM.CPUTIME]), + simTime: item[TEST_RECORD_ITEM.SIMTIME] + ' ' + item[TEST_RECORD_ITEM.TIMESCALE], + status: (item[TEST_RECORD_ITEM.STATUS] === TEST_RECORD_STATUS.OK) ? 'Ok' : (item[TEST_RECORD_ITEM.STATUS] === TEST_RECORD_STATUS.WARNING) ? 'Warning' : (item[TEST_RECORD_ITEM.STATUS] === TEST_RECORD_STATUS.ERROR) ? 'Error' : (item[TEST_RECORD_ITEM.STATUS] === TEST_RECORD_STATUS.FATAL) ? 'Fatal' : (item[TEST_RECORD_ITEM.STATUS] === TEST_RECORD_STATUS.MISSING) ? 'Missing' : 'Merge error', + detailsId: item[TEST_RECORD_ITEM.TESTDETAILS], + file : item[TEST_RECORD_ITEM.FILENUMBER] + }); + }); + }); + return rowData; +} + +function processTestdetailsData(data) { + var item = data[nodeParams.data.detailsId]; + if (!item) { + loadJsonFile('td' + nodeParams.data.file); + } else { + $('.external-script').remove(); // Remove external Scripts loaded by details + trDataObj = data; + var detailsRowData = []; + var rowItems; + + Object.keys(TEST_ATTR).forEach(function (attr) { + rowItems = {}; + + rowItems.attribute = TEST_ATTR[attr]; + rowItems.value = item[attr]; + + detailsRowData.push(rowItems); + }); + + if (item[TEST_RECORD_ITEM.USERATTR]) { + item[TEST_RECORD_ITEM.USERATTR].forEach(function (usrAttr) { + rowItems = {}; + rowItems.attribute = usrAttr[0]; + rowItems.value = ""; + rowItems.externalValue = usrAttr[1] + if (usrAttr[1].indexOf('') == (usrAttr[1].length - 4) ) { // Only anchor link + rowItems.anchorLink = true; + } + detailsRowData.push(rowItems); + }); + } + + gridOptionsDetails.trs = createDataGridInstance('trsGrid', trDetailsColumnDefs, detailsRowData, { + pageSize: pageSize, + isTree: false + }); + $('#trsGrid-toolbar').remove(); + $('#trsGrid .ag-paging-panel').remove(); + $('#trsGrid .ag-pivot-off').height('25px'); + + if (urlParams.p) { + timeDiffTrDetails = new Date() - startDateTrDetails; + console.save(urlParams.p + ' ,Total Loading time ' + ((timeDiffTr || 0) + timeDiffTrDetails), 'z_console.txt'); + } + } +} + +function initializeData() { + testlistColumnDefs = [ + { + headerName: 'Testname', + headerTooltip: 'Testname', + headerClass: 'justify-left', + field: 'testname', + tooltipField: 'testname', + minWidth: 200, width: 200, + filter: 'text', + suppressHideColumn: true, + suppressMovable: true, + cellRenderer: NameCellRenderer, + cellStyle: { + 'text-align': 'left', + } + }, + { + headerName: 'User', + headerTooltip: 'User', + field: 'user', + tooltipField: 'user', + minWidth: 120, width: 120, maxWidth: 300, + filter: 'text', + headerClass: 'justify-left', + cellStyle: { + 'text-align': 'left', + + }, + }, + { + headerName: 'CPU Time', + headerTooltip: 'CPU Time', + field: 'cpuTime', + tooltipField: 'cpuTime', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'text', + comparator: function (number1, number2) { + if (number1 === null && number2 === null) { + return 0; + } + if (number1 === null) { + return -1; + } + if (number2 === null) { + return 1; + } + + return number1 - number2; + } + }, + { + headerName: 'SIM Time', + headerTooltip: 'SIM Time', + field: 'simTime', + tooltipField: 'simTime', + minWidth: 120, width: 120, maxWidth: 200, + filter: 'text', + comparator: function (number1, number2) { + if (number1 === null && number2 === null) { + return 0; + } + if (number1 === null) { + return -1; + } + if (number2 === null) { + return 1; + } + var num1 = number1.substring(0 ,number1.length - 2); + var num2 = number2.substring(0, number2.length - 2); + return num1 - num2 ; + + } + }, + { + headerName: 'Status', + headerTooltip: 'Status', + field: 'status', + tooltipField: 'status', + minWidth: 120, width: 120, maxWidth: 120, + filter: 'text', + cellClassRules: { + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return (params.value === 'Error') || (params.value === 'Fatal') || (params.value === 'Merge error'); + }, + 'warning': function (params) { + return (params.value === 'Warning') || (params.value === 'Missing'); + }, + 'success': function (params) { + return params.value === 'Ok'; + } + } + } + ]; + + trDetailsColumnDefs = [ + { + headerName: 'Attribute', + headerTooltip: 'Attribute', + headerClass: 'justify-left', + field: 'attribute', + tooltipField: 'attribute', + suppressFilter: true, + minWidth: 125, width: 125, maxWidth: 125, + cellStyle: { + 'text-align': 'left', + 'background-color': '#ecf0f1' + } + }, + { + headerName: 'Value', + headerTooltip: 'Value', + field: 'value', + tooltipField: 'value', + suppressFilter: true, + minWidth: 120, + width: 'auto', + headerClass: 'justify-left', + cellStyle: { + 'text-align': 'left', + 'height':'auto', + 'left': '125px' + }, + cellRenderer: function (params) { + if (params.data.attribute === 'Date') { + return params.value.substring(DATE.MONTH_END, DATE.DAYS_END) + ' ' + MONTH[Number(params.value.substring(DATE.YEAR_END, DATE.MONTH_END))] + ' ' + params.value.substring(DATE.YEAR_START, DATE.YEAR_END) + ' ' + params.value.substring(DATE.DAYS_END, DATE.HOURS_END) + ':' + params.value.substring(DATE.HOURS_END, DATE.MINS_END) + ':' + params.value.substring(DATE.MINS_END, DATE.SECS_END); + } else if (params.data.attribute === 'Compulsory') { + return (params.value === 1) ? 'Yes' : 'No'; + } else if (params.data.attribute === 'Log File') { + return ''+ params.value.split('/').pop() +'' + } else if (params.data.anchorLink) { + var result = parseAnchorLink(params.data.externalValue); + var divExtrAttr = 'z="' + result[0] + '"'; + return '
    '; + } else if (params.data.externalValue) { + var div = document.createElement('div'); + div.innerHTML =params.data.externalValue; + div.title = params.data.externalValue; + detectScripts(params.data.externalValue); + return div; + } + + else { + return params.value; + } + }, + }, + ]; +} +function detectScripts(target) { + var index = target.indexOf('')[1]; + var scriptText = tmp.split("")[0]; + scriptText = scriptText.substr(0, scriptText.length - 8); + var remaingString = tmp.split("")[1]; + + var script = document.createElement('script'); + script.className = "external-script"; + script.text = scriptText; + $("head")[0].appendChild(script); + + if (remaingString) { + detectScripts(remaingString); + } + } +} + +function parseAnchorLink(link) { + var href= (link.split('href="')[1]).split('"')[0]; + var linkText = (link.split('>')[1]).split('<')[0]; + return [href, linkText]; + +} + + +function navigateToExternalLink(e) { + window.top.location.href= "http://" + e.path[1].attributes[0].value; +} + +function getTemplate(tempId) { + var templates = { + 'tr': + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ', + 'details': + '' + }; + return templates[tempId]; +} + +function closeDetails() { + $('#tr').removeClass('col-xs-5 non-animated fadeInRightBig'); + $('#tr').addClass('col-xs-12 non-animated fadeInLeft'); + $('#details-container').remove(); +} + + +function NameCellRenderer() {} + +NameCellRenderer.prototype.init = function(params) { + var renderDetails = this.renderDetails; + + var href = 'testRecords.html?selected=' + params.rowIndex ; + var cellValue = params.value; + + var cellTemplate = $( + '
    ' + + ((typeof href === 'undefined') ? ('' + cellValue + '') : ('' + cellValue + '')) + + '
    ' + ); + + var cellTemplateObj = $(cellTemplate); + + // handling details + var details = cellTemplateObj[0].querySelector('a#testRecords_a' + params.rowIndex); + if (details) { + details.addEventListener('click', function (e) { + startDateTrDetails = new Date(); + // console.log(e) + e.preventDefault(); + + if (e.which == 1) { + // Remove old instance of testdetails + for (var gridOptions in gridOptionsDetails) { + if (gridOptionsDetails.hasOwnProperty(gridOptions)) { + if (typeof gridOptionsDetails[gridOptions] !== 'undefined') { + gridOptionsDetails[gridOptions].api.destroy(); + gridOptionsDetails[gridOptions] = undefined; + } + } + } + + var headerTemplate = '
    Test details'; + + headerTemplate += ':
        ' + cellValue + '

    '; + headerTemplate += '
    '; + $('.ag-row').removeClass('clicked-row'); + $(e.path[5]).addClass('clicked-row'); + $('#details-container').remove(); + $('#tr-container').append(getTemplate('details')); + $('#details-container .row').prepend( headerTemplate); + + if ($('#tr').hasClass('col-xs-12')) { + $('#details-container').addClass('col-xs-7 non-animated fadeInDown'); + } + + if (!$('#tr').hasClass('col-xs-5')) { + $('#tr').removeClass('col-xs-12'); + $('#tr').addClass('col-xs-5 non-animated fadeInRight'); + } + + $('#details-container').css({'display': ''}); + renderDetails(params); + } + }); + } + this.eGui = cellTemplateObj[0]; +}; + +NameCellRenderer.prototype.getGui = function() { + return this.eGui; +}; + +NameCellRenderer.prototype.renderDetails = function(params) { + nodeParams = params; + updateUrlHash({selected: params.rowIndex}); + + var pageUrl = 'testRecords.html?'; + $.extend(urlParams, {selected: params.rowIndex}); + Object.keys(urlParams).forEach(function(param) { + pageUrl += param + '=' + urlParams[param] + '&'; + }); + pageUrl = pageUrl.substr(0, pageUrl.length - 1); + window.history.replaceState(pageUrl, '', pageUrl); + + if (trDataObj == undefined) { + loadJsonFile('td1'); + } else { + processTestdetailsData(trDataObj); + } +}; diff --git a/covhtmlreport/scripts/toggles.js b/covhtmlreport/scripts/toggles.js new file mode 100644 index 000000000..adb009f4e --- /dev/null +++ b/covhtmlreport/scripts/toggles.js @@ -0,0 +1,617 @@ +/* global $, document, console, createDataGridInstance, createPanel, parseUrl, GLOBAL_JSON, headerTemplate, loadJsonFile, updateUrlHash, getPageTemplate, hitsRenderer, urlParams, pageName, queryUrlParamsByPrefix, isValueAboveThreshold, isValueBelowThreshold, isValueInRange, isValueUndefined, isValueNa, isTogglesExtendedValueExcluded */ +/* exported processScopesDbFile, processSummaryData, processTogglesData */ + +'use strict'; + +var startDate; +var dataObj = {}; +var ScalarColumnDefs; +var EnumColumnDefs; +var IntColumnDefs; +var IntEnumColumnDefs; +var pageSize = 25; +var ScalarExist; +var EnumExist; +var IntExist; +var rowData = []; +var enumRowData = []; +var intRowData = []; +var tree; + +var intUrlParams; +var scalarUrlParams; +var enumUrlParams; + +var TOGGLES = { + EXTENDED: 'ext', + ARRAY: 't', + NAME: 'n', + KIND: 'k', + FILE: 'f', + LINE: 'l', + TRANS_ARRAY: 'tr', + TRANS_NAME: 'n', + TRANS_COUNT: 'c', + THIT: 'th', + THIT_FILE_NUM: 0, + THIT_SCOPE: 1, + COVERAGE: 'c', + EXCLUSION_COMMENT: 'ec', + ENUM: 0, + INT: 1, + REG_SCALAR: 4, + REG_SCALAR_EXT: 5, + SCALAR: 6, + SCALAR_EXT: 7, + REAL: 8 +}; + +var TOGGLES_VALUES = { + 0: 'hToL', + 1: 'lToH', + 2: 'lToZ', + 3: 'hToZ', + 4: 'zToL', + 5: 'zToH' +}; + +var PREFIX = { + INT: 'ti', + SCALAR: 'tsca', + ENUM: 'tenum' +}; + +var pageUrl = pageName.t; + +/* main routine */ +$(document).ready(function () { + $('body').append(getPageTemplate()); + + startDate = new Date(); + + // update document title + document.title = GLOBAL_JSON.prod + ' ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'; + + // parse url + urlParams = parseUrl(); + + // update url hash + updateUrlHash(); + + // load json file + loadJsonFile('t' + urlParams.f); +}); + +function processTogglesData(g_data) { + var panelBodyId; + + dataObj = g_data[Number(urlParams.s)] || g_data[Number(urlParams.oneInst)]; + + if (urlParams.hasOwnProperty('fsub') && urlParams.f == urlParams.fsub) { + if (g_data.hasOwnProperty(urlParams.s + '_sub')) { + $.merge(dataObj.t, g_data[urlParams.s + '_sub'].t); + } + } + + topPageDescription(urlParams.pr || dataObj.pr); + + // initialize dataGrid data + initializeData(dataObj[TOGGLES.EXTENDED]); + + panelBodyId = createPanel('#page-body', 'Toggles Coverage', urlParams.cp); + + getRowData(dataObj); + if (ScalarExist) { + $('#' + panelBodyId).append('
    '); + + scalarUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.SCALAR, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid-scalar', ScalarColumnDefs, rowData, { + isTree: false, + urlParams: scalarUrlParams, + }); + } + + if (EnumExist) { + if (ScalarExist) { + $('#' + panelBodyId).append('



    '); + } + $('#' + panelBodyId).append('
    '); + + enumUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.ENUM, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid-enum', EnumColumnDefs, enumRowData, { + treeExpanded: true, + isTree: tree, + urlParams: enumUrlParams, + }); + } + + if (IntExist) { + if (ScalarExist || EnumExist) { + $('#' + panelBodyId).append('



    '); + } + $('#' + panelBodyId).append('
    '); + + intUrlParams = queryUrlParamsByPrefix(urlParams, PREFIX.INT, { + pageUrl: pageUrl, + pageSize: pageSize + }); + + createDataGridInstance(panelBodyId + 'Grid-int', IntColumnDefs, intRowData, { + treeExpanded: true, + isTree: tree, + urlParams: intUrlParams, + }); + } + + if (urlParams.hasOwnProperty('p')) { + var timeDiff = new Date() - startDate; + console.save(urlParams.p + ',' + timeDiff, 'z_console.txt'); + } +} + +function topPageDescription(instance) { + $('#page-header-text').text(GLOBAL_JSON.prod + ' Toggles ' + GLOBAL_JSON.formal_report_name + 'Coverage Report'); + + headerTemplate(urlParams, instance); +} + +function getRowData(data) { + var ext = data[TOGGLES.EXTENDED]; + + data[TOGGLES.ARRAY].forEach(function(toggle) { + var rowItems = {} ; + rowItems = { + name: toggle[TOGGLES.NAME], + file: toggle[TOGGLES.FILE], + line: toggle[TOGGLES.LINE], + lToH: 0, + hToL: 0, + exc: toggle[TOGGLES.EXCLUSION_COMMENT] + }; + if (ext) { //Extended toggles + rowItems.lToZ = 0; + rowItems.zToH = 0; + rowItems.hToZ = 0; + rowItems.zToL = 0; + } + if (toggle[TOGGLES.KIND] === TOGGLES.SCALAR || toggle[TOGGLES.KIND] === TOGGLES.SCALAR_EXT || toggle[TOGGLES.KIND] === TOGGLES.REG_SCALAR || toggle[TOGGLES.KIND] === TOGGLES.REG_SCALAR_EXT) { //Scalar toggle + ScalarExist = true; + //items have values not zero + if(TOGGLES.TRANS_ARRAY in toggle) { + toggle[TOGGLES.TRANS_ARRAY].forEach(function(scalarToggle) { + rowItems[TOGGLES_VALUES[scalarToggle[TOGGLES.TRANS_NAME]]] = scalarToggle[TOGGLES.TRANS_COUNT]; + if (TOGGLES.THIT in scalarToggle) { + rowItems[TOGGLES_VALUES[scalarToggle[TOGGLES.TRANS_NAME]] + '_thitf'] = scalarToggle[TOGGLES.THIT][TOGGLES.THIT_FILE_NUM]; + rowItems[TOGGLES_VALUES[scalarToggle[TOGGLES.TRANS_NAME]] + '_thits'] = scalarToggle[TOGGLES.THIT][TOGGLES.THIT_SCOPE]; + } + }); + } + rowItems.coverage = toggle[TOGGLES.COVERAGE]; + rowData.push(rowItems); + } else { //Enum, Int + if (toggle[TOGGLES.KIND] === TOGGLES.ENUM) { //Enum + EnumExist = true; + if (!(TOGGLES.TRANS_ARRAY in toggle) || toggle[TOGGLES.TRANS_ARRAY].length != 1) { + enumRowData.push({ + name: toggle[TOGGLES.NAME], + file: toggle[TOGGLES.FILE], + line: toggle[TOGGLES.LINE], + enump: 1, + }); + if (TOGGLES.TRANS_ARRAY in toggle) { + enumRowData[enumRowData.length - 1].children = []; + enumRowData[enumRowData.length - 1].group = true; + tree = true; + } + } + if (TOGGLES.TRANS_ARRAY in toggle) { + toggle[TOGGLES.TRANS_ARRAY].forEach(function(enumToggle) { + rowItems = { + hits: 0 + }; + rowItems.hits = enumToggle[TOGGLES.TRANS_COUNT]; + rowItems.name = enumToggle[TOGGLES.TRANS_NAME]; + rowItems.c = toggle[TOGGLES.EXCLUSION_COMMENT] + if (TOGGLES.THIT in enumToggle) { + rowItems.thitf = enumToggle[TOGGLES.THIT][TOGGLES.THIT_FILE_NUM]; + rowItems.thits = enumToggle[TOGGLES.THIT][TOGGLES.THIT_SCOPE]; + } + + if (toggle[TOGGLES.TRANS_ARRAY].length === 1) { + rowItems.coverage = ((rowItems.hToL > 0 && rowItems.lToH > 0) ? 100 : (rowItems.hToL > 0 || rowItems.lToH > 0) ? 50 : 0); + enumRowData.push(rowItems); + } else { + rowItems.coverage = (typeof rowItems.hits == 'string') ? 'Excluded' : (rowItems.hits > 0 ) ? 'Covered' : 'Not Covered'; + rowItems.enum = 1; + enumRowData[enumRowData.length - 1].children.push(rowItems); + } + }); + } + } else if (toggle[TOGGLES.KIND] === TOGGLES.INT || toggle[TOGGLES.KIND] === TOGGLES.REAL) { //int or Real + IntExist = true; + if (!(TOGGLES.TRANS_ARRAY in toggle) || toggle[TOGGLES.TRANS_ARRAY].length != 1) { + rowItems = { + name: toggle[TOGGLES.NAME], + coverage: 'Covered', + enump: 1 + }; + if (!(TOGGLES.TRANS_ARRAY in toggle)) { + rowItems.hits = toggle[TOGGLES.COVERAGE] == 'E' ? 'Excluded' : 0; + rowItems.coverage = toggle[TOGGLES.COVERAGE] == 'E' ? 'Excluded' : 'Not Covered'; + } else { + rowItems.hits = toggle[TOGGLES.COVERAGE] == 'E' ? 'E-hit' : '-'; + rowItems.coverage = toggle[TOGGLES.COVERAGE] == 'E' ? 'Excluded' : 'Covered'; + } + + intRowData.push(rowItems); + if (TOGGLES.TRANS_ARRAY in toggle) { + intRowData[intRowData.length - 1].children = []; + intRowData[intRowData.length - 1].group = true; + tree = true; + } + } + + if (TOGGLES.TRANS_ARRAY in toggle) { + toggle[TOGGLES.TRANS_ARRAY].forEach(function(intToggle) { + rowItems = { + hits: 0 + }; + + rowItems.hits = intToggle[TOGGLES.TRANS_COUNT]; + rowItems.name = intToggle[TOGGLES.TRANS_NAME]; + if (TOGGLES.THIT in intToggle) { + rowItems.thitf = intToggle[TOGGLES.THIT][TOGGLES.THIT_FILE_NUM]; + rowItems.thits = intToggle[TOGGLES.THIT][TOGGLES.THIT_SCOPE]; + } + + if (toggle[TOGGLES.TRANS_ARRAY].length === 1) { + intRowData.push(rowItems); + } else { + rowItems.enum = 1; + intRowData[intRowData.length - 1].children.push(rowItems); + } + }); + } + } + } + }); +} + +function initializeData(EXT) { + ScalarColumnDefs = [ + { + headerName: 'SCALAR Signal / Value', + headerTooltip: 'Signal / Value', + headerClass: 'justify-left', + field: 'name', + tooltipField: 'name', + minWidth: 120, width: 300, + cellRenderer: 'group', + suppressHideColumn: true, + suppressMovable: true, + cellRendererParams: { + innerRenderer: function (params) { + var link = (GLOBAL_JSON.hasOwnProperty('srcAnnotate') && GLOBAL_JSON.srcAnnotate && params.data.file && params.data.line) ? + ('' + params.value + '') : params.value ; + if (params.data.enum) { + return '' + link + ''; + } else { + return link; + } + }, + suppressCount: true + }, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + } + ]; + if (EXT) { + ScalarColumnDefs.push( + { + headerName: 'Hits', + headerTooltip: 'Hits', + headerClass: 'justify-center', + tooltipField: 'hits', + field: 'hits', + filter: 'number', + minWidth: 120, width: 300, + Style: { + 'float': 'right', + }, + children: [ + {headerName: '0L->1H', field: 'lToH', tooltipField: 'lToH', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'lToH_thitf', scope: 'lToH_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + + }, + {headerName: '1H->0L', field: 'hToL', tooltipField: 'hToL', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'hToL_thitf', scope: 'hToL_thits'}); + + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + {headerName: '0L->Z', field: 'lToZ', tooltipField: 'lToZ', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'lToZ_thitf', scope: 'lToZ_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + {headerName: 'Z->0L', field: 'zToL', tooltipField: 'zToL', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'zToL_thitf', scope: 'zToL_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + {headerName: '1H->Z', field: 'hToZ', tooltipField: 'hToZ', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'hToZ_thitf', scope: 'hToZ_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + {headerName: 'Z->1H', field: 'zToH', tooltipField: 'zToH', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'zToH_thitf', scope: 'zToH_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + ], + cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + + } + }); + } else { + ScalarColumnDefs.push( + { + headerName: 'Hits', + headerTooltip: 'Hits', + headerClass: 'justify-center', + tooltipField: 'hits', + field: 'hits', + filter: 'number', + minWidth: 120, width: 300, + Style: { + 'float': 'right', + }, + children: [ + {headerName: '->1', field: 'lToH', tooltipField: 'lToH', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'lToH_thitf', scope: 'lToH_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + + }, + {headerName: '->0', field: 'hToL', tooltipField: 'hToL', filter: 'number', minWidth: 50, width: 50, + cellRenderer: function (params) { + return hitsRenderer(params, {fileNum: 'hToL_thitf', scope: 'hToL_thits'}); + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + ], + cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + + } + }); + } + ScalarColumnDefs.push( + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'coverage', + tooltipField: 'coverage', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + return (params.value === 'E') ? 'Excluded' : (isValueNa(params)) ? 'na' : (isValueUndefined(params) && !params.data.enump) ? '-' : (params.data.enump || params.data.enum ) ? params.value : (params.value) + '%'; + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return ((isValueBelowThreshold(params)) || params.value === 'Not Covered') && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'warning': function (params) { + return isValueInRange(params) && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'success': function (params) { + return (isValueAboveThreshold(params) || params.value === 'Covered') && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + } + }); + + EnumColumnDefs = [ + { + headerName: 'ENUM Signal / Value', + headerTooltip: 'ENUM Signal / Value', + headerClass: 'justify-left', + tooltipField: 'name', + field: 'name', + minWidth: 120, width: 300, + suppressHideColumn: true, + suppressMovable: true, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + var link = (GLOBAL_JSON.hasOwnProperty('srcAnnotate') && GLOBAL_JSON.srcAnnotate && params.data.file && params.data.line) ? + ('' + params.value + '') : params.value ; + if (params.data.enum) { + return '' + link + ''; + } else { + return link; + } + }, + suppressCount: true + }, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + ]; + + IntColumnDefs = [ + { + headerName: 'INTEGER Signal / Value', + headerTooltip: 'INTEGER Signal / Value', + headerClass: 'justify-left', + tooltipField: 'name', + field: 'name', + minWidth: 120, width: 300, + suppressHideColumn: true, + suppressMovable: true, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: function (params) { + if (params.data.enum) { + return '' + params.value + ''; + } else { + return params.value; + } + }, + suppressCount: true + }, + cellStyle: { + 'text-align': 'left', + 'left': '4px' + }, + cellClassRules: { + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + }, + }, + ]; + + IntEnumColumnDefs = [ + { + headerName: 'Hits', + headerTooltip: 'Hits', + headerClass: 'justify-center', + tooltipField: 'hits', + field: 'hits', + filter: 'number', + minWidth: 120, width: 300, + Style: { + 'float': 'right', + }, + cellClassRules: { + 'danger': function (params) { + return params.value == 0; + }, + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + } + }, + cellRenderer: function(params) { + return hitsRenderer(params, {fileNum: 'thitf', scope: 'thits'}); + } + }, + { + headerName: 'Coverage', + headerTooltip: 'Coverage', + field: 'coverage', + tooltipField: 'coverage', + filter: 'number', + minWidth: 120, width: 120, maxWidth: 120, + cellRenderer: function (params) { + return ((typeof params.data.lToH === 'string') && (typeof params.data.hToL === 'string')) ? 'Excluded' : (isValueNa(params)) ? 'na' : (isValueUndefined(params) && !params.data.enump) ? '-' : (params.data.enump || params.data.enum ) ? params.value : (params.value) + '%'; + }, + cellClassRules: { + 'fg-disabled': function (params) { + return isValueNa(params); + }, + 'undefined': function (params) { + return isValueUndefined(params); + }, + 'danger': function (params) { + return ((isValueBelowThreshold(params)) || params.value === 'Not Covered') && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'warning': function (params) { + return isValueInRange(params) && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'success': function (params) { + return (isValueAboveThreshold(params) || params.value === 'Covered') && !((typeof params.data.lToH === 'string') || (typeof params.data.hToL === 'string')); + }, + 'exclusion': function (params) { + return isTogglesExtendedValueExcluded(params); + }, + } + } + ]; + + EnumColumnDefs.push.apply(EnumColumnDefs, IntEnumColumnDefs); + IntColumnDefs.push.apply(IntColumnDefs, IntEnumColumnDefs); +} diff --git a/covhtmlreport/sourceViewer.html b/covhtmlreport/sourceViewer.html new file mode 100644 index 000000000..80dec40c9 --- /dev/null +++ b/covhtmlreport/sourceViewer.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/statements.html b/covhtmlreport/statements.html new file mode 100644 index 000000000..3b350d874 --- /dev/null +++ b/covhtmlreport/statements.html @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/summary.html b/covhtmlreport/summary.html new file mode 100644 index 000000000..b56d353f5 --- /dev/null +++ b/covhtmlreport/summary.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/testPlan.html b/covhtmlreport/testPlan.html new file mode 100644 index 000000000..4dcc9f383 --- /dev/null +++ b/covhtmlreport/testPlan.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/testRecords.html b/covhtmlreport/testRecords.html new file mode 100644 index 000000000..ee4063c5f --- /dev/null +++ b/covhtmlreport/testRecords.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/toggles.html b/covhtmlreport/toggles.html new file mode 100644 index 000000000..399c8cb46 --- /dev/null +++ b/covhtmlreport/toggles.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/covhtmlreport/vendor/ag-grid/ag-grid.min.noStyle.js b/covhtmlreport/vendor/ag-grid/ag-grid.min.noStyle.js new file mode 100644 index 000000000..31062364e --- /dev/null +++ b/covhtmlreport/vendor/ag-grid/ag-grid.min.noStyle.js @@ -0,0 +1,812 @@ +// ag-grid v13.1.2 +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.agGrid=t():e.agGrid=t()}(this,function(){return function(e){function t(i){if(o[i])return o[i].exports;var n=o[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,i){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=113)}([function(e,t,o){"use strict";function i(e,t){var o=[null].concat(t);return new(e.bind.apply(e,o))}function n(e,t,o){var i=c(e.constructor);i.postConstructMethods||(i.preConstructMethods=[]),i.preConstructMethods.push(t)}function r(e,t,o){var i=c(e.constructor);i.postConstructMethods||(i.postConstructMethods=[]),i.postConstructMethods.push(t)}function s(e,t,o){var i=c(e.constructor);i.preDestroyMethods||(i.preDestroyMethods=[]),i.preDestroyMethods.push(t)}function a(e){return function(t){c(t).beanName=e}}function l(e){return function(t,o,i){u(t,e,!1,t,o,null)}}function p(e){return function(t,o,i){u(t,e,!0,t,o,null)}}function u(e,t,o,i,n,r){if(null===t)return void console.error("ag-Grid: Autowired name should not be null");if("number"==typeof r)return void console.error("ag-Grid: Autowired should be on an attribute");var s=c(e.constructor);s.agClassAttributes||(s.agClassAttributes=[]),s.agClassAttributes.push({attributeName:n,beanName:t,optional:o})}function d(e){return function(t,o,i){var n,r="function"==typeof t?t:t.constructor;if("number"==typeof i){var s=void 0;o?(n=c(r),s=o):(n=c(r),s="agConstructor"),n.autowireMethods||(n.autowireMethods={}),n.autowireMethods[s]||(n.autowireMethods[s]={}),n.autowireMethods[s][i]=e}}}function c(e){return e.hasOwnProperty("__agBeanMetaData")||(e.__agBeanMetaData={}),e.__agBeanMetaData}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var h=o(1),f=function(){function e(e,t){if(this.beans={},this.componentsMappedByName={},this.destroyed=!1,e&&e.beans){this.contextParams=e,this.logger=t,this.logger.log(">> creating ag-Application Context"),this.setupComponents(),this.createBeans();var o=h.Utils.mapObject(this.beans,function(e){return e.beanInstance});this.wireBeans(o),this.logger.log(">> ag-Application Context ready - component is alive")}}return e.prototype.setupComponents=function(){var e=this;this.contextParams.components&&this.contextParams.components.forEach(function(t){return e.addComponent(t)})},e.prototype.addComponent=function(e){var t=e.componentName.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=t.toUpperCase();this.componentsMappedByName[o]=e.theClass},e.prototype.createComponent=function(e){var t=e.nodeName;if(this.componentsMappedByName&&this.componentsMappedByName[t]){var o=new this.componentsMappedByName[t];return this.wireBean(o),this.copyAttributesFromNode(e,o.getHtmlElement()),o.attributesSet(),o}return null},e.prototype.copyAttributesFromNode=function(e,t){if(e.attributes)for(var o=e.attributes.length,i=0;i> Shutting down ag-Application Context"),h.Utils.iterateObject(this.beans,function(e,t){var o=t.beanInstance;o.constructor.__agBeanMetaData&&o.constructor.__agBeanMetaData.preDestroyMethods&&o.constructor.__agBeanMetaData.preDestroyMethods.forEach(function(e){return o[e]()})}),this.destroyed=!0,this.logger.log(">> ag-Application Context shut down - component is dead"))},e}();t.Context=f,t.PreConstruct=n,t.PostConstruct=r,t.PreDestroy=s,t.Bean=a,t.Autowired=l,t.Optional=p,t.Qualifier=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,n=/([^\s,]+)/g,r=function(){function e(){this.timestamp=(new Date).getTime()}return e.prototype.print=function(e){var t=(new Date).getTime()-this.timestamp;console.log(e+" = "+t),this.timestamp=(new Date).getTime()},e}();t.Timer=r;var s={"&":"&","<":"<",">":">",'"':""","'":"'"},a=/[&<>"']/g,l=function(){function e(){}return e.areEventsNear=function(e,t,o){if(0===o)return!1;var i=Math.abs(e.clientX-t.clientX),n=Math.abs(e.clientY-t.clientY);return Math.max(i,n)<=o},e.shallowCompare=function(e,t){if(this.missing(e)&&this.missing(t))return!0;if(this.missing(e)||this.missing(t))return!1;if(e.length!==t.length)return!1;for(var o=0;o1?i[1]:""},e.values=function(e){var t=[];return this.iterateObject(e,function(e,o){t.push(o)}),t},e.getValueUsingField=function(e,t,o){if(t&&e){if(o){for(var i=t.split("."),n=e,r=0;r=0},e.addChangeListener=function(e,t){e.addEventListener("changed",t),e.addEventListener("paste",t),e.addEventListener("input",t),e.addEventListener("keydown",t),e.addEventListener("keyup",t)},e.makeNull=function(e){return null===e||void 0===e||""===e?null:e},e.missing=function(e){return!this.exists(e)},e.missingOrEmpty=function(e){return this.missing(e)||0===e.length},e.missingOrEmptyObject=function(e){return this.missing(e)||0===Object.keys(e).length},e.exists=function(e){return null!==e&&void 0!==e&&""!==e},e.anyExists=function(e){if(e)for(var t=0;t0},e.removeAllChildren=function(e){if(e)for(;e.hasChildNodes();)e.removeChild(e.lastChild)},e.removeElement=function(e,t){this.removeFromParent(e.querySelector(t))},e.removeFromParent=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},e.isVisible=function(e){return null!==e.offsetParent},e.loadTemplate=function(e){var t=document.createElement("div");return t.innerHTML=e,t.firstChild},e.assertHtmlElement=function(e){return"string"==typeof e?(console.error("ag-grid: Found a string template for a component type where only HTMLElements are allow. \n Please change the component to return back an HTMLElement from getGui(). Only some element types can return back strings.\n The found template is "+e),null):e},e.ensureElement=function(e){return"string"==typeof e?this.loadTemplate(e):e},e.appendHtml=function(e,t){e.lastChild?e.insertAdjacentHTML("afterbegin",t):e.innerHTML=t},e.addOrRemoveCssClass=function(e,t,o){o?this.addCssClass(e,t):this.removeCssClass(e,t)},e.callIfPresent=function(e){e&&e()},e.addCssClass=function(e,t){var o=this;if(t&&0!==t.length){if(t.indexOf(" ")>=0)return void t.split(" ").forEach(function(t){return o.addCssClass(e,t)});if(e.classList)e.classList.add(t);else if(e.className&&e.className.length>0){var i=e.className.split(" ");i.indexOf(t)<0&&(i.push(t),e.className=i.join(" "))}else e.className=t}},e.containsClass=function(e,t){if(e.classList)return e.classList.contains(t);if(e.className){var o=e.className===t,i=e.className.indexOf(" "+t+" ")>=0,n=0===e.className.indexOf(t+" "),r=e.className.lastIndexOf(" "+t)===e.className.length-t.length-1;return o||i||n||r}return!1},e.getElementAttribute=function(e,t){if(e.attributes){if(e.attributes[t]){return e.attributes[t].value}return null}return null},e.offsetHeight=function(e){return e&&e.clientHeight?e.clientHeight:0},e.offsetWidth=function(e){return e&&e.clientWidth?e.clientWidth:0},e.sortNumberArray=function(e){e.sort(function(e,t){return e-t})},e.removeCssClass=function(e,t){if(e.classList)e.classList.remove(t);else if(e.className&&e.className.length>0){var o=e.className.split(" ");if(o.indexOf(t)>=0){for(;o.indexOf(t)>=0;)o.splice(o.indexOf(t),1);e.className=o.join(" ")}}},e.removeRepeatsFromArray=function(e,t){if(e)for(var o=e.length-2;o>=0;o--){var i=e[o]===t,n=e[o+1]===t;i&&n&&e.splice(o+1,1)}},e.removeFromArray=function(e,t){e.indexOf(t)>=0&&e.splice(e.indexOf(t),1)},e.removeAllFromArray=function(e,t){t.forEach(function(t){e.indexOf(t)>=0&&e.splice(e.indexOf(t),1)})},e.insertIntoArray=function(e,t,o){e.splice(o,0,t)},e.insertArrayIntoArray=function(e,t,o){if(!this.missing(e)&&!this.missing(t))for(var i=t.length-1;i>=0;i--){var n=t[i];this.insertIntoArray(e,n,o)}},e.moveInArray=function(e,t,o){var i=this;t.forEach(function(t){i.removeFromArray(e,t)}),t.slice().reverse().forEach(function(t){i.insertIntoArray(e,t,o)})},e.defaultComparator=function(e,t,o){function i(e,t){return e>t?1:et?1:0},e.compareArrays=function(e,t){if(this.missing(e)&&this.missing(t))return!0;if(this.missing(e)||this.missing(t))return!1;if(e.length!==t.length)return!1;for(var o=0;o-1)return i;var n=document.createElement("span");return n.appendChild(i),n},e.createIconNoSpan=function(e,t,o){var i;if(o&&o.getColDef().icons&&(i=o.getColDef().icons[e]),!i&&t.getIcons()&&(i=t.getIcons()[e]),i){var n=void 0;if("function"==typeof i)n=i();else{if("string"!=typeof i)throw"icon from grid options needs to be a string or a function";n=i}if("string"==typeof n)return this.loadTemplate(n);if(this.isNodeOrElement(n))return n;throw"iconRenderer should return back a string or a dom object"}var r=document.createElement("span"),s=this.iconNameClassMap[e];if(!s)throw new Error(e+" did not find class");return r.setAttribute("class","ag-icon ag-icon-"+s),r},e.addStylesToElement=function(e,t){var o=this;t&&Object.keys(t).forEach(function(i){var n=o.hyphenToCamelCase(i);e.style[n]=t[i]})},e.isHorizontalScrollShowing=function(e){return e.clientWidth0||function(e){return"[object SafariRemoteNotification]"===e.toString()}(!e.safari||e.safari.pushNotification)}return this.isSafari},e.isBrowserChrome=function(){if(void 0===this.isChrome){var e=window;this.isChrome=!!e.chrome&&!!e.chrome.webstore}return this.isChrome},e.isBrowserFirefox=function(){if(void 0===this.isFirefox){var e=window;this.isFirefox=void 0!==e.InstallTrigger}return this.isFirefox},e.getTarget=function(e){var t=e;return t.target||t.srcElement},e.forEachSnapshotFirst=function(e,t){if(e){e.slice(0).forEach(t)}},e.getBodyWidth=function(){return document.body?document.body.clientWidth:window.innerHeight?window.innerWidth:document.documentElement&&document.documentElement.clientWidth?document.documentElement.clientWidth:-1},e.getBodyHeight=function(){return document.body?document.body.clientHeight:window.innerHeight?window.innerHeight:document.documentElement&&document.documentElement.clientHeight?document.documentElement.clientHeight:-1},e.setCheckboxState=function(e,t){"boolean"==typeof t?(e.checked=t,e.indeterminate=!1):e.indeterminate=!0},e.traverseNodesWithKey=function(e,t){function o(e){e.forEach(function(e){if(e.group){i.push(e.key);var n=i.join("|");t(e,n),o(e.childrenAfterGroup),i.pop()}})}var i=[];o(e)},e.camelCaseToHyphen=function(e){return null===e||void 0===e?null:e.replace(/([A-Z])/g,function(e){return"-"+e[0].toLowerCase()})},e.hyphenToCamelCase=function(e){return null===e||void 0===e?null:e.replace(/-([a-z])/g,function(e){return e[1].toUpperCase()})},e.cssStyleObjectToMarkup=function(e){var t=this;if(!e)return"";var o=[];return this.iterateObject(e,function(e,i){var n=t.camelCaseToHyphen(e);o.push(n+": "+i+";")}),o.join(" ")},e.isNumeric=function(e){return""!==e&&(!isNaN(parseFloat(e))&&isFinite(e))},e.escape=function(e){return null===e?null:e.replace?e.replace(a,function(e){return s[e]}):e},e.normalizeWheel=function(e){var t=0,o=0,i=0,n=0;return"detail"in e&&(o=e.detail),"wheelDelta"in e&&(o=-e.wheelDelta/120),"wheelDeltaY"in e&&(o=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=o,o=0),i=10*t,n=10*o,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(i=e.deltaX),(i||n)&&e.deltaMode&&(1==e.deltaMode?(i*=40,n*=40):(i*=800,n*=800)),i&&!t&&(t=i<1?-1:1),n&&!o&&(o=n<1?-1:1),{spinX:t,spinY:o,pixelX:i,pixelY:n}},e.debounce=function(e,t,o){void 0===o&&(o=!1);var i;return function(){var n=this,r=arguments,s=o&&!i;clearTimeout(i),i=setTimeout(function(){i=null,o||e.apply(n,r)},t),s&&e.apply(n,r)}},e.executeInAWhile=function(e){this.executeAfter(e,400)},e.executeNextVMTurn=function(e){this.executeAfter(e,0)},e.executeAfter=function(e,t){e.length>0&&setTimeout(function(){e.forEach(function(e){return e()})},t)},e.referenceCompare=function(e,t){return null==e&&null==t||(null!=e||!t)&&((!e||null!=t)&&e===t)},e.get=function(t,o,i){if(null==t)return i;if(o.indexOf(".")>-1){var n=o.split("."),r=n[0],s=t[r];return null!=s?e.get(s,n.slice(1,n.length).join("."),i):i}var s=t[o];return null!=s?s:i},e.addSafePassiveEventListener=function(t,o,i){t.addEventListener(o,i,e.passiveEvents.indexOf(o)>-1?{passive:!0}:null)},e.camelCaseToHumanText=function(e){if(null==e)return null;var t=/([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;return e.replace(t,"$1$4 $2$3$5").replace("."," ").split(" ").map(function(e){return e.substring(0,1).toUpperCase()+(e.length>1?e.substring(1,e.length):"")}).join(" ")},e.PRINTABLE_CHARACTERS="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];'#,./|<>?:@~{}",e.iconNameClassMap={columnMovePin:"pin",columnMoveAdd:"plus",columnMoveHide:"eye-slash",columnMoveMove:"arrows",columnMoveLeft:"left",columnMoveRight:"right",columnMoveGroup:"group",columnMoveValue:"aggregation",columnMovePivot:"pivot",dropNotAllowed:"not-allowed",groupContracted:"expanded",groupExpanded:"contracted",checkboxChecked:"checkbox-checked",checkboxUnchecked:"checkbox-unchecked",checkboxIndeterminate:"checkbox-indeterminate",checkboxCheckedReadOnly:"checkbox-checked-readonly",checkboxUncheckedReadOnly:"checkbox-unchecked-readonly",checkboxIndeterminateReadOnly:"checkbox-indeterminate-readonly",groupLoading:"loading",menu:"menu",filter:"filter",columns:"columns",menuPin:"pin",menuValue:"aggregation",menuAddRowGroup:"group",menuRemoveRowGroup:"group",clipboardCopy:"copy",clipboardCut:"cut",clipboardPaste:"paste",pivotPanel:"pivot",rowGroupPanel:"group",valuePanel:"aggregation",columnGroupOpened:"expanded",columnGroupClosed:"contracted",columnSelectClosed:"tree-closed",columnSelectOpen:"tree-open",sortAscending:"asc",sortDescending:"desc",sortUnSort:"none"},e.passiveEvents=["touchstart","touchend","touchmove","touchcancel"],e}();t.Utils=l;var p=function(){function e(e,t){void 0===e&&(e=0),void 0===t&&(t=1),this.nextValue=e,this.step=t}return e.prototype.next=function(){var e=this.nextValue;return this.nextValue+=this.step,e},e.prototype.peek=function(){return this.nextValue},e.prototype.skip=function(e){this.nextValue+=e},e}();t.NumberSequence=p,t._=l},function(e,t,o){"use strict";function i(e){return!0===e||"true"===e}function n(e,t){return e>=0?e:t}function r(e,t){return e>0?e:t}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var s=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},l=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var p=o(4),u=o(7),d=o(60),c=o(6),h=o(0),f=o(3),g=o(1),y=o(124),v=o(56),m=function(){function e(){this.propertyEventService=new p.EventService,this.domDataKey="__AG_"+Math.random().toString()}return t=e,e.prototype.agWire=function(e,t){this.gridOptions.api=e,this.gridOptions.columnApi=t,this.checkForDeprecated()},e.prototype.destroy=function(){this.gridOptions.api=null,this.gridOptions.columnApi=null},e.prototype.init=function(){var e=this.useAsyncEvents();this.eventService.addGlobalListener(this.globalEventHandler.bind(this),e),this.isGroupSelectsChildren()&&this.isSuppressParentsInRowNodes()&&console.warn("ag-Grid: groupSelectsChildren does not work wth suppressParentsInRowNodes, this selection method needs the part in rowNode to work"),this.isGroupSelectsChildren()&&(this.isRowSelectionMulti()||console.warn("ag-Grid: rowSelectionMulti must be true for groupSelectsChildren to make sense"),this.isRowModelEnterprise()&&console.warn("ag-Grid: group selects children is NOT support for Enterprise Row Model. This is because the rows are lazy loaded, so selecting a group is not possible asthe grid has no way of knowing what the children are.")),this.isGroupRemoveSingleChildren()&&this.isGroupHideOpenParents()&&console.warn("ag-Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to us these together on our support forum either you will get the same answer!")},e.prototype.getDomData=function(e,t){var o=e[this.domDataKey];return o?o[t]:void 0},e.prototype.setDomData=function(e,t,o){var i=e[this.domDataKey];g.Utils.missing(i)&&(i={},e[this.domDataKey]=i),i[t]=o},e.prototype.isEnterprise=function(){return this.enterprise},e.prototype.isRowSelection=function(){return"single"===this.gridOptions.rowSelection||"multiple"===this.gridOptions.rowSelection},e.prototype.isRowDeselection=function(){return i(this.gridOptions.rowDeselection)},e.prototype.isRowSelectionMulti=function(){return"multiple"===this.gridOptions.rowSelection},e.prototype.getContext=function(){return this.gridOptions.context},e.prototype.isPivotMode=function(){return i(this.gridOptions.pivotMode)},e.prototype.isPivotTotals=function(){return i(this.gridOptions.pivotTotals)},e.prototype.isRowModelInfinite=function(){return this.gridOptions.rowModelType===u.Constants.ROW_MODEL_TYPE_INFINITE},e.prototype.isRowModelViewport=function(){return this.gridOptions.rowModelType===u.Constants.ROW_MODEL_TYPE_VIEWPORT},e.prototype.isRowModelEnterprise=function(){return this.gridOptions.rowModelType===u.Constants.ROW_MODEL_TYPE_ENTERPRISE},e.prototype.isRowModelDefault=function(){return g.Utils.missing(this.gridOptions.rowModelType)||this.gridOptions.rowModelType===u.Constants.ROW_MODEL_TYPE_IN_MEMORY||this.gridOptions.rowModelType===u.Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL},e.prototype.isFullRowEdit=function(){return"fullRow"===this.gridOptions.editType},e.prototype.isSuppressFocusAfterRefresh=function(){return i(this.gridOptions.suppressFocusAfterRefresh)},e.prototype.isShowToolPanel=function(){return i(this.gridOptions.showToolPanel)},e.prototype.isToolPanelSuppressRowGroups=function(){return i(this.gridOptions.toolPanelSuppressRowGroups)},e.prototype.isToolPanelSuppressValues=function(){return i(this.gridOptions.toolPanelSuppressValues)},e.prototype.isToolPanelSuppressPivots=function(){return!!this.isRowModelEnterprise()||i(this.gridOptions.toolPanelSuppressPivots)},e.prototype.isToolPanelSuppressPivotMode=function(){return!!this.isRowModelEnterprise()||i(this.gridOptions.toolPanelSuppressPivotMode)},e.prototype.isSuppressTouch=function(){return i(this.gridOptions.suppressTouch)},e.prototype.useAsyncEvents=function(){return!i(this.gridOptions.suppressAsyncEvents)},e.prototype.isEnableCellChangeFlash=function(){return i(this.gridOptions.enableCellChangeFlash)},e.prototype.isGroupSelectsChildren=function(){return i(this.gridOptions.groupSelectsChildren)},e.prototype.isGroupSelectsFiltered=function(){return i(this.gridOptions.groupSelectsFiltered)},e.prototype.isGroupHideOpenParents=function(){return i(this.gridOptions.groupHideOpenParents)},e.prototype.isGroupMultiAutoColumn=function(){return i(this.gridOptions.groupMultiAutoColumn)||i(this.gridOptions.groupHideOpenParents)},e.prototype.isGroupRemoveSingleChildren=function(){return i(this.gridOptions.groupRemoveSingleChildren)},e.prototype.isGroupIncludeFooter=function(){return i(this.gridOptions.groupIncludeFooter)},e.prototype.isGroupSuppressBlankHeader=function(){return i(this.gridOptions.groupSuppressBlankHeader)},e.prototype.isSuppressRowClickSelection=function(){return i(this.gridOptions.suppressRowClickSelection)},e.prototype.isSuppressCellSelection=function(){return i(this.gridOptions.suppressCellSelection)},e.prototype.isSuppressMultiSort=function(){return i(this.gridOptions.suppressMultiSort)},e.prototype.isGroupSuppressAutoColumn=function(){return i(this.gridOptions.groupSuppressAutoColumn)},e.prototype.isSuppressDragLeaveHidesColumns=function(){return i(this.gridOptions.suppressDragLeaveHidesColumns)},e.prototype.isSuppressScrollOnNewData=function(){return i(this.gridOptions.suppressScrollOnNewData)},e.prototype.isForPrint=function(){return"forPrint"===this.gridOptions.domLayout},e.prototype.isAutoHeight=function(){return"autoHeight"===this.gridOptions.domLayout},e.prototype.isSuppressHorizontalScroll=function(){return i(this.gridOptions.suppressHorizontalScroll)},e.prototype.isSuppressLoadingOverlay=function(){return i(this.gridOptions.suppressLoadingOverlay)},e.prototype.isSuppressNoRowsOverlay=function(){return i(this.gridOptions.suppressNoRowsOverlay)},e.prototype.isSuppressFieldDotNotation=function(){return i(this.gridOptions.suppressFieldDotNotation)},e.prototype.getPinnedTopRowData=function(){return this.gridOptions.pinnedTopRowData},e.prototype.getPinnedBottomRowData=function(){return this.gridOptions.pinnedBottomRowData},e.prototype.isFunctionsPassive=function(){return i(this.gridOptions.functionsPassive)},e.prototype.isSuppressTabbing=function(){return i(this.gridOptions.suppressTabbing)},e.prototype.isSuppressChangeDetection=function(){return i(this.gridOptions.suppressChangeDetection)},e.prototype.isSuppressAnimationFrame=function(){return i(this.gridOptions.suppressAnimationFrame)},e.prototype.getQuickFilterText=function(){return this.gridOptions.quickFilterText},e.prototype.isCacheQuickFilter=function(){return i(this.gridOptions.cacheQuickFilter)},e.prototype.isUnSortIcon=function(){return i(this.gridOptions.unSortIcon)},e.prototype.isSuppressMenuHide=function(){return i(this.gridOptions.suppressMenuHide)},e.prototype.getRowStyle=function(){return this.gridOptions.rowStyle},e.prototype.getRowClass=function(){return this.gridOptions.rowClass},e.prototype.getRowStyleFunc=function(){return this.gridOptions.getRowStyle},e.prototype.getRowClassFunc=function(){return this.gridOptions.getRowClass},e.prototype.getPostProcessPopupFunc=function(){return this.gridOptions.postProcessPopup},e.prototype.getDoesDataFlowerFunc=function(){return this.gridOptions.doesDataFlower},e.prototype.getIsFullWidthCellFunc=function(){return this.gridOptions.isFullWidthCell},e.prototype.getFullWidthCellRendererParams=function(){return this.gridOptions.fullWidthCellRendererParams},e.prototype.isEmbedFullWidthRows=function(){return this.isAutoHeight()||i(this.gridOptions.embedFullWidthRows)},e.prototype.getBusinessKeyForNodeFunc=function(){return this.gridOptions.getBusinessKeyForNode},e.prototype.getHeaderCellRenderer=function(){return this.gridOptions.headerCellRenderer},e.prototype.getApi=function(){return this.gridOptions.api},e.prototype.getColumnApi=function(){return this.gridOptions.columnApi},e.prototype.isDeltaRowDataMode=function(){return i(this.gridOptions.deltaRowDataMode)},e.prototype.isEnsureDomOrder=function(){return i(this.gridOptions.ensureDomOrder)},e.prototype.isEnableColResize=function(){return i(this.gridOptions.enableColResize)},e.prototype.isSingleClickEdit=function(){return i(this.gridOptions.singleClickEdit)},e.prototype.isSuppressClickEdit=function(){return i(this.gridOptions.suppressClickEdit)},e.prototype.isStopEditingWhenGridLosesFocus=function(){return i(this.gridOptions.stopEditingWhenGridLosesFocus)},e.prototype.getGroupDefaultExpanded=function(){return this.gridOptions.groupDefaultExpanded},e.prototype.getAutoSizePadding=function(){return this.gridOptions.autoSizePadding},e.prototype.getMaxConcurrentDatasourceRequests=function(){return this.gridOptions.maxConcurrentDatasourceRequests},e.prototype.getMaxBlocksInCache=function(){return this.gridOptions.maxBlocksInCache},e.prototype.getCacheOverflowSize=function(){return this.gridOptions.cacheOverflowSize},e.prototype.getPaginationPageSize=function(){return this.gridOptions.paginationPageSize},e.prototype.getCacheBlockSize=function(){return this.gridOptions.cacheBlockSize},e.prototype.getInfiniteInitialRowCount=function(){return this.gridOptions.infiniteInitialRowCount},e.prototype.isPurgeClosedRowNodes=function(){return i(this.gridOptions.purgeClosedRowNodes)},e.prototype.isSuppressPaginationPanel=function(){return i(this.gridOptions.suppressPaginationPanel)},e.prototype.getRowData=function(){return this.gridOptions.rowData},e.prototype.isGroupUseEntireRow=function(){return i(this.gridOptions.groupUseEntireRow)},e.prototype.isEnableRtl=function(){return i(this.gridOptions.enableRtl)},e.prototype.getAutoGroupColumnDef=function(){return this.gridOptions.autoGroupColumnDef},e.prototype.isGroupSuppressRow=function(){return i(this.gridOptions.groupSuppressRow)},e.prototype.getRowGroupPanelShow=function(){return this.gridOptions.rowGroupPanelShow},e.prototype.getPivotPanelShow=function(){return this.gridOptions.pivotPanelShow},e.prototype.isAngularCompileRows=function(){return i(this.gridOptions.angularCompileRows)},e.prototype.isAngularCompileFilters=function(){return i(this.gridOptions.angularCompileFilters)},e.prototype.isAngularCompileHeaders=function(){return i(this.gridOptions.angularCompileHeaders)},e.prototype.isDebug=function(){return i(this.gridOptions.debug)},e.prototype.getColumnDefs=function(){return this.gridOptions.columnDefs},e.prototype.getColumnTypes=function(){return g.Utils.assign({},this.gridOptions.columnTypes,y.DefaultColumnTypes)},e.prototype.getDatasource=function(){return this.gridOptions.datasource},e.prototype.getViewportDatasource=function(){return this.gridOptions.viewportDatasource},e.prototype.getEnterpriseDatasource=function(){return this.gridOptions.enterpriseDatasource},e.prototype.isEnableSorting=function(){return i(this.gridOptions.enableSorting)||i(this.gridOptions.enableServerSideSorting)},e.prototype.isAccentedSort=function(){return i(this.gridOptions.accentedSort)},e.prototype.isEnableCellExpressions=function(){return i(this.gridOptions.enableCellExpressions)},e.prototype.isEnableGroupEdit=function(){return i(this.gridOptions.enableGroupEdit)},e.prototype.isSuppressMiddleClickScrolls=function(){return i(this.gridOptions.suppressMiddleClickScrolls)},e.prototype.isSuppressPreventDefaultOnMouseWheel=function(){return i(this.gridOptions.suppressPreventDefaultOnMouseWheel)},e.prototype.isSuppressColumnVirtualisation=function(){return i(this.gridOptions.suppressColumnVirtualisation)},e.prototype.isSuppressContextMenu=function(){return i(this.gridOptions.suppressContextMenu)},e.prototype.isAllowContextMenuWithControlKey=function(){return i(this.gridOptions.allowContextMenuWithControlKey)},e.prototype.isSuppressCopyRowsToClipboard=function(){return i(this.gridOptions.suppressCopyRowsToClipboard)},e.prototype.isEnableFilter=function(){return i(this.gridOptions.enableFilter)||i(this.gridOptions.enableServerSideFilter)},e.prototype.isPagination=function(){return i(this.gridOptions.pagination)},e.prototype.isEnableServerSideFilter=function(){return this.gridOptions.enableServerSideFilter},e.prototype.isEnableServerSideSorting=function(){return i(this.gridOptions.enableServerSideSorting)},e.prototype.isSuppressMovableColumns=function(){return i(this.gridOptions.suppressMovableColumns)},e.prototype.isAnimateRows=function(){return!this.isEnsureDomOrder()&&i(this.gridOptions.animateRows)},e.prototype.isSuppressColumnMoveAnimation=function(){return i(this.gridOptions.suppressColumnMoveAnimation)},e.prototype.isSuppressAggFuncInHeader=function(){return i(this.gridOptions.suppressAggFuncInHeader)},e.prototype.isSuppressAggAtRootLevel=function(){return i(this.gridOptions.suppressAggAtRootLevel)},e.prototype.isEnableRangeSelection=function(){return i(this.gridOptions.enableRangeSelection)},e.prototype.isPaginationAutoPageSize=function(){return i(this.gridOptions.paginationAutoPageSize)},e.prototype.isRememberGroupStateWhenNewData=function(){return i(this.gridOptions.rememberGroupStateWhenNewData)},e.prototype.getIcons=function(){return this.gridOptions.icons},e.prototype.getAggFuncs=function(){return this.gridOptions.aggFuncs},e.prototype.getSortingOrder=function(){return this.gridOptions.sortingOrder},e.prototype.getAlignedGrids=function(){return this.gridOptions.alignedGrids},e.prototype.getGroupRowRendererParams=function(){return this.gridOptions.groupRowRendererParams},e.prototype.getOverlayLoadingTemplate=function(){return this.gridOptions.overlayLoadingTemplate},e.prototype.getOverlayNoRowsTemplate=function(){return this.gridOptions.overlayNoRowsTemplate},e.prototype.isSuppressAutoSize=function(){return i(this.gridOptions.suppressAutoSize)},e.prototype.isSuppressParentsInRowNodes=function(){return i(this.gridOptions.suppressParentsInRowNodes)},e.prototype.isEnableStatusBar=function(){return i(this.gridOptions.enableStatusBar)},e.prototype.isAlwaysShowStatusBar=function(){return i(this.gridOptions.alwaysShowStatusBar)},e.prototype.isFunctionsReadOnly=function(){return i(this.gridOptions.functionsReadOnly)},e.prototype.isFloatingFilter=function(){return this.gridOptions.floatingFilter},e.prototype.getDefaultColDef=function(){return this.gridOptions.defaultColDef},e.prototype.getDefaultColGroupDef=function(){return this.gridOptions.defaultColGroupDef},e.prototype.getDefaultExportParams=function(){return this.gridOptions.defaultExportParams},e.prototype.isSuppressCsvExport=function(){return i(this.gridOptions.suppressCsvExport)},e.prototype.isSuppressExcelExport=function(){return i(this.gridOptions.suppressExcelExport)},e.prototype.getHeaderCellTemplate=function(){return this.gridOptions.headerCellTemplate},e.prototype.getHeaderCellTemplateFunc=function(){return this.gridOptions.getHeaderCellTemplate},e.prototype.getNodeChildDetailsFunc=function(){return this.gridOptions.getNodeChildDetails},e.prototype.getGroupRowAggNodesFunc=function(){return this.gridOptions.groupRowAggNodes},e.prototype.getContextMenuItemsFunc=function(){return this.gridOptions.getContextMenuItems},e.prototype.getMainMenuItemsFunc=function(){return this.gridOptions.getMainMenuItems},e.prototype.getRowNodeIdFunc=function(){return this.gridOptions.getRowNodeId},e.prototype.getNavigateToNextCellFunc=function(){return this.gridOptions.navigateToNextCell},e.prototype.getTabToNextCellFunc=function(){return this.gridOptions.tabToNextCell},e.prototype.isValueCache=function(){return i(this.gridOptions.valueCache)},e.prototype.isValueCacheNeverExpires=function(){return i(this.gridOptions.valueCacheNeverExpires)},e.prototype.isAggregateOnlyChangedColumns=function(){return i(this.gridOptions.aggregateOnlyChangedColumns)},e.prototype.getProcessSecondaryColDefFunc=function(){return this.gridOptions.processSecondaryColDef},e.prototype.getProcessSecondaryColGroupDefFunc=function(){return this.gridOptions.processSecondaryColGroupDef},e.prototype.getSendToClipboardFunc=function(){return this.gridOptions.sendToClipboard},e.prototype.getProcessRowPostCreateFunc=function(){return this.gridOptions.processRowPostCreate},e.prototype.getProcessCellForClipboardFunc=function(){return this.gridOptions.processCellForClipboard},e.prototype.getProcessCellFromClipboardFunc=function(){return this.gridOptions.processCellFromClipboard},e.prototype.getViewportRowModelPageSize=function(){return r(this.gridOptions.viewportRowModelPageSize,5)},e.prototype.getViewportRowModelBufferSize=function(){return n(this.gridOptions.viewportRowModelBufferSize,5)},e.prototype.getClipboardDeliminator=function(){return g.Utils.exists(this.gridOptions.clipboardDeliminator)?this.gridOptions.clipboardDeliminator:"\t"},e.prototype.setProperty=function(e,t){var o=this.gridOptions,i=o[e];if(i!==t){o[e]=t;var n={type:e,currentValue:t,previousValue:i};this.propertyEventService.dispatchEvent(n)}},e.prototype.addEventListener=function(e,t){this.propertyEventService.addEventListener(e,t)},e.prototype.removeEventListener=function(e,t){this.propertyEventService.removeEventListener(e,t)},e.prototype.getHeaderHeight=function(){return"number"==typeof this.gridOptions.headerHeight?this.gridOptions.headerHeight:this.specialForNewMaterial(25,56)},e.prototype.getFloatingFiltersHeight=function(){return"number"==typeof this.gridOptions.floatingFiltersHeight?this.gridOptions.floatingFiltersHeight:this.specialForNewMaterial(25,56)},e.prototype.getGroupHeaderHeight=function(){return"number"==typeof this.gridOptions.groupHeaderHeight?this.gridOptions.groupHeaderHeight:this.getHeaderHeight()},e.prototype.getPivotHeaderHeight=function(){return"number"==typeof this.gridOptions.pivotHeaderHeight?this.gridOptions.pivotHeaderHeight:this.getHeaderHeight()},e.prototype.getPivotGroupHeaderHeight=function(){return"number"==typeof this.gridOptions.pivotGroupHeaderHeight?this.gridOptions.pivotGroupHeaderHeight:this.getGroupHeaderHeight()},e.prototype.isExternalFilterPresent=function(){return"function"==typeof this.gridOptions.isExternalFilterPresent&&this.gridOptions.isExternalFilterPresent()},e.prototype.doesExternalFilterPass=function(e){return"function"==typeof this.gridOptions.doesExternalFilterPass&&this.gridOptions.doesExternalFilterPass(e)},e.prototype.getDocument=function(){var e;return g.Utils.exists(this.gridOptions.getDocument)&&(e=this.gridOptions.getDocument()),g.Utils.exists(e)?e:document},e.prototype.getLayoutInterval=function(){return"number"==typeof this.gridOptions.layoutInterval?this.gridOptions.layoutInterval:u.Constants.LAYOUT_INTERVAL},e.prototype.getMinColWidth=function(){return this.gridOptions.minColWidth>t.MIN_COL_WIDTH?this.gridOptions.minColWidth:t.MIN_COL_WIDTH},e.prototype.getMaxColWidth=function(){return this.gridOptions.maxColWidth>t.MIN_COL_WIDTH?this.gridOptions.maxColWidth:null},e.prototype.getColWidth=function(){return"number"!=typeof this.gridOptions.colWidth||this.gridOptions.colWidth=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(1),a=o(22),l=o(9),p=o(2),u=o(17),d=o(40),c=o(42),h=o(62),f=o(4),g=o(27),y=o(10),v=o(5),m=o(28),C=o(80),E=o(0),w=o(11),R=o(68),O=o(99),_=o(29),S=o(6),A=function(){function e(){}return e.prototype.sizeColumnsToFit=function(e){this._columnController.sizeColumnsToFit(e)},e.prototype.setColumnGroupOpened=function(e,t){this._columnController.setColumnGroupOpened(e,t)},e.prototype.getColumnGroup=function(e,t){return this._columnController.getColumnGroup(e,t)},e.prototype.getOriginalColumnGroup=function(e){return this._columnController.getOriginalColumnGroup(e)},e.prototype.getDisplayNameForColumn=function(e,t){return this._columnController.getDisplayNameForColumn(e,t)},e.prototype.getDisplayNameForColumnGroup=function(e,t){return this._columnController.getDisplayNameForColumnGroup(e,t)},e.prototype.getColumn=function(e){return this._columnController.getPrimaryColumn(e)},e.prototype.setColumnState=function(e){return this._columnController.setColumnState(e)},e.prototype.getColumnState=function(){return this._columnController.getColumnState()},e.prototype.resetColumnState=function(){this._columnController.resetColumnState()},e.prototype.getColumnGroupState=function(){return this._columnController.getColumnGroupState()},e.prototype.setColumnGroupState=function(e){this._columnController.setColumnGroupState(e)},e.prototype.resetColumnGroupState=function(){this._columnController.resetColumnGroupState()},e.prototype.isPinning=function(){return this._columnController.isPinningLeft()||this._columnController.isPinningRight()},e.prototype.isPinningLeft=function(){return this._columnController.isPinningLeft()},e.prototype.isPinningRight=function(){return this._columnController.isPinningRight()},e.prototype.getDisplayedColAfter=function(e){return this._columnController.getDisplayedColAfter(e)},e.prototype.getDisplayedColBefore=function(e){return this._columnController.getDisplayedColBefore(e)},e.prototype.setColumnVisible=function(e,t){this._columnController.setColumnVisible(e,t)},e.prototype.setColumnsVisible=function(e,t){this._columnController.setColumnsVisible(e,t)},e.prototype.setColumnPinned=function(e,t){this._columnController.setColumnPinned(e,t)},e.prototype.setColumnsPinned=function(e,t){this._columnController.setColumnsPinned(e,t)},e.prototype.getAllColumns=function(){return this._columnController.getAllPrimaryColumns()},e.prototype.getAllGridColumns=function(){return this._columnController.getAllGridColumns()},e.prototype.getDisplayedLeftColumns=function(){return this._columnController.getDisplayedLeftColumns()},e.prototype.getDisplayedCenterColumns=function(){return this._columnController.getDisplayedCenterColumns()},e.prototype.getDisplayedRightColumns=function(){return this._columnController.getDisplayedRightColumns()},e.prototype.getAllDisplayedColumns=function(){return this._columnController.getAllDisplayedColumns()},e.prototype.getAllDisplayedVirtualColumns=function(){return this._columnController.getAllDisplayedVirtualColumns()},e.prototype.moveColumn=function(e,t){"number"==typeof e?(console.log("ag-Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead"),this._columnController.moveColumnByIndex(e,t)):this._columnController.moveColumn(e,t)},e.prototype.moveColumnByIndex=function(e,t){this._columnController.moveColumnByIndex(e,t)},e.prototype.moveColumns=function(e,t){this._columnController.moveColumns(e,t)},e.prototype.moveRowGroupColumn=function(e,t){this._columnController.moveRowGroupColumn(e,t)},e.prototype.setColumnAggFunc=function(e,t){this._columnController.setColumnAggFunc(e,t)},e.prototype.setColumnWidth=function(e,t,o){void 0===o&&(o=!0),this._columnController.setColumnWidth(e,t,o)},e.prototype.setPivotMode=function(e){this._columnController.setPivotMode(e)},e.prototype.isPivotMode=function(){return this._columnController.isPivotMode()},e.prototype.getSecondaryPivotColumn=function(e,t){return this._columnController.getSecondaryPivotColumn(e,t)},e.prototype.setValueColumns=function(e){this._columnController.setValueColumns(e)},e.prototype.getValueColumns=function(){return this._columnController.getValueColumns()},e.prototype.removeValueColumn=function(e){this._columnController.removeValueColumn(e)},e.prototype.removeValueColumns=function(e){this._columnController.removeValueColumns(e)},e.prototype.addValueColumn=function(e){this._columnController.addValueColumn(e)},e.prototype.addValueColumns=function(e){this._columnController.addValueColumns(e)},e.prototype.setRowGroupColumns=function(e){this._columnController.setRowGroupColumns(e)},e.prototype.removeRowGroupColumn=function(e){this._columnController.removeRowGroupColumn(e)},e.prototype.removeRowGroupColumns=function(e){this._columnController.removeRowGroupColumns(e)},e.prototype.addRowGroupColumn=function(e){this._columnController.addRowGroupColumn(e)},e.prototype.addRowGroupColumns=function(e){this._columnController.addRowGroupColumns(e)},e.prototype.getRowGroupColumns=function(){return this._columnController.getRowGroupColumns()},e.prototype.setPivotColumns=function(e){this._columnController.setPivotColumns(e)},e.prototype.removePivotColumn=function(e){this._columnController.removePivotColumn(e)},e.prototype.removePivotColumns=function(e){this._columnController.removePivotColumns(e)},e.prototype.addPivotColumn=function(e){this._columnController.addPivotColumn(e)},e.prototype.addPivotColumns=function(e){this._columnController.addPivotColumns(e)},e.prototype.getPivotColumns=function(){return this._columnController.getPivotColumns()},e.prototype.getLeftDisplayedColumnGroups=function(){return this._columnController.getLeftDisplayedColumnGroups()},e.prototype.getCenterDisplayedColumnGroups=function(){return this._columnController.getCenterDisplayedColumnGroups()},e.prototype.getRightDisplayedColumnGroups=function(){return this._columnController.getRightDisplayedColumnGroups()},e.prototype.getAllDisplayedColumnGroups=function(){return this._columnController.getAllDisplayedColumnGroups()},e.prototype.autoSizeColumn=function(e){return this._columnController.autoSizeColumn(e)},e.prototype.autoSizeColumns=function(e){return this._columnController.autoSizeColumns(e)},e.prototype.autoSizeAllColumns=function(){this._columnController.autoSizeAllColumns()},e.prototype.setSecondaryColumns=function(e){this._columnController.setSecondaryColumns(e)},e.prototype.columnGroupOpened=function(e,t){console.error("ag-Grid: columnGroupOpened no longer exists, use setColumnGroupOpened"),this.setColumnGroupOpened(e,t)},e.prototype.hideColumns=function(e,t){console.error("ag-Grid: hideColumns is deprecated, use setColumnsVisible"),this._columnController.setColumnsVisible(e,!t)},e.prototype.hideColumn=function(e,t){console.error("ag-Grid: hideColumn is deprecated, use setColumnVisible"),this._columnController.setColumnVisible(e,!t)},e.prototype.setState=function(e){return console.error("ag-Grid: setState is deprecated, use setColumnState"),this.setColumnState(e)},e.prototype.getState=function(){return console.error("ag-Grid: getState is deprecated, use getColumnState"),this.getColumnState()},e.prototype.resetState=function(){console.error("ag-Grid: resetState is deprecated, use resetColumnState"),this.resetColumnState()},e.prototype.getAggregationColumns=function(){return console.error("ag-Grid: getAggregationColumns is deprecated, use getValueColumns"),this._columnController.getValueColumns()},e.prototype.removeAggregationColumn=function(e){console.error("ag-Grid: removeAggregationColumn is deprecated, use removeValueColumn"),this._columnController.removeValueColumn(e)},e.prototype.removeAggregationColumns=function(e){console.error("ag-Grid: removeAggregationColumns is deprecated, use removeValueColumns"),this._columnController.removeValueColumns(e)},e.prototype.addAggregationColumn=function(e){console.error("ag-Grid: addAggregationColumn is deprecated, use addValueColumn"),this._columnController.addValueColumn(e)},e.prototype.addAggregationColumns=function(e){console.error("ag-Grid: addAggregationColumns is deprecated, use addValueColumns"),this._columnController.addValueColumns(e)},e.prototype.setColumnAggFunction=function(e,t){console.error("ag-Grid: setColumnAggFunction is deprecated, use setColumnAggFunc"),this._columnController.setColumnAggFunc(e,t)},e.prototype.getDisplayNameForCol=function(e){return console.error("ag-Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn"),this.getDisplayNameForColumn(e,null)},i([E.Autowired("columnController"),n("design:type",P)],e.prototype,"_columnController",void 0),e=i([E.Bean("columnApi")],e)}();t.ColumnApi=A;var P=function(){function e(){this.primaryHeaderRowCount=0,this.secondaryHeaderRowCount=0,this.secondaryColumnsPresent=!1,this.gridHeaderRowCount=0,this.displayedLeftColumns=[],this.displayedRightColumns=[],this.displayedCenterColumns=[],this.allDisplayedColumns=[],this.allDisplayedVirtualColumns=[],this.allDisplayedCenterVirtualColumns=[],this.rowGroupColumns=[],this.valueColumns=[],this.pivotColumns=[],this.ready=!1,this.autoGroupsNeedBuilding=!1,this.pivotMode=!1,this.bodyWidth=0,this.leftWidth=0,this.rightWidth=0,this.bodyWidthDirty=!0}return e.prototype.init=function(){this.pivotMode=this.gridOptionsWrapper.isPivotMode()},e.prototype.setVirtualViewportLeftAndRight=function(){this.gridOptionsWrapper.isEnableRtl()?(this.viewportLeft=this.bodyWidth-this.scrollPosition-this.scrollWidth,this.viewportRight=this.bodyWidth-this.scrollPosition):(this.viewportLeft=this.scrollPosition,this.viewportRight=this.scrollWidth+this.scrollPosition)},e.prototype.getDisplayedColumnsStartingAt=function(e){for(var t=e,o=[];s.Utils.exists(t);)o.push(t),t=this.getDisplayedColAfter(t);return o},e.prototype.checkDisplayedVirtualColumns=function(){if(s.Utils.exists(this.displayedCenterColumns)){var e=this.allDisplayedVirtualColumns.map(function(e){return e.getId()}).join("#");this.updateVirtualSets();if(e!==this.allDisplayedVirtualColumns.map(function(e){return e.getId()}).join("#")){var t={type:v.Events.EVENT_VIRTUAL_COLUMNS_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)}}},e.prototype.setVirtualViewportPosition=function(e,t){(e!==this.scrollWidth||t!==this.scrollPosition||this.bodyWidthDirty)&&(this.scrollWidth=e,this.scrollPosition=t,this.bodyWidthDirty=!0,this.setVirtualViewportLeftAndRight(),this.ready&&this.checkDisplayedVirtualColumns())},e.prototype.isPivotMode=function(){return this.pivotMode},e.prototype.setPivotMode=function(e){if(e!==this.pivotMode){this.pivotMode=e,this.updateDisplayedColumns();var t={type:v.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)}},e.prototype.getSecondaryPivotColumn=function(e,t){if(!this.secondaryColumnsPresent)return null;var o=this.getPrimaryColumn(t),i=null;return this.secondaryColumns.forEach(function(t){var n=t.getColDef().pivotKeys,r=t.getColDef().pivotValueColumn,a=s.Utils.compareArrays(n,e),l=r===o;a&&l&&(i=t)}),i},e.prototype.setBeans=function(e){this.logger=e.create("ColumnController")},e.prototype.setFirstRightAndLastLeftPinned=function(){var e,t;this.gridOptionsWrapper.isEnableRtl()?(e=this.displayedLeftColumns?this.displayedLeftColumns[0]:null,t=this.displayedRightColumns?this.displayedRightColumns[this.displayedRightColumns.length-1]:null):(e=this.displayedLeftColumns?this.displayedLeftColumns[this.displayedLeftColumns.length-1]:null,t=this.displayedRightColumns?this.displayedRightColumns[0]:null),this.gridColumns.forEach(function(o){o.setLastLeftPinned(o===e),o.setFirstRightPinned(o===t)})},e.prototype.autoSizeColumns=function(e){for(var t=this,o=[],i=-1;0!==i;)i=0,this.actionOnGridColumns(e,function(e){if(!(o.indexOf(e)>=0)){var n=t.autoWidthCalculator.getPreferredWidthForColumn(e);if(n>0){var r=t.normaliseColumnWidth(e,n);e.setActualWidth(r),o.push(e),i++}return!0}});if(o.length>0){var n={type:v.Events.EVENT_COLUMN_RESIZED,columns:o,column:1===o.length?o[0]:null,finished:!0,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(n)}},e.prototype.autoSizeColumn=function(e){this.autoSizeColumns([e])},e.prototype.autoSizeAllColumns=function(){var e=this.getAllDisplayedColumns();this.autoSizeColumns(e)},e.prototype.getColumnsFromTree=function(e){function t(e){for(var i=0;i=0},e.prototype.getAllDisplayedColumns=function(){return this.allDisplayedColumns},e.prototype.getAllDisplayedVirtualColumns=function(){return this.allDisplayedVirtualColumns},e.prototype.getDisplayedLeftColumnsForRow=function(e){return this.colSpanActive?this.getDisplayedColumnsForRow(e,this.displayedLeftColumns):this.displayedLeftColumns},e.prototype.getDisplayedRightColumnsForRow=function(e){return this.colSpanActive?this.getDisplayedColumnsForRow(e,this.displayedRightColumns):this.displayedRightColumns},e.prototype.getDisplayedColumnsForRow=function(e,t,o,i){for(var n=[],r=null,s=0;s1){s+=l-1}if(!o||o(a)){var p=!!i&&i(a);0===n.length&&p&&r&&n.push(r),n.push(a)}r=a}return n},e.prototype.getAllDisplayedCenterVirtualColumnsForRow=function(e){var t=this;if(!this.colSpanActive)return this.allDisplayedCenterVirtualColumns;var o=function(e){return e.getLeft()>t.viewportLeft};return this.getDisplayedColumnsForRow(e,this.displayedCenterColumns,this.isColumnInViewport.bind(this),o)},e.prototype.isColumnInViewport=function(e){var t=e.getLeft(),o=e.getLeft()+e.getActualWidth(),i=tthis.viewportRight&&o>this.viewportRight;return!i&&!n},e.prototype.getPinnedLeftContainerWidth=function(){return this.getWidthOfColsInList(this.displayedLeftColumns)},e.prototype.getPinnedRightContainerWidth=function(){return this.getWidthOfColsInList(this.displayedRightColumns)},e.prototype.updatePrimaryColumnList=function(e,t,o,i,n){var r=this;if(!s.Utils.missingOrEmpty(e)){var a=!1;if(e.forEach(function(e){var n=r.getPrimaryColumn(e);if(n){if(o){if(t.indexOf(n)>=0)return;t.push(n)}else{if(t.indexOf(n)<0)return;s.Utils.removeFromArray(t,n)}i(n),a=!0}}),a){this.updateDisplayedColumns();var l={type:n,columns:t,column:1===t.length?t[0]:null,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(l)}}},e.prototype.setRowGroupColumns=function(e){this.autoGroupsNeedBuilding=!0,this.setPrimaryColumnList(e,this.rowGroupColumns,v.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,this.setRowGroupActive.bind(this))},e.prototype.setRowGroupActive=function(e,t){e!==t.isRowGroupActive()&&(t.setRowGroupActive(e),e||t.setVisible(!0))},e.prototype.addRowGroupColumn=function(e){this.addRowGroupColumns([e])},e.prototype.addRowGroupColumns=function(e){this.autoGroupsNeedBuilding=!0,this.updatePrimaryColumnList(e,this.rowGroupColumns,!0,this.setRowGroupActive.bind(this,!0),v.Events.EVENT_COLUMN_ROW_GROUP_CHANGED)},e.prototype.removeRowGroupColumns=function(e){this.autoGroupsNeedBuilding=!0,this.updatePrimaryColumnList(e,this.rowGroupColumns,!1,this.setRowGroupActive.bind(this,!1),v.Events.EVENT_COLUMN_ROW_GROUP_CHANGED)},e.prototype.removeRowGroupColumn=function(e){this.removeRowGroupColumns([e])},e.prototype.addPivotColumns=function(e){this.updatePrimaryColumnList(e,this.pivotColumns,!0,function(e){return e.setPivotActive(!0)},v.Events.EVENT_COLUMN_PIVOT_CHANGED)},e.prototype.setPivotColumns=function(e){this.setPrimaryColumnList(e,this.pivotColumns,v.Events.EVENT_COLUMN_PIVOT_CHANGED,function(e,t){t.setPivotActive(e)})},e.prototype.addPivotColumn=function(e){this.addPivotColumns([e])},e.prototype.removePivotColumns=function(e){this.updatePrimaryColumnList(e,this.pivotColumns,!1,function(e){return e.setPivotActive(!1)},v.Events.EVENT_COLUMN_PIVOT_CHANGED)},e.prototype.removePivotColumn=function(e){this.removePivotColumns([e])},e.prototype.setPrimaryColumnList=function(e,t,o,i){var n=this;t.length=0,s.Utils.exists(e)&&e.forEach(function(e){var o=n.getPrimaryColumn(e);t.push(o)}),this.primaryColumns.forEach(function(e){var o=t.indexOf(e)>=0;i(o,e)}),this.updateDisplayedColumns();var r={type:o,columns:t,column:1===t.length?t[0]:null,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(r)},e.prototype.setValueColumns=function(e){this.setPrimaryColumnList(e,this.valueColumns,v.Events.EVENT_COLUMN_VALUE_CHANGED,this.setValueActive.bind(this))},e.prototype.setValueActive=function(e,t){if(e!==t.isValueActive()&&(t.setValueActive(e),e&&!t.getAggFunc())){var o=this.aggFuncService.getDefaultAggFunc(t);t.setAggFunc(o)}},e.prototype.addValueColumns=function(e){this.updatePrimaryColumnList(e,this.valueColumns,!0,this.setValueActive.bind(this,!0),v.Events.EVENT_COLUMN_VALUE_CHANGED)},e.prototype.addValueColumn=function(e){this.addValueColumns([e])},e.prototype.removeValueColumn=function(e){this.removeValueColumns([e])},e.prototype.removeValueColumns=function(e){this.updatePrimaryColumnList(e,this.valueColumns,!1,this.setValueActive.bind(this,!1),v.Events.EVENT_COLUMN_VALUE_CHANGED)},e.prototype.normaliseColumnWidth=function(e,t){return tthis.gridColumns.length-e.length)return console.warn("ag-Grid: tried to insert columns in invalid location, toIndex = "+t),void console.warn("ag-Grid: remember that you should not count the moving columns when calculating the new index");var o=this.getGridColumns(e);if(this.doesMovePassRules(o,t)){s.Utils.moveInArray(this.gridColumns,o,t),this.updateDisplayedColumns();var i={type:v.Events.EVENT_COLUMN_MOVED,columns:o,column:1===o.length?o[0]:null,toIndex:t,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(i),this.columnAnimationService.finish()}},e.prototype.doesMovePassRules=function(e,t){var o=this.gridColumns.slice();s.Utils.moveInArray(o,e,t);var i=!0;return this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree,function(e){if(e instanceof m.OriginalColumnGroup){var t=e;if(t.getColGroupDef()&&t.getColGroupDef().marryChildren){var n=[];t.getLeafColumns().forEach(function(e){var t=o.indexOf(e);n.push(t)});Math.max.apply(Math,n)-Math.min.apply(Math,n)>t.getLeafColumns().length-1&&(i=!1)}}}),i},e.prototype.moveColumn=function(e,t){this.moveColumns([e],t)},e.prototype.moveColumnByIndex=function(e,t){var o=this.gridColumns[e];this.moveColumn(o,t)},e.prototype.getBodyContainerWidth=function(){return this.bodyWidth},e.prototype.getContainerWidth=function(e){switch(e){case l.Column.PINNED_LEFT:return this.leftWidth;case l.Column.PINNED_RIGHT:return this.rightWidth;default:return this.bodyWidth}},e.prototype.updateBodyWidths=function(){var e=this.getWidthOfColsInList(this.displayedCenterColumns),t=this.getWidthOfColsInList(this.displayedLeftColumns),o=this.getWidthOfColsInList(this.displayedRightColumns);if(this.bodyWidthDirty=this.bodyWidth!==e,this.bodyWidth!==e||this.leftWidth!==t||this.rightWidth!==o){this.bodyWidth=e,this.leftWidth=t,this.rightWidth=o;var i={type:v.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(i)}},e.prototype.getValueColumns=function(){return this.valueColumns?this.valueColumns:[]},e.prototype.getPivotColumns=function(){return this.pivotColumns?this.pivotColumns:[]},e.prototype.isPivotActive=function(){return this.pivotColumns&&this.pivotColumns.length>0&&this.pivotMode},e.prototype.getRowGroupColumns=function(){return this.rowGroupColumns?this.rowGroupColumns:[]},e.prototype.getDisplayedCenterColumns=function(){return this.displayedCenterColumns},e.prototype.getDisplayedLeftColumns=function(){return this.displayedLeftColumns},e.prototype.getDisplayedRightColumns=function(){return this.displayedRightColumns},e.prototype.getDisplayedColumns=function(e){switch(e){case l.Column.PINNED_LEFT:return this.getDisplayedLeftColumns();case l.Column.PINNED_RIGHT:return this.getDisplayedRightColumns();default:return this.getDisplayedCenterColumns()}},e.prototype.getAllPrimaryColumns=function(){return this.primaryColumns},e.prototype.getAllGridColumns=function(){return this.gridColumns},e.prototype.isEmpty=function(){return s.Utils.missingOrEmpty(this.gridColumns)},e.prototype.isRowGroupEmpty=function(){return s.Utils.missingOrEmpty(this.rowGroupColumns)},e.prototype.setColumnVisible=function(e,t){this.setColumnsVisible([e],t)},e.prototype.setColumnsVisible=function(e,t){var o=this;this.columnAnimationService.start(),this.actionOnGridColumns(e,function(e){return e.setVisible(t),!0},function(){return{type:v.Events.EVENT_COLUMN_VISIBLE,visible:t,column:null,columns:null,api:o.gridApi,columnApi:o.columnApi}}),this.columnAnimationService.finish()},e.prototype.setColumnPinned=function(e,t){this.setColumnsPinned([e],t)},e.prototype.setColumnsPinned=function(e,t){var o=this;this.columnAnimationService.start();var i;i=!0===t||t===l.Column.PINNED_LEFT?l.Column.PINNED_LEFT:t===l.Column.PINNED_RIGHT?l.Column.PINNED_RIGHT:null,this.actionOnGridColumns(e,function(e){return e.setPinned(i),!0},function(){return{type:v.Events.EVENT_COLUMN_PINNED,pinned:i,column:null,columns:null,api:o.gridApi,columnApi:o.columnApi}}),this.columnAnimationService.finish()},e.prototype.actionOnGridColumns=function(e,t,o){var i=this;if(!s.Utils.missingOrEmpty(e)){var n=[];if(e.forEach(function(e){var o=i.getGridColumn(e);if(o){!1!==t(o)&&n.push(o)}}),0!==n.length&&(this.updateDisplayedColumns(),s.Utils.exists(o))){var r=o();r.columns=n,r.column=1===n.length?n[0]:null,this.eventService.dispatchEvent(r)}}},e.prototype.getDisplayedColBefore=function(e){var t=this.getAllDisplayedColumns(),o=t.indexOf(e);return o>0?t[o-1]:null},e.prototype.getDisplayedColAfter=function(e){var t=this.getAllDisplayedColumns(),o=t.indexOf(e);return o0},e.prototype.isPinningRight=function(){return this.displayedRightColumns.length>0},e.prototype.getPrimaryAndSecondaryAndAutoColumns=function(){var e=this.primaryColumns?this.primaryColumns.slice(0):[];return s.Utils.exists(this.groupAutoColumns)&&this.groupAutoColumns.forEach(function(t){return e.push(t)}),this.secondaryColumnsPresent&&this.secondaryColumns.forEach(function(t){return e.push(t)}),e},e.prototype.createStateItemFromColumn=function(e){var t=e.isRowGroupActive()?this.rowGroupColumns.indexOf(e):null,o=e.isPivotActive()?this.pivotColumns.indexOf(e):null,i=e.isValueActive()?e.getAggFunc():null;return{colId:e.getColId(),hide:!e.isVisible(),aggFunc:i,width:e.getActualWidth(),pivotIndex:o,pinned:e.getPinned(),rowGroupIndex:t}},e.prototype.getColumnState=function(){if(s.Utils.missing(this.primaryColumns))return[];var e=this.primaryColumns.map(this.createStateItemFromColumn.bind(this));return this.pivotMode||this.orderColumnStateList(e),e},e.prototype.orderColumnStateList=function(e){var t=this.gridColumns.map(function(e){return e.getColId()});e.sort(function(e,o){return t.indexOf(e.colId)-t.indexOf(o.colId)})},e.prototype.resetColumnState=function(){var e=this.getColumnsFromTree(this.primaryBalancedTree),t=[];e&&e.forEach(function(e){t.push({colId:e.getColId(),aggFunc:e.getColDef().aggFunc,hide:e.getColDef().hide,pinned:e.getColDef().pinned,rowGroupIndex:e.getColDef().rowGroupIndex,pivotIndex:e.getColDef().pivotIndex,width:e.getColDef().width})}),this.setColumnState(t)},e.prototype.setColumnState=function(e){var t=this;if(s.Utils.missingOrEmpty(this.primaryColumns))return!1;this.autoGroupsNeedBuilding=!0;var o=this.primaryColumns.slice();this.rowGroupColumns=[],this.valueColumns=[],this.pivotColumns=[];var i=!0,n={},r={};e&&e.forEach(function(e){var a=t.getPrimaryColumn(e.colId);a?(t.syncColumnWithStateItem(a,e,n,r),s.Utils.removeFromArray(o,a)):(console.warn("ag-grid: column "+e.colId+" not found"),i=!1)}),o.forEach(this.syncColumnWithNoState.bind(this)),this.rowGroupColumns.sort(this.sortColumnListUsingIndexes.bind(this,n)),this.pivotColumns.sort(this.sortColumnListUsingIndexes.bind(this,r)),this.copyDownGridColumns();var a=e.map(function(e){return e.colId});this.gridColumns.sort(function(e,t){return a.indexOf(e.getId())-a.indexOf(t.getId())}),this.updateDisplayedColumns();var l={type:v.Events.EVENT_COLUMN_EVERYTHING_CHANGED,api:this.gridApi,columnApi:this.columnApi};return this.eventService.dispatchEvent(l),i},e.prototype.sortColumnListUsingIndexes=function(e,t,o){return e[t.getId()]-e[o.getId()]},e.prototype.syncColumnWithNoState=function(e){e.setVisible(!1),e.setAggFunc(null),e.setPinned(null),e.setRowGroupActive(!1),e.setPivotActive(!1),e.setValueActive(!1)},e.prototype.syncColumnWithStateItem=function(e,t,o,i){e.setVisible(!t.hide),e.setPinned(t.pinned),t.width>=this.gridOptionsWrapper.getMinColWidth()&&e.setActualWidth(t.width),"string"==typeof t.aggFunc?(e.setAggFunc(t.aggFunc),e.setValueActive(!0),this.valueColumns.push(e)):(s.Utils.exists(t.aggFunc)&&console.warn("ag-Grid: stateItem.aggFunc must be a string. if using your own aggregation functions, register the functions first before using them in get/set state. This is because it isintended for the column state to be stored and retrieved as simple JSON."),e.setAggFunc(null),e.setValueActive(!1)),"number"==typeof t.rowGroupIndex?(this.rowGroupColumns.push(e),e.setRowGroupActive(!0),o[e.getId()]=t.rowGroupIndex):e.setRowGroupActive(!1),"number"==typeof t.pivotIndex?(this.pivotColumns.push(e),e.setPivotActive(!0),i[e.getId()]=t.pivotIndex):e.setPivotActive(!1)},e.prototype.getGridColumns=function(e){return this.getColumns(e,this.getGridColumn.bind(this))},e.prototype.getColumns=function(e,t){var o=[];return e&&e.forEach(function(e){var i=t(e);i&&o.push(i)}),o},e.prototype.getColumnWithValidation=function(e){var t=this.getPrimaryColumn(e);return t||console.warn("ag-Grid: could not find column "+t),t},e.prototype.getPrimaryColumn=function(e){return this.getColumn(e,this.primaryColumns)},e.prototype.getGridColumn=function(e){return this.getColumn(e,this.gridColumns)},e.prototype.getColumn=function(e,t){if(!e)return null;for(var o=0;o=0)return;e.rowGroupColumns.push(t),t.setRowGroupActive(!0)}})},e.prototype.extractPivotColumns=function(){var e=this;this.pivotColumns.forEach(function(e){return e.setPivotActive(!1)}),this.pivotColumns=[],this.primaryColumns.forEach(function(t){"number"==typeof t.getColDef().pivotIndex&&(e.pivotColumns.push(t),t.setPivotActive(!0))}),this.pivotColumns.sort(function(e,t){return e.getColDef().pivotIndex-t.getColDef().pivotIndex}),this.primaryColumns.forEach(function(t){if(t.getColDef().pivot){if(e.pivotColumns.indexOf(t)>=0)return;e.pivotColumns.push(t),t.setPivotActive(!0)}})},e.prototype.resetColumnGroupState=function(){var e=[];this.columnUtils.depthFirstOriginalTreeSearch(this.primaryBalancedTree,function(t){if(t instanceof m.OriginalColumnGroup){var o={groupId:t.getGroupId(),open:t.getColGroupDef().openByDefault};e.push(o)}}),this.setColumnGroupState(e)},e.prototype.getColumnGroupState=function(){var e=[];return this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree,function(t){if(t instanceof m.OriginalColumnGroup){var o=t;e.push({groupId:o.getGroupId(),open:o.isExpanded()})}}),e},e.prototype.setColumnGroupState=function(e){var t=this;this.columnAnimationService.start();var o=[];e.forEach(function(e){var i=e.groupId,n=e.open,r=t.getOriginalColumnGroup(i);r&&r.isExpanded()!==n&&(t.logger.log("columnGroupOpened("+r.getGroupId()+","+n+")"),r.setExpanded(n),o.push(r))}),this.updateGroupsAndDisplayedColumns(),o.forEach(function(e){var o={type:v.Events.EVENT_COLUMN_GROUP_OPENED,columnGroup:e,api:t.gridApi,columnApi:t.columnApi};t.eventService.dispatchEvent(o)}),this.columnAnimationService.finish()},e.prototype.setColumnGroupOpened=function(e,t){var o;o=e instanceof m.OriginalColumnGroup?e.getId():e,this.setColumnGroupState([{groupId:o,open:t}])},e.prototype.getOriginalColumnGroup=function(e){if(e instanceof m.OriginalColumnGroup)return e;"string"!=typeof e&&console.error("ag-Grid: group key must be a string");var t=null;return this.columnUtils.depthFirstOriginalTreeSearch(this.gridBalancedTree,function(o){if(o instanceof m.OriginalColumnGroup){var i=o;i.getId()===e&&(t=i)}}),t},e.prototype.calculateColumnsForDisplay=function(){var e;return e=this.pivotMode&&!this.secondaryColumnsPresent?this.createColumnsToDisplayFromValueColumns():s.Utils.filter(this.gridColumns,function(e){return e.isVisible()}),this.createGroupAutoColumnsIfNeeded(),s.Utils.exists(this.groupAutoColumns)&&(e=this.groupAutoColumns.concat(e)),e},e.prototype.checkColSpanActiveInCols=function(e){var t=!1;return e.forEach(function(e){s.Utils.exists(e.getColDef().colSpan)&&(t=!0)}),t},e.prototype.calculateColumnsForGroupDisplay=function(){var e=this;this.groupDisplayColumns=[];var t=function(t){var o=t.getColDef();o&&s.Utils.exists(o.showRowGroup)&&e.groupDisplayColumns.push(t)};this.gridColumns.forEach(t),this.groupAutoColumns&&this.groupAutoColumns.forEach(t)},e.prototype.getGroupDisplayColumns=function(){return this.groupDisplayColumns},e.prototype.createColumnsToDisplayFromValueColumns=function(){var e=this,t=this.valueColumns.slice();return t.sort(function(t,o){return e.gridColumns.indexOf(t)-e.gridColumns.indexOf(o)}),t},e.prototype.updateDisplayedColumns=function(){var e=this.calculateColumnsForDisplay();this.buildDisplayedTrees(e),this.calculateColumnsForGroupDisplay(),this.updateGroupsAndDisplayedColumns(),this.setFirstRightAndLastLeftPinned()},e.prototype.isSecondaryColumnsPresent=function(){return this.secondaryColumnsPresent},e.prototype.setSecondaryColumns=function(e){var t=e&&e.length>0;if(t||this.secondaryColumnsPresent){if(t){this.processSecondaryColumnDefinitions(e);var o=this.balancedColumnTreeBuilder.createBalancedColumnGroups(e,!1);this.secondaryBalancedTree=o.balancedTree,this.secondaryHeaderRowCount=o.treeDept+1,this.secondaryColumns=this.getColumnsFromTree(this.secondaryBalancedTree),this.secondaryColumnsPresent=!0}else this.secondaryBalancedTree=null,this.secondaryHeaderRowCount=-1,this.secondaryColumns=null,this.secondaryColumnsPresent=!1;this.copyDownGridColumns(),this.updateDisplayedColumns()}},e.prototype.processSecondaryColumnDefinitions=function(e){function t(e){e.forEach(function(e){if(s.Utils.exists(e.children)){var n=e;i&&i(n),t(n.children)}else{var r=e;o&&o(r)}})}var o=this.gridOptionsWrapper.getProcessSecondaryColDefFunc(),i=this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();(o||i)&&t(e)},e.prototype.copyDownGridColumns=function(){this.secondaryColumns?(this.gridBalancedTree=this.secondaryBalancedTree.slice(),this.gridHeaderRowCount=this.secondaryHeaderRowCount,this.gridColumns=this.secondaryColumns.slice()):(this.gridBalancedTree=this.primaryBalancedTree.slice(),this.gridHeaderRowCount=this.primaryHeaderRowCount,this.gridColumns=this.primaryColumns.slice()),this.clearDisplayedColumns(),this.colSpanActive=this.checkColSpanActiveInCols(this.gridColumns);var e={type:v.Events.EVENT_GRID_COLUMNS_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(e)},e.prototype.clearDisplayedColumns=function(){this.displayedLeftColumnTree=[],this.displayedRightColumnTree=[],this.displayedCentreColumnTree=[],this.displayedLeftHeaderRows={},this.displayedRightHeaderRows={},this.displayedCentreHeaderRows={},this.displayedLeftColumns=[],this.displayedRightColumns=[],this.displayedCenterColumns=[],this.allDisplayedColumns=[],this.allDisplayedVirtualColumns=[]},e.prototype.updateGroupsAndDisplayedColumns=function(){this.updateGroups(),this.updateDisplayedColumnsFromTrees(),this.updateVirtualSets(),this.updateBodyWidths();var e={type:v.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(e)},e.prototype.updateDisplayedColumnsFromTrees=function(){this.addToDisplayedColumns(this.displayedLeftColumnTree,this.displayedLeftColumns),this.addToDisplayedColumns(this.displayedCentreColumnTree,this.displayedCenterColumns),this.addToDisplayedColumns(this.displayedRightColumnTree,this.displayedRightColumns),this.setupAllDisplayedColumns(),this.setLeftValues()},e.prototype.setupAllDisplayedColumns=function(){this.gridOptionsWrapper.isEnableRtl()?this.allDisplayedColumns=this.displayedRightColumns.concat(this.displayedCenterColumns).concat(this.displayedLeftColumns):this.allDisplayedColumns=this.displayedLeftColumns.concat(this.displayedCenterColumns).concat(this.displayedRightColumns)},e.prototype.setLeftValues=function(){this.setLeftValuesOfColumns(),this.setLeftValuesOfGroups()},e.prototype.setLeftValuesOfColumns=function(){var e=this,t=this.primaryColumns.slice(0),o=this.gridOptionsWrapper.isEnableRtl();[this.displayedLeftColumns,this.displayedRightColumns,this.displayedCenterColumns].forEach(function(i){if(o){var n=e.getWidthOfColsInList(i);i.forEach(function(e){n-=e.getActualWidth(),e.setLeft(n)})}else{var r=0;i.forEach(function(e){e.setLeft(r),r+=e.getActualWidth()})}s.Utils.removeAllFromArray(t,i)}),t.forEach(function(e){e.setLeft(null)})},e.prototype.setLeftValuesOfGroups=function(){[this.displayedLeftColumnTree,this.displayedRightColumnTree,this.displayedCentreColumnTree].forEach(function(e){e.forEach(function(e){if(e instanceof a.ColumnGroup){e.checkLeft()}})})},e.prototype.addToDisplayedColumns=function(e,t){t.length=0,this.columnUtils.depthFirstDisplayedColumnTreeSearch(e,function(e){e instanceof l.Column&&t.push(e)})},e.prototype.updateDisplayedCenterVirtualColumns=function(){var e=this.gridOptionsWrapper.isSuppressColumnVirtualisation()||this.gridOptionsWrapper.isForPrint();this.allDisplayedCenterVirtualColumns=e?this.displayedCenterColumns:this.filterOutColumnsWithinViewport(),this.allDisplayedVirtualColumns=this.allDisplayedCenterVirtualColumns.concat(this.displayedLeftColumns).concat(this.displayedRightColumns);var t={};return this.allDisplayedVirtualColumns.forEach(function(e){t[e.getId()]=!0}),t},e.prototype.getVirtualHeaderGroupRow=function(e,t){var o;switch(e){case l.Column.PINNED_LEFT:o=this.displayedLeftHeaderRows[t];break;case l.Column.PINNED_RIGHT:o=this.displayedRightHeaderRows[t];break;default:o=this.displayedCentreHeaderRows[t]}return s.Utils.missing(o)&&(o=[]),o},e.prototype.updateDisplayedVirtualGroups=function(e){function t(o,i,n){for(var r=!1,s=0;s=0;c--){var h=r[c],f=Math.round(h.getActualWidth()*u);if(f0&&!this.gridOptionsWrapper.isGroupSuppressAutoColumn()&&!this.gridOptionsWrapper.isGroupUseEntireRow()&&!this.gridOptionsWrapper.isGroupSuppressRow();this.groupAutoColumns=e?this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns):null}},e.prototype.createValueColumns=function(){this.valueColumns.forEach(function(e){return e.setValueActive(!1)}),this.valueColumns=[];for(var e=0;e=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(10),a=o(1),l=o(0),p=o(0),u=o(2),d=function(){function e(){this.allSyncListeners={},this.allAsyncListeners={},this.globalSyncListeners=[],this.globalAsyncListeners=[],this.asyncFunctionsQueue=[],this.scheduled=!1}return t=e,e.prototype.setBeans=function(e,t,o){if(void 0===o&&(o=null),this.logger=e.create("EventService"),o){var i=t.useAsyncEvents();this.addGlobalListener(o,i)}},e.prototype.getListenerList=function(e,t){var o=t?this.allAsyncListeners:this.allSyncListeners,i=o[e];return i||(i=[],o[e]=i),i},e.prototype.addEventListener=function(e,t,o){if(void 0===o&&(o=!1),this.assertNotDeprecated(e)){var i=this.getListenerList(e,o);i.indexOf(t)<0&&i.push(t)}},e.prototype.assertNotDeprecated=function(e){return"floatingRowDataChanged"!==e||(console.warn("ag-Grid: floatingRowDataChanged is now called pinnedRowDataChanged"),!1)},e.prototype.addModalPriorityEventListener=function(e,o,i){void 0===i&&(i=!1),this.assertNotDeprecated(e)&&this.addEventListener(e+t.PRIORITY,o,i)},e.prototype.addGlobalListener=function(e,t){void 0===t&&(t=!1),t?this.globalAsyncListeners.push(e):this.globalSyncListeners.push(e)},e.prototype.removeEventListener=function(e,t,o){void 0===o&&(o=!1);var i=this.getListenerList(e,o);a.Utils.removeFromArray(i,t)},e.prototype.removeGlobalListener=function(e){a.Utils.removeFromArray(this.globalSyncListeners,e)},e.prototype.dispatchEvent=function(e){this.dispatchToListeners(e,!0),this.dispatchToListeners(e,!1)},e.prototype.dispatchToListeners=function(e,o){var i=this,n=o?this.globalAsyncListeners:this.globalSyncListeners,r=e.type,s=this.getListenerList(r+t.PRIORITY,o);a.Utils.forEachSnapshotFirst(s,function(t){o?i.dispatchAsync(function(){return t(e)}):t(e)});var l=this.getListenerList(r,o);a.Utils.forEachSnapshotFirst(l,function(t){o?i.dispatchAsync(function(){return t(e)}):t(e)}),a.Utils.forEachSnapshotFirst(n,function(t){o?i.dispatchAsync(function(){return t(r,e)}):t(r,e)})},e.prototype.dispatchAsync=function(e){this.asyncFunctionsQueue.push(e),this.scheduled||(setTimeout(this.flushAsyncQueue.bind(this),0),this.scheduled=!0)},e.prototype.flushAsyncQueue=function(){this.scheduled=!1;var e=this.asyncFunctionsQueue.slice();this.asyncFunctionsQueue=[],e.forEach(function(e){return e()})},e.PRIORITY="-P1",i([r(0,p.Qualifier("loggerFactory")),r(1,p.Qualifier("gridOptionsWrapper")),r(2,p.Qualifier("globalEventListener")),n("design:type",Function),n("design:paramtypes",[s.LoggerFactory,u.GridOptionsWrapper,Function]),n("design:returntype",void 0)],e.prototype,"setBeans",null),e=t=i([l.Bean("eventService")],e);var t}();t.EventService=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(){}return e.EVENT_COLUMN_EVERYTHING_CHANGED="columnEverythingChanged",e.EVENT_NEW_COLUMNS_LOADED="newColumnsLoaded",e.EVENT_COLUMN_PIVOT_MODE_CHANGED="columnPivotModeChanged",e.EVENT_COLUMN_ROW_GROUP_CHANGED="columnRowGroupChanged",e.EVENT_COLUMN_PIVOT_CHANGED="columnPivotChanged",e.EVENT_GRID_COLUMNS_CHANGED="gridColumnsChanged",e.EVENT_COLUMN_VALUE_CHANGED="columnValueChanged",e.EVENT_COLUMN_MOVED="columnMoved",e.EVENT_COLUMN_VISIBLE="columnVisible",e.EVENT_COLUMN_PINNED="columnPinned",e.EVENT_COLUMN_GROUP_OPENED="columnGroupOpened",e.EVENT_COLUMN_RESIZED="columnResized",e.EVENT_DISPLAYED_COLUMNS_CHANGED="displayedColumnsChanged",e.EVENT_VIRTUAL_COLUMNS_CHANGED="virtualColumnsChanged",e.EVENT_ROW_GROUP_OPENED="rowGroupOpened",e.EVENT_ROW_DATA_CHANGED="rowDataChanged",e.EVENT_ROW_DATA_UPDATED="rowDataUpdated",e.EVENT_PINNED_ROW_DATA_CHANGED="pinnedRowDataChanged",e.EVENT_RANGE_SELECTION_CHANGED="rangeSelectionChanged",e.EVENT_MODEL_UPDATED="modelUpdated",e.EVENT_CELL_CLICKED="cellClicked",e.EVENT_CELL_DOUBLE_CLICKED="cellDoubleClicked",e.EVENT_CELL_CONTEXT_MENU="cellContextMenu",e.EVENT_CELL_VALUE_CHANGED="cellValueChanged",e.EVENT_ROW_VALUE_CHANGED="rowValueChanged",e.EVENT_CELL_FOCUSED="cellFocused",e.EVENT_ROW_SELECTED="rowSelected",e.EVENT_SELECTION_CHANGED="selectionChanged",e.EVENT_CELL_MOUSE_OVER="cellMouseOver",e.EVENT_CELL_MOUSE_OUT="cellMouseOut",e.EVENT_FILTER_CHANGED="filterChanged",e.EVENT_FILTER_MODIFIED="filterModified",e.EVENT_SORT_CHANGED="sortChanged",e.EVENT_VIRTUAL_ROW_REMOVED="virtualRowRemoved",e.EVENT_ROW_CLICKED="rowClicked",e.EVENT_ROW_DOUBLE_CLICKED="rowDoubleClicked",e.EVENT_GRID_READY="gridReady",e.EVENT_GRID_SIZE_CHANGED="gridSizeChanged",e.EVENT_VIEWPORT_CHANGED="viewportChanged",e.EVENT_DRAG_STARTED="dragStarted",e.EVENT_DRAG_STOPPED="dragStopped",e.EVENT_ROW_EDITING_STARTED="rowEditingStarted",e.EVENT_ROW_EDITING_STOPPED="rowEditingStopped",e.EVENT_CELL_EDITING_STARTED="cellEditingStarted",e.EVENT_CELL_EDITING_STOPPED="cellEditingStopped",e.EVENT_BODY_SCROLL="bodyScroll",e.EVENT_PAGINATION_CHANGED="paginationChanged",e.EVENT_COMPONENT_STATE_CHANGED="componentStateChanged",e.EVENT_BODY_HEIGHT_CHANGED="bodyHeightChanged",e.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED="displayedColumnsWidthChanged",e.EVENT_SCROLL_VISIBILITY_CHANGED="scrollVisibilityChanged",e.EVENT_COLUMN_HOVER_CHANGED="columnHoverChanged",e.EVENT_FLASH_CELLS="flashCells",e.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST="columnRowGroupChangeRequest",e.EVENT_COLUMN_PIVOT_CHANGE_REQUEST="columnPivotChangeRequest",e.EVENT_COLUMN_VALUE_CHANGE_REQUEST="columnValueChangeRequest",e.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST="columnAggFuncChangeRequest",e}();t.Events=i},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(41),s=o(18),a=o(55),l=o(16),p=o(3),u=o(14),d=o(2),c=o(11),h=o(19),f=o(4),g=o(7),y=o(0),v=o(32),m=o(21),C=o(24),E=o(23),w=o(1),R=o(52),O=o(51),_=o(31),S=o(100),A=o(29),P=o(44),b=o(25),D=function(){function e(){}return e.prototype.init=function(){switch(this.rowModel.getType()){case g.Constants.ROW_MODEL_TYPE_IN_MEMORY:this.inMemoryRowModel=this.rowModel;break;case g.Constants.ROW_MODEL_TYPE_INFINITE:this.infinitePageRowModel=this.rowModel;break;case g.Constants.ROW_MODEL_TYPE_ENTERPRISE:this.enterpriseRowModel=this.rowModel}},e.prototype.__getAlignedGridService=function(){return this.alignedGridsService},e.prototype.getDataAsCsv=function(e){return this.csvCreator.getDataAsCsv(e)},e.prototype.exportDataAsCsv=function(e){this.csvCreator.exportDataAsCsv(e)},e.prototype.getDataAsExcel=function(e){return this.excelCreator||console.warn("ag-Grid: Excel export is only available in ag-Grid Enterprise"),this.excelCreator.getDataAsExcelXml(e)},e.prototype.exportDataAsExcel=function(e){this.excelCreator||console.warn("ag-Grid: Excel export is only available in ag-Grid Enterprise"),this.excelCreator.exportDataAsExcel(e)},e.prototype.setEnterpriseDatasource=function(e){this.gridOptionsWrapper.isRowModelEnterprise()?this.rowModel.setDatasource(e):console.warn("ag-Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '"+g.Constants.ROW_MODEL_TYPE_ENTERPRISE+"'")},e.prototype.setDatasource=function(e){this.gridOptionsWrapper.isRowModelInfinite()?this.rowModel.setDatasource(e):console.warn("ag-Grid: you can only use a datasource when gridOptions.rowModelType is '"+g.Constants.ROW_MODEL_TYPE_INFINITE+"'")},e.prototype.setViewportDatasource=function(e){this.gridOptionsWrapper.isRowModelViewport()?this.rowModel.setViewportDatasource(e):console.warn("ag-Grid: you can only use a viewport datasource when gridOptions.rowModelType is '"+g.Constants.ROW_MODEL_TYPE_VIEWPORT+"'")},e.prototype.setRowData=function(e){if(this.gridOptionsWrapper.isRowModelDefault())if(this.gridOptionsWrapper.isDeltaRowDataMode()){var t=this.immutableService.createTransactionForRowData(e);this.inMemoryRowModel.updateRowData(t)}else this.selectionController.reset(),this.inMemoryRowModel.setRowData(e);else console.log("cannot call setRowData unless using normal row model")},e.prototype.setFloatingTopRowData=function(e){console.warn("ag-Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()"),this.setPinnedTopRowData(e)},e.prototype.setFloatingBottomRowData=function(e){console.warn("ag-Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()"),this.setPinnedBottomRowData(e)},e.prototype.getFloatingTopRowCount=function(){return console.warn("ag-Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()"),this.getPinnedTopRowCount()},e.prototype.getFloatingBottomRowCount=function(){return console.warn("ag-Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()"),this.getPinnedBottomRowCount()},e.prototype.getFloatingTopRow=function(e){return console.warn("ag-Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()"),this.getPinnedTopRow(e)},e.prototype.getFloatingBottomRow=function(e){return console.warn("ag-Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()"),this.getPinnedBottomRow(e)},e.prototype.setPinnedTopRowData=function(e){this.pinnedRowModel.setPinnedTopRowData(e)},e.prototype.setPinnedBottomRowData=function(e){this.pinnedRowModel.setPinnedBottomRowData(e)},e.prototype.getPinnedTopRowCount=function(){return this.pinnedRowModel.getPinnedTopRowCount()},e.prototype.getPinnedBottomRowCount=function(){return this.pinnedRowModel.getPinnedBottomRowCount()},e.prototype.getPinnedTopRow=function(e){return this.pinnedRowModel.getPinnedTopRow(e)},e.prototype.getPinnedBottomRow=function(e){return this.pinnedRowModel.getPinnedBottomRow(e)},e.prototype.setColumnDefs=function(e){this.columnController.setColumnDefs(e)},e.prototype.expireValueCache=function(){this.valueCache.expire()},e.prototype.getVerticalPixelRange=function(){return this.gridPanel.getVerticalPixelRange()},e.prototype.refreshCells=function(e){if(void 0===e&&(e={}),Array.isArray(e))return void console.warn("since ag-Grid v11.1, refreshCells() now takes parameters, please see the documentation.");this.rowRenderer.refreshCells(e)},e.prototype.redrawRows=function(e){void 0===e&&(e={}),e&&e.rowNodes?this.rowRenderer.redrawRows(e.rowNodes):this.rowRenderer.redrawAfterModelUpdate()},e.prototype.timeFullRedraw=function(e){function t(){var a=(new Date).getTime();s.rowRenderer.redrawAfterModelUpdate();var l=(new Date).getTime();setTimeout(function(){var s=(new Date).getTime(),p=l-a,u=s-l;console.log("duration: processing = "+p+"ms, reflow = "+u+"ms"),i++,n+=p,r+=u,i=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(4),s=o(1),a=o(0),l=o(2),p=o(27),u=o(3),d=o(6),c=function(){function e(e,t,o){this.moving=!1,this.menuVisible=!1,this.filterActive=!1,this.eventService=new r.EventService,this.rowGroupActive=!1,this.pivotActive=!1,this.aggregationActive=!1,this.colDef=e,this.visible=!e.hide,this.sort=e.sort,this.sortedAt=e.sortedAt,this.colId=t,this.primary=o}return e.prototype.setParent=function(e){this.parent=e},e.prototype.getParent=function(){return this.parent},e.prototype.initialise=function(){this.cellEditor=this.frameworkFactory.colDefCellEditor(this.colDef),this.filter=this.frameworkFactory.colDefFilter(this.colDef),this.setPinned(this.colDef.pinned);var e=this.gridOptionsWrapper.getMinColWidth(),t=this.gridOptionsWrapper.getMaxColWidth();this.colDef.minWidth?this.minWidth=this.colDef.minWidth:this.minWidth=e,this.colDef.maxWidth?this.maxWidth=this.colDef.maxWidth:this.maxWidth=t,this.actualWidth=this.columnUtils.calculateColInitialWidth(this.colDef);var o=this.gridOptionsWrapper.isSuppressFieldDotNotation();this.fieldContainsDots=s.Utils.exists(this.colDef.field)&&this.colDef.field.indexOf(".")>=0&&!o,this.tooltipFieldContainsDots=s.Utils.exists(this.colDef.tooltipField)&&this.colDef.tooltipField.indexOf(".")>=0&&!o,this.validate()},e.prototype.isEmptyGroup=function(){return!1},e.prototype.isRowGroupDisplayed=function(e){if(s.Utils.missing(this.colDef)||s.Utils.missing(this.colDef.showRowGroup))return!1;var t=!0===this.colDef.showRowGroup,o=this.colDef.showRowGroup===e;return t||o},e.prototype.getCellEditor=function(){return this.cellEditor},e.prototype.getFilter=function(){return this.filter},e.prototype.getUniqueId=function(){return this.getId()},e.prototype.isPrimary=function(){return this.primary},e.prototype.isFilterAllowed=function(){return this.primary&&!this.colDef.suppressFilter},e.prototype.isFieldContainsDots=function(){return this.fieldContainsDots},e.prototype.isTooltipFieldContainsDots=function(){return this.tooltipFieldContainsDots},e.prototype.validate=function(){this.gridOptionsWrapper.isEnterprise()||(s.Utils.exists(this.colDef.aggFunc)&&console.warn("ag-Grid: aggFunc is only valid in ag-Grid-Enterprise"),s.Utils.exists(this.colDef.rowGroupIndex)&&console.warn("ag-Grid: rowGroupIndex is only valid in ag-Grid-Enterprise"),s.Utils.exists(this.colDef.rowGroup)&&console.warn("ag-Grid: rowGroup is only valid in ag-Grid-Enterprise"),s.Utils.exists(this.colDef.pivotIndex)&&console.warn("ag-Grid: pivotIndex is only valid in ag-Grid-Enterprise"),s.Utils.exists(this.colDef.pivot)&&console.warn("ag-Grid: pivot is only valid in ag-Grid-Enterprise")),s.Utils.exists(this.colDef.width)&&"number"!=typeof this.colDef.width&&console.warn("ag-Grid: colDef.width should be a number, not "+typeof this.colDef.width),s.Utils.get(this,"colDef.cellRendererParams.restrictToOneGroup",null)&&console.warn("ag-Grid: Since ag-grid 11.0.0 cellRendererParams.restrictToOneGroup is deprecated. You should use showRowGroup"),s.Utils.get(this,"colDef.cellRendererParams.keyMap",null)&&console.warn("ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator"),s.Utils.get(this,"colDef.cellRendererParams.keyMap",null)&&console.warn("ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator");var e=this.colDef;e.floatingCellRenderer&&(console.warn("ag-Grid: since v11, floatingCellRenderer is now pinnedRowCellRenderer"),this.colDef.pinnedRowCellRenderer=e.floatingCellRenderer),e.floatingRendererFramework&&(console.warn("ag-Grid: since v11, floatingRendererFramework is now pinnedRowCellRendererFramework"),this.colDef.pinnedRowCellRendererFramework=e.floatingRendererFramework),e.floatingRendererParams&&(console.warn("ag-Grid: since v11, floatingRendererParams is now pinnedRowCellRendererParams"),this.colDef.pinnedRowCellRendererParams=e.floatingRendererParams),e.floatingValueFormatter&&(console.warn("ag-Grid: since v11, floatingValueFormatter is now pinnedRowValueFormatter"),this.colDef.pinnedRowValueFormatter=e.floatingValueFormatter),e.cellFormatter&&(console.warn("ag-Grid: since v12, cellFormatter is now valueFormatter"),s.Utils.missing(this.colDef.valueFormatter)&&(this.colDef.valueFormatter=e.cellFormatter))},e.prototype.addEventListener=function(e,t){this.eventService.addEventListener(e,t)},e.prototype.removeEventListener=function(e,t){this.eventService.removeEventListener(e,t)},e.prototype.createIsColumnFuncParams=function(e){return{node:e,column:this,colDef:this.colDef,context:this.gridOptionsWrapper.getContext(),api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi()}},e.prototype.isSuppressNavigable=function(e){if("boolean"==typeof this.colDef.suppressNavigable)return this.colDef.suppressNavigable;if("function"==typeof this.colDef.suppressNavigable){var t=this.createIsColumnFuncParams(e);return(0,this.colDef.suppressNavigable)(t)}return!1},e.prototype.isCellEditable=function(e){return!(e.group&&!this.gridOptionsWrapper.isEnableGroupEdit())&&this.isColumnFunc(e,this.colDef.editable)},e.prototype.isSuppressPaste=function(e){return this.isColumnFunc(e,this.colDef?this.colDef.suppressPaste:null)},e.prototype.isResizable=function(){var e=this.gridOptionsWrapper.isEnableColResize(),t=this.colDef&&this.colDef.suppressResize;return e&&!t},e.prototype.isColumnFunc=function(e,t){if("boolean"==typeof t)return t;if("function"==typeof t){return t(this.createIsColumnFuncParams(e))}return!1},e.prototype.setMoving=function(t){this.moving=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_MOVING_CHANGED))},e.prototype.createColumnEvent=function(e){return{api:this.gridApi,columnApi:this.columnApi,type:e,column:this,columns:[this]}},e.prototype.isMoving=function(){return this.moving},e.prototype.getSort=function(){return this.sort},e.prototype.setSort=function(t){this.sort!==t&&(this.sort=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_SORT_CHANGED)))},e.prototype.setMenuVisible=function(t){this.menuVisible!==t&&(this.menuVisible=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_MENU_VISIBLE_CHANGED)))},e.prototype.isMenuVisible=function(){return this.menuVisible},e.prototype.isSortAscending=function(){return this.sort===e.SORT_ASC},e.prototype.isSortDescending=function(){return this.sort===e.SORT_DESC},e.prototype.isSortNone=function(){return s.Utils.missing(this.sort)},e.prototype.isSorting=function(){return s.Utils.exists(this.sort)},e.prototype.getSortedAt=function(){return this.sortedAt},e.prototype.setSortedAt=function(e){this.sortedAt=e},e.prototype.setAggFunc=function(e){this.aggFunc=e},e.prototype.getAggFunc=function(){return this.aggFunc},e.prototype.getLeft=function(){return this.left},e.prototype.getOldLeft=function(){return this.oldLeft},e.prototype.getRight=function(){return this.left+this.actualWidth},e.prototype.setLeft=function(t){this.oldLeft=this.left,this.left!==t&&(this.left=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_LEFT_CHANGED)))},e.prototype.isFilterActive=function(){return this.filterActive},e.prototype.setFilterActive=function(t){this.filterActive!==t&&(this.filterActive=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_FILTER_ACTIVE_CHANGED))),this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_FILTER_CHANGED))},e.prototype.setPinned=function(t){this.gridOptionsWrapper.isForPrint()||(!0===t||t===e.PINNED_LEFT?this.pinned=e.PINNED_LEFT:t===e.PINNED_RIGHT?this.pinned=e.PINNED_RIGHT:this.pinned=null)},e.prototype.setFirstRightPinned=function(t){this.firstRightPinned!==t&&(this.firstRightPinned=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_FIRST_RIGHT_PINNED_CHANGED)))},e.prototype.setLastLeftPinned=function(t){this.lastLeftPinned!==t&&(this.lastLeftPinned=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_LAST_LEFT_PINNED_CHANGED)))},e.prototype.isFirstRightPinned=function(){return this.firstRightPinned},e.prototype.isLastLeftPinned=function(){return this.lastLeftPinned},e.prototype.isPinned=function(){return this.pinned===e.PINNED_LEFT||this.pinned===e.PINNED_RIGHT},e.prototype.isPinnedLeft=function(){return this.pinned===e.PINNED_LEFT},e.prototype.isPinnedRight=function(){return this.pinned===e.PINNED_RIGHT},e.prototype.getPinned=function(){return this.pinned},e.prototype.setVisible=function(t){var o=!0===t;this.visible!==o&&(this.visible=o,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_VISIBLE_CHANGED)))},e.prototype.isVisible=function(){return this.visible},e.prototype.getColDef=function(){return this.colDef},e.prototype.getColumnGroupShow=function(){return this.colDef.columnGroupShow},e.prototype.getColId=function(){return this.colId},e.prototype.getId=function(){return this.getColId()},e.prototype.getDefinition=function(){return this.colDef},e.prototype.getActualWidth=function(){return this.actualWidth},e.prototype.getColSpan=function(e){if(s.Utils.missing(this.colDef.colSpan))return 1;var t={node:e,data:e.data,colDef:this.colDef,column:this,api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext()},o=this.colDef.colSpan(t);return o>1?o:1},e.prototype.setActualWidth=function(t){this.actualWidth!==t&&(this.actualWidth=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_WIDTH_CHANGED)))},e.prototype.isGreaterThanMax=function(e){return!!this.maxWidth&&e>this.maxWidth},e.prototype.getMinWidth=function(){return this.minWidth},e.prototype.getMaxWidth=function(){return this.maxWidth},e.prototype.setMinimum=function(){this.setActualWidth(this.minWidth)},e.prototype.setRowGroupActive=function(t){this.rowGroupActive!==t&&(this.rowGroupActive=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_ROW_GROUP_CHANGED)))},e.prototype.isRowGroupActive=function(){return this.rowGroupActive},e.prototype.setPivotActive=function(t){this.pivotActive!==t&&(this.pivotActive=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_PIVOT_CHANGED)))},e.prototype.isPivotActive=function(){return this.pivotActive},e.prototype.isAnyFunctionActive=function(){return this.isPivotActive()||this.isRowGroupActive()||this.isValueActive()},e.prototype.isAnyFunctionAllowed=function(){return this.isAllowPivot()||this.isAllowRowGroup()||this.isAllowValue()},e.prototype.setValueActive=function(t){this.aggregationActive!==t&&(this.aggregationActive=t,this.eventService.dispatchEvent(this.createColumnEvent(e.EVENT_VALUE_CHANGED)))},e.prototype.isValueActive=function(){return this.aggregationActive},e.prototype.isAllowPivot=function(){return!0===this.colDef.enablePivot},e.prototype.isAllowValue=function(){return!0===this.colDef.enableValue},e.prototype.isAllowRowGroup=function(){return!0===this.colDef.enableRowGroup},e.prototype.getMenuTabs=function(e){var t=this.getColDef().menuTabs;return null==t&&(t=e),t},e.EVENT_MOVING_CHANGED="movingChanged",e.EVENT_LEFT_CHANGED="leftChanged",e.EVENT_WIDTH_CHANGED="widthChanged",e.EVENT_LAST_LEFT_PINNED_CHANGED="lastLeftPinnedChanged",e.EVENT_FIRST_RIGHT_PINNED_CHANGED="firstRightPinnedChanged",e.EVENT_VISIBLE_CHANGED="visibleChanged",e.EVENT_FILTER_CHANGED="filterChanged",e.EVENT_FILTER_ACTIVE_CHANGED="filterActiveChanged",e.EVENT_SORT_CHANGED="sortChanged",e.EVENT_MENU_VISIBLE_CHANGED="menuVisibleChanged",e.EVENT_ROW_GROUP_CHANGED="columnRowGroupChanged",e.EVENT_PIVOT_CHANGED="columnPivotChanged",e.EVENT_VALUE_CHANGED="columnValueChanged",e.PINNED_RIGHT="right",e.PINNED_LEFT="left",e.SORT_ASC="asc",e.SORT_DESC="desc",i([a.Autowired("gridOptionsWrapper"),n("design:type",l.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([a.Autowired("columnUtils"),n("design:type",p.ColumnUtils)],e.prototype,"columnUtils",void 0),i([a.Autowired("frameworkFactory"),n("design:type",Object)],e.prototype,"frameworkFactory",void 0),i([a.Autowired("columnApi"),n("design:type",u.ColumnApi)],e.prototype,"columnApi",void 0),i([a.Autowired("gridApi"),n("design:type",d.GridApi)],e.prototype,"gridApi",void 0),i([a.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"initialise",null),e}();t.Column=c},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(2),a=o(0),l=o(0),p=function(){function e(){}return e.prototype.setBeans=function(e){this.logging=e.isDebug()},e.prototype.create=function(e){return new u(e,this.isLogging.bind(this))},e.prototype.isLogging=function(){return this.logging},i([r(0,l.Qualifier("gridOptionsWrapper")),n("design:type",Function),n("design:paramtypes",[s.GridOptionsWrapper]),n("design:returntype",void 0)],e.prototype,"setBeans",null),e=i([a.Bean("loggerFactory")],e)}();t.LoggerFactory=p;var u=function(){function e(e,t){this.name=e,this.isLoggingFunc=t}return e.prototype.isLogging=function(){return this.isLoggingFunc()},e.prototype.log=function(e){this.isLoggingFunc()&&console.log("ag-Grid."+this.name+": "+e)},e}();t.Logger=u},function(e,t,o){"use strict";function i(e,t){for(var o=0;o=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},l=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var p=o(1),u=o(2),d=o(3),c=o(18),h=o(63),f=o(10),g=o(0),y=o(4),v=o(5),m=o(43),C=o(7),E=o(14),w=o(41),R=o(64),O=o(24),_=o(30),S=o(13),A=o(115),P=o(31),b=o(67),D=o(44),T=o(25),N=o(6),F=o(45),L=o(46),G='',M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.scrollLeft=-1,t.nextScrollLeft=-1,t.scrollTop=-1,t.nextScrollTop=-1,t.verticalRedrawNeeded=!1,t}return r(t,e),t.prototype.agWire=function(e){this.logger=e.create("GridPanel"),this.forPrint=this.gridOptionsWrapper.isForPrint(),this.autoHeight=this.gridOptionsWrapper.isAutoHeight(),this.scrollWidth=this.gridOptionsWrapper.getScrollbarWidth(),this.enableRtl=this.gridOptionsWrapper.isEnableRtl(),this.loadTemplate(),this.findElements()},t.prototype.getVerticalPixelRange=function(){var e=this.getPrimaryScrollViewport();return{top:e.scrollTop,bottom:e.scrollTop+e.offsetHeight}},t.prototype.destroy=function(){e.prototype.destroy.call(this)},t.prototype.onRowDataChanged=function(){this.showOrHideOverlay()},t.prototype.showOrHideOverlay=function(){this.paginationProxy.isEmpty()&&!this.gridOptionsWrapper.isSuppressNoRowsOverlay()?this.showNoRowsOverlay():this.hideOverlay()},t.prototype.getLayout=function(){return this.layout},t.prototype.init=function(){this.useAnimationFrame=!this.gridOptionsWrapper.isSuppressAnimationFrame(),this.addEventListeners(),this.addDragListeners(),this.layout=new h.BorderLayout({overlays:{loading:p.Utils.loadTemplate(this.createLoadingOverlayTemplate()),noRows:p.Utils.loadTemplate(this.createNoRowsOverlayTemplate())},center:this.eRoot,dontFill:this.forPrint,fillHorizontalOnly:this.autoHeight,name:"eGridPanel"}),this.layout.addSizeChangeListener(this.setBodyAndHeaderHeights.bind(this)),this.layout.addSizeChangeListener(this.setLeftAndRightBounds.bind(this)),this.addScrollListener(),this.gridOptionsWrapper.isSuppressHorizontalScroll()&&(this.eBodyViewport.style.overflowX="hidden"),this.gridOptionsWrapper.isRowModelDefault()&&!this.gridOptionsWrapper.getRowData()&&this.showLoadingOverlay(),this.setPinnedContainersVisible(),this.setBodyAndHeaderHeights(),this.disableBrowserDragging(),this.addShortcutKeyListeners(),this.addMouseListeners(),this.addKeyboardEvents(),this.addBodyViewportListener(),this.addStopEditingWhenGridLosesFocus(),this.$scope&&this.addAngularApplyCheck(),this.onDisplayedColumnsWidthChanged()},t.prototype.addStopEditingWhenGridLosesFocus=function(){var e=this;this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()&&this.addDestroyableEventListener(this.eBody,"focusout",function(t){for(var o=t.relatedTarget,i=!1,n=o;p.Utils.exists(n)&&!i;){var r=!!e.gridOptionsWrapper.getDomData(n,b.PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER),s=e.eBody==n;i=r||s,n=n.parentNode}i||e.rowRenderer.stopEditing()})},t.prototype.addAngularApplyCheck=function(){var e=this,t=!1,o=function(){t||(t=!0,setTimeout(function(){t=!1,e.$scope.$apply()},0))};this.addDestroyableEventListener(this.eventService,v.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,o),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_VIRTUAL_COLUMNS_CHANGED,o)},t.prototype.disableBrowserDragging=function(){this.eRoot.addEventListener("dragstart",function(e){if(e.target instanceof HTMLImageElement)return e.preventDefault(),!1})},t.prototype.addEventListeners=function(){this.addDestroyableEventListener(this.eventService,v.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,this.onDisplayedColumnsWidthChanged.bind(this)),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_SCROLL_VISIBILITY_CHANGED,this.onScrollVisibilityChanged.bind(this)),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_PINNED_ROW_DATA_CHANGED,this.setBodyAndHeaderHeights.bind(this)),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_ROW_DATA_CHANGED,this.onRowDataChanged.bind(this)),this.addDestroyableEventListener(this.eventService,v.Events.EVENT_ROW_DATA_UPDATED,this.onRowDataChanged.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,u.GridOptionsWrapper.PROP_HEADER_HEIGHT,this.setBodyAndHeaderHeights.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,u.GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT,this.setBodyAndHeaderHeights.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,u.GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT,this.setBodyAndHeaderHeights.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,u.GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT,this.setBodyAndHeaderHeights.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,u.GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT,this.setBodyAndHeaderHeights.bind(this))},t.prototype.addDragListeners=function(){var e=this;if(!this.forPrint&&this.gridOptionsWrapper.isEnableRangeSelection()&&!p.Utils.missing(this.rangeController)){[this.ePinnedLeftColsContainer,this.ePinnedRightColsContainer,this.eBodyContainer,this.eFloatingTop,this.eFloatingBottom].forEach(function(t){var o={dragStartPixels:0,eElement:t,onDragStart:e.rangeController.onDragStart.bind(e.rangeController),onDragStop:e.rangeController.onDragStop.bind(e.rangeController),onDragging:e.rangeController.onDragging.bind(e.rangeController)};e.dragService.addDragSource(o),e.addDestroyFunc(function(){return e.dragService.removeDragSource(o)})})}},t.prototype.addMouseListeners=function(){var e=this;["click","mousedown","dblclick","contextmenu","mouseover","mouseout"].forEach(function(t){var o=e.processMouseEvent.bind(e,t);e.eAllCellContainers.forEach(function(i){return e.addDestroyableEventListener(i,t,o)})})},t.prototype.addKeyboardEvents=function(){var e=this;["keydown","keypress"].forEach(function(t){var o=e.processKeyboardEvent.bind(e,t);e.eAllCellContainers.forEach(function(i){e.addDestroyableEventListener(i,t,o)})})},t.prototype.addBodyViewportListener=function(){var e=this;if(!this.gridOptionsWrapper.isForPrint()){var t=function(t){var o=p.Utils.getTarget(t);o!==e.eBodyViewport&&o!==e.ePinnedLeftColsViewport&&o!==e.ePinnedRightColsViewport||(e.onContextMenu(t),e.preventDefaultOnContextMenu(t))};this.addDestroyableEventListener(this.eBodyViewport,"contextmenu",t),this.addDestroyableEventListener(this.ePinnedRightColsViewport,"contextmenu",t),this.addDestroyableEventListener(this.ePinnedLeftColsViewport,"contextmenu",t)}},t.prototype.getRowForEvent=function(e){for(var t=p.Utils.getTarget(e);t;){var o=this.gridOptionsWrapper.getDomData(t,L.RowComp.DOM_DATA_KEY_RENDERED_ROW);if(o)return o;t=t.parentElement}return null},t.prototype.processKeyboardEvent=function(e,t){var o=this.mouseEventService.getRenderedCellForEvent(t);if(o)switch(e){case"keydown":var n=[C.Constants.DIAGONAL_SCROLL_KEYS,C.Constants.HORIZONTAL_SCROLL_KEYS,C.Constants.VERTICAL_SCROLL_KEYS],r=i(n,t);r?this.handlePageScrollingKey(r.trappedKeyboardBindingGroup.id,r.trappedKeyboardBinding.id,t):o.onKeyDown(t);break;case"keypress":o.onKeyPress(t)}},t.prototype.handlePageScrollingKey=function(e,t,o){switch(e){case C.Constants.DIAGONAL_SCROLL_KEYS_ID:this.pageDiagonally(t);break;case C.Constants.VERTICAL_SCROLL_KEYS_ID:this.pageVertically(t);break;case C.Constants.HORIZONTAL_SCROLL_KEYS_ID:this.pageHorizontally(t)}o.preventDefault()},t.prototype.pageHorizontally=function(e){var t=this.columnController.getAllDisplayedColumns(),o=e===C.Constants.KEY_CTRL_LEFT_NAME?t[0]:t[t.length-1],i={type:I.HORIZONTAL,columnToScrollTo:o,columnToFocus:o};this.performScroll(i)},t.prototype.pageDiagonally=function(e){var t=this.getPrimaryScrollViewport().offsetHeight,o=e===C.Constants.KEY_PAGE_HOME_NAME?0:t,i=e===C.Constants.KEY_PAGE_HOME_NAME?0:this.paginationProxy.getPageLastRow(),n=this.paginationProxy.getRow(i),r=this.columnController.getAllDisplayedColumns(),s=e===C.Constants.KEY_PAGE_HOME_NAME?r[0]:r[r.length-1],a={focusedRowTopDelta:o,type:I.DIAGONAL,rowToScrollTo:n,columnToScrollTo:s};this.performScroll(a)},t.prototype.pageVertically=function(e){if(e===C.Constants.KEY_CTRL_UP_NAME)return void this.performScroll({rowToScrollTo:this.paginationProxy.getRow(0),focusedRowTopDelta:0,type:I.VERTICAL});if(e===C.Constants.KEY_CTRL_DOWN_NAME)return void this.performScroll({rowToScrollTo:this.paginationProxy.getRow(this.paginationProxy.getPageLastRow()),focusedRowTopDelta:this.getPrimaryScrollViewport().offsetHeight,type:I.VERTICAL});var t=this.focusedCellController.getFocusedCell(),o=this.paginationProxy.getRow(t.rowIndex),i=o.rowTop,n=i-this.getPrimaryScrollViewport().scrollTop-this.paginationProxy.getPixelOffset(),r=this.getPrimaryScrollViewport().scrollTop,s=this.paginationProxy.getRowIndexAtPixel(r+this.paginationProxy.getPixelOffset()),a=this.paginationProxy.getRow(s),l=this.getPrimaryScrollViewport().offsetHeight,p=this.paginationProxy.getCurrentPageHeight(),u=p[LOADING...]',e),o=this.gridOptionsWrapper.getLocaleTextFunc();return t.replace("[LOADING...]",o("loadingOoo","Loading..."))},t.prototype.createNoRowsOverlayTemplate=function(){var e=this.gridOptionsWrapper.getOverlayNoRowsTemplate(),t=this.createOverlayTemplate("no-rows",'[NO_ROWS_TO_SHOW]',e),o=this.gridOptionsWrapper.getLocaleTextFunc();return t.replace("[NO_ROWS_TO_SHOW]",o("noRowsToShow","No Rows To Show"))},t.prototype.ensureIndexVisible=function(e){if(!this.gridOptionsWrapper.isForPrint()){this.logger.log("ensureIndexVisible: "+e);var t=this.paginationProxy.getTotalRowCount();if("number"!=typeof e||e<0||e>=t)return void console.warn("invalid row index for ensureIndexVisible: "+e);this.paginationProxy.goToPageWithIndex(e);var o=this.paginationProxy.getRow(e),i=this.paginationProxy.getPixelOffset(),n=o.rowTop-i,r=n+o.rowHeight,s=this.getVerticalPixelRange(),a=s.top,l=s.bottom;this.isHorizontalScrollShowing()&&(l-=this.scrollWidth);var p=a>n,u=ln,u=i0?this.columnController.sizeColumnsToFit(o):void 0===e?setTimeout(function(){t.sizeColumnsToFit(100)},0):100===e?setTimeout(function(){t.sizeColumnsToFit(-1)},100):console.log("ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with zero width, maybe the grid is not visible yet on the screen?")},t.prototype.getBodyContainer=function(){return this.eBodyContainer},t.prototype.getDropTargetBodyContainers=function(){return this.forPrint?[this.eBodyContainer,this.eFloatingTopContainer,this.eFloatingBottomContainer]:[this.eBodyViewport,this.eFloatingTopViewport,this.eFloatingBottomViewport]},t.prototype.getBodyViewport=function(){return this.eBodyViewport},t.prototype.getDropTargetLeftContainers=function(){return this.forPrint?[]:[this.ePinnedLeftColsViewport,this.ePinnedLeftFloatingBottom,this.ePinnedLeftFloatingTop]},t.prototype.getDropTargetPinnedRightContainers=function(){return this.forPrint?[]:[this.ePinnedRightColsViewport,this.ePinnedRightFloatingBottom,this.ePinnedRightFloatingTop]},t.prototype.getHeaderContainer=function(){return this.eHeaderContainer},t.prototype.getHeaderOverlay=function(){return this.eHeaderOverlay},t.prototype.getRoot=function(){return this.eRoot},t.prototype.getPinnedLeftHeader=function(){return this.ePinnedLeftHeader},t.prototype.getPinnedRightHeader=function(){return this.ePinnedRightHeader},t.prototype.queryHtmlElement=function(e){return this.eRoot.querySelector(e)},t.prototype.loadTemplate=function(){var e;e=this.forPrint?'
    ':this.autoHeight?'
    ':'
    ',this.eRoot=p.Utils.loadTemplate(e)},t.prototype.findElements=function(){var e=this;if(this.forPrint){this.eHeaderContainer=this.queryHtmlElement(".ag-header-container"),this.eBodyContainer=this.queryHtmlElement(".ag-body-container"),this.eFloatingTopContainer=this.queryHtmlElement(".ag-floating-top-container"),this.eFloatingBottomContainer=this.queryHtmlElement(".ag-floating-bottom-container"),this.eAllCellContainers=[this.eBodyContainer,this.eFloatingTopContainer,this.eFloatingBottomContainer];var t={body:new A.RowContainerComponent({eContainer:this.eBodyContainer}),fullWidth:null,pinnedLeft:null,pinnedRight:null,floatingTop:new A.RowContainerComponent({eContainer:this.eFloatingTopContainer}),floatingTopPinnedLeft:null,floatingTopPinnedRight:null,floatingTopFullWidth:null,floatingBottom:new A.RowContainerComponent({eContainer:this.eFloatingBottomContainer}),floatingBottomPinnedLeft:null,floatingBottomPinnedRight:null,floatingBottomFullWith:null};this.rowContainerComponents=t,t.fullWidth=t.body,t.floatingBottomFullWith=t.floatingBottom,t.floatingTopFullWidth=t.floatingTop}else this.eBody=this.queryHtmlElement(".ag-body"),this.eBodyContainer=this.queryHtmlElement(".ag-body-container"),this.eBodyViewport=this.queryHtmlElement(".ag-body-viewport"),this.eBodyViewportWrapper=this.queryHtmlElement(".ag-body-viewport-wrapper"),this.eFullWidthCellContainer=this.queryHtmlElement(".ag-full-width-container"),this.eFullWidthCellViewport=this.queryHtmlElement(".ag-full-width-viewport"),this.ePinnedLeftColsContainer=this.queryHtmlElement(".ag-pinned-left-cols-container"),this.ePinnedRightColsContainer=this.queryHtmlElement(".ag-pinned-right-cols-container"),this.ePinnedLeftColsViewport=this.queryHtmlElement(".ag-pinned-left-cols-viewport"),this.ePinnedRightColsViewport=this.queryHtmlElement(".ag-pinned-right-cols-viewport"),this.ePinnedLeftHeader=this.queryHtmlElement(".ag-pinned-left-header"),this.ePinnedRightHeader=this.queryHtmlElement(".ag-pinned-right-header"),this.eHeader=this.queryHtmlElement(".ag-header"),this.eHeaderContainer=this.queryHtmlElement(".ag-header-container"),this.eHeaderOverlay=this.queryHtmlElement(".ag-header-overlay"),this.eHeaderViewport=this.queryHtmlElement(".ag-header-viewport"),this.eFloatingTop=this.queryHtmlElement(".ag-floating-top"),this.ePinnedLeftFloatingTop=this.queryHtmlElement(".ag-pinned-left-floating-top"),this.ePinnedRightFloatingTop=this.queryHtmlElement(".ag-pinned-right-floating-top"),this.eFloatingTopContainer=this.queryHtmlElement(".ag-floating-top-container"),this.eFloatingTopViewport=this.queryHtmlElement(".ag-floating-top-viewport"),this.eFloatingTopFullWidthCellContainer=this.queryHtmlElement(".ag-floating-top-full-width-container"),this.eFloatingBottom=this.queryHtmlElement(".ag-floating-bottom"),this.ePinnedLeftFloatingBottom=this.queryHtmlElement(".ag-pinned-left-floating-bottom"),this.ePinnedRightFloatingBottom=this.queryHtmlElement(".ag-pinned-right-floating-bottom"),this.eFloatingBottomContainer=this.queryHtmlElement(".ag-floating-bottom-container"),this.eFloatingBottomViewport=this.queryHtmlElement(".ag-floating-bottom-viewport"),this.eFloatingBottomFullWidthCellContainer=this.queryHtmlElement(".ag-floating-bottom-full-width-container"),this.eAllCellContainers=[this.ePinnedLeftColsContainer,this.ePinnedRightColsContainer,this.eBodyContainer,this.eFloatingTop,this.eFloatingBottom,this.eFullWidthCellContainer],this.rowContainerComponents={body:new A.RowContainerComponent({eContainer:this.eBodyContainer,eViewport:this.eBodyViewport}),fullWidth:new A.RowContainerComponent({eContainer:this.eFullWidthCellContainer,hideWhenNoChildren:!0,eViewport:this.eFullWidthCellViewport}),pinnedLeft:new A.RowContainerComponent({eContainer:this.ePinnedLeftColsContainer,eViewport:this.ePinnedLeftColsViewport}),pinnedRight:new A.RowContainerComponent({eContainer:this.ePinnedRightColsContainer,eViewport:this.ePinnedRightColsViewport}),floatingTop:new A.RowContainerComponent({eContainer:this.eFloatingTopContainer}),floatingTopPinnedLeft:new A.RowContainerComponent({eContainer:this.ePinnedLeftFloatingTop}),floatingTopPinnedRight:new A.RowContainerComponent({eContainer:this.ePinnedRightFloatingTop}),floatingTopFullWidth:new A.RowContainerComponent({eContainer:this.eFloatingTopFullWidthCellContainer,hideWhenNoChildren:!0}),floatingBottom:new A.RowContainerComponent({eContainer:this.eFloatingBottomContainer}),floatingBottomPinnedLeft:new A.RowContainerComponent({eContainer:this.ePinnedLeftFloatingBottom}),floatingBottomPinnedRight:new A.RowContainerComponent({eContainer:this.ePinnedRightFloatingBottom}),floatingBottomFullWith:new A.RowContainerComponent({eContainer:this.eFloatingBottomFullWidthCellContainer,hideWhenNoChildren:!0})},this.addMouseWheelEventListeners();p.Utils.iterateObject(this.rowContainerComponents,function(t,o){o&&e.context.wireBean(o)})},t.prototype.getRowContainers=function(){return this.rowContainerComponents},t.prototype.addMouseWheelEventListeners=function(){this.addDestroyableEventListener(this.eBodyViewport,"mousewheel",this.centerMouseWheelListener.bind(this)),this.addDestroyableEventListener(this.eBodyViewport,"DOMMouseScroll",this.centerMouseWheelListener.bind(this)),this.enableRtl?(this.addDestroyableEventListener(this.ePinnedRightColsViewport,"mousewheel",this.genericMouseWheelListener.bind(this)),this.addDestroyableEventListener(this.ePinnedRightColsViewport,"DOMMouseScroll",this.genericMouseWheelListener.bind(this))):(this.addDestroyableEventListener(this.ePinnedLeftColsViewport,"mousewheel",this.genericMouseWheelListener.bind(this)),this.addDestroyableEventListener(this.ePinnedLeftColsViewport,"DOMMouseScroll",this.genericMouseWheelListener.bind(this)))},t.prototype.getHeaderViewport=function(){return this.eHeaderViewport},t.prototype.centerMouseWheelListener=function(e){if(!this.isBodyVerticalScrollActive()){var t=this.enableRtl?this.ePinnedLeftColsViewport:this.ePinnedRightColsViewport;return this.generalMouseWheelListener(e,t)}},t.prototype.genericMouseWheelListener=function(e){var t;return t=this.isBodyVerticalScrollActive()?this.eBodyViewport:this.enableRtl?this.ePinnedLeftColsViewport:this.ePinnedRightColsViewport,this.generalMouseWheelListener(e,t)},t.prototype.generalMouseWheelListener=function(e,t){var o=p.Utils.normalizeWheel(e);if(Math.abs(o.pixelX)>Math.abs(o.pixelY)){var i=this.eBodyViewport.scrollLeft+o.pixelX;this.eBodyViewport.scrollLeft=i}else{var n=t.scrollTop+o.pixelY;t.scrollTop=n}return this.gridOptionsWrapper.isSuppressPreventDefaultOnMouseWheel()||e.preventDefault(),!1},t.prototype.onDisplayedColumnsChanged=function(){this.setPinnedContainersVisible(),this.setBodyAndHeaderHeights(),this.setLeftAndRightBounds()},t.prototype.onDisplayedColumnsWidthChanged=function(){this.setWidthsOfContainers(),this.setLeftAndRightBounds(),this.enableRtl&&this.horizontallyScrollHeaderCenterAndFloatingCenter()},t.prototype.onScrollVisibilityChanged=function(){this.setWidthsOfContainers()},t.prototype.setWidthsOfContainers=function(){var e=this.columnController.getBodyContainerWidth()+"px";this.eBodyContainer.style.width=e,this.forPrint||(this.eFloatingBottomContainer.style.width=e,this.eFloatingTopContainer.style.width=e,this.setPinnedLeftWidth(),this.setPinnedRightWidth())},t.prototype.setPinnedLeftWidth=function(){var e=this.scrollVisibleService.getPinnedLeftWidth()+"px",t=this.scrollVisibleService.getPinnedLeftWithScrollWidth()+"px";this.ePinnedLeftColsViewport.style.width=t,this.eBodyViewportWrapper.style.marginLeft=t,this.ePinnedLeftFloatingBottom.style.width=t,this.ePinnedLeftFloatingTop.style.width=t,this.ePinnedLeftColsContainer.style.width=e},t.prototype.setPinnedRightWidth=function(){var e=this.scrollVisibleService.getPinnedRightWidth()+"px",t=this.scrollVisibleService.getPinnedRightWithScrollWidth()+"px";this.ePinnedRightColsViewport.style.width=t,this.eBodyViewportWrapper.style.marginRight=t,this.ePinnedRightFloatingBottom.style.width=t,this.ePinnedRightFloatingTop.style.width=t,this.ePinnedRightColsContainer.style.width=e},t.prototype.setPinnedContainersVisible=function(){if(!this.forPrint){var e=!1,t=Math.max(this.eBodyViewport.scrollTop,this.ePinnedLeftColsViewport.scrollTop,this.ePinnedRightColsViewport.scrollTop),o=this.columnController.isPinningLeft();o!==this.pinningLeft&&(this.pinningLeft=o,this.ePinnedLeftHeader.style.display=o?"inline-block":"none",this.ePinnedLeftColsViewport.style.display=o?"inline":"none",e=!0);var i=this.columnController.isPinningRight();if(i!==this.pinningRight&&(this.pinningRight=i,this.ePinnedRightHeader.style.display=i?"inline-block":"none",this.ePinnedRightColsViewport.style.display=i?"inline":"none",e=!0),e){var n=this.isBodyVerticalScrollActive();this.eBodyViewport.style.overflowY=n?"auto":"hidden",n?this.setFakeScroll(this.eBodyContainer,0):this.eBodyViewport.scrollTop=0;this.getPrimaryScrollViewport().scrollTop=t,this.fakeVerticalScroll(t)}}},t.prototype.setBodyAndHeaderHeights=function(){if(!this.forPrint){var e=this.layout.getCentreHeight();if(e){var t,o,i,n=this.columnController.getHeaderRowCount(),r=0;this.columnController.isPivotMode()?(p.Utils.removeCssClass(this.eHeader,"ag-pivot-off"),p.Utils.addCssClass(this.eHeader,"ag-pivot-on"),r=0,o=this.gridOptionsWrapper.getPivotGroupHeaderHeight(),i=this.gridOptionsWrapper.getPivotHeaderHeight()):(p.Utils.removeCssClass(this.eHeader,"ag-pivot-on"),p.Utils.addCssClass(this.eHeader,"ag-pivot-off"),this.gridOptionsWrapper.isFloatingFilter()&&n++,r=this.gridOptionsWrapper.isFloatingFilter()?1:0,o=this.gridOptionsWrapper.getGroupHeaderHeight(),i=this.gridOptionsWrapper.getHeaderHeight());var s=1+r,a=n-s;if(t=r*this.gridOptionsWrapper.getFloatingFiltersHeight(),t+=a*o,t+=i,this.eHeader.style.height=t+"px",!this.autoHeight){var l=this.pinnedRowModel.getPinnedTopTotalHeight(),u=t+l,d=this.pinnedRowModel.getPinnedBottomTotalHeight(),c=e-d,h=e-t-d-l;if(this.eBody.style.top=u+"px",this.eBody.style.height=h+"px",this.eFloatingTop.style.top=t+"px",this.eFloatingTop.style.height=l+"px",this.eFloatingBottom.style.height=d+"px",this.eFloatingBottom.style.top=c+"px",this.ePinnedLeftColsViewport.style.height=h+"px",this.ePinnedRightColsViewport.style.height=h+"px",this.bodyHeight!==h){this.bodyHeight=h;var f={type:v.Events.EVENT_BODY_HEIGHT_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(f)}}}}},t.prototype.getBodyHeight=function(){return this.bodyHeight},t.prototype.setHorizontalScrollPosition=function(e){this.eBodyViewport.scrollLeft=e,this.nextScrollLeft!==e&&(this.nextScrollLeft=e,this.doHorizontalScroll())},t.prototype.scrollHorizontally=function(e){var t=this.eBodyViewport.scrollLeft;return this.setHorizontalScrollPosition(t+e),this.eBodyViewport.scrollLeft-t},t.prototype.addScrollListener=function(){var e=this;if(!this.forPrint){this.addDestroyableEventListener(this.eBodyViewport,"scroll",this.onBodyScroll.bind(this));var t=this.onVerticalScroll.bind(this,this.ePinnedLeftColsViewport),o=this.onVerticalScroll.bind(this,this.ePinnedRightColsViewport);if(this.enableRtl){this.addDestroyableEventListener(this.ePinnedLeftColsViewport,"scroll",t);var i=function(){return e.ePinnedRightColsViewport.scrollTop=0};this.addDestroyableEventListener(this.ePinnedRightColsViewport,"scroll",i)}else{this.addDestroyableEventListener(this.ePinnedRightColsViewport,"scroll",o);var n=function(){return e.ePinnedLeftColsViewport.scrollTop=0};this.addDestroyableEventListener(this.ePinnedLeftColsViewport,"scroll",n)}var r=function(){e.getPrimaryScrollViewport()!==e.eBodyViewport&&(e.eBodyViewport.scrollTop=0)};this.addDestroyableEventListener(this.eBodyViewport,"scroll",r),this.addIEPinFix(o,t)}},t.prototype.onBodyScroll=function(){this.onBodyHorizontalScroll(),this.onBodyVerticalScroll()},t.prototype.onBodyHorizontalScroll=function(){var e=this.eBodyViewport.scrollLeft;this.nextScrollLeft!==e&&(this.nextScrollLeft=e,this.useAnimationFrame?this.animationFrameService.schedule():this.doHorizontalScroll())},t.prototype.doHorizontalScroll=function(){this.scrollLeft=this.nextScrollLeft;var e={type:v.Events.EVENT_BODY_SCROLL,api:this.gridApi,columnApi:this.columnApi,direction:"horizontal",left:this.scrollLeft,top:this.scrollTop};this.eventService.dispatchEvent(e),this.horizontallyScrollHeaderCenterAndFloatingCenter(),this.setLeftAndRightBounds()},t.prototype.onBodyVerticalScroll=function(){this.isBodyVerticalScrollActive()&&this.onVerticalScroll(this.eBodyViewport)},t.prototype.onVerticalScroll=function(e){var t=e.scrollTop;this.useAnimationFrame?this.nextScrollTop!==t&&(this.nextScrollTop=t,this.animationFrameService.schedule()):t!==this.scrollTop&&(this.scrollTop=t,this.fakeVerticalScroll(t),this.redrawRowsAfterScroll())},t.prototype.executeFrame=function(){return this.scrollLeft!==this.nextScrollLeft?(this.doHorizontalScroll(),!0):this.scrollTop!==this.nextScrollTop?(this.scrollTop=this.nextScrollTop,this.fakeVerticalScroll(this.scrollTop),this.verticalRedrawNeeded=!0,!0):!!this.verticalRedrawNeeded&&(this.redrawRowsAfterScroll(),this.verticalRedrawNeeded=!1,!0)},t.prototype.redrawRowsAfterScroll=function(){var e={type:v.Events.EVENT_BODY_SCROLL,direction:"vertical",api:this.gridApi,columnApi:this.columnApi,left:this.scrollLeft,top:this.scrollTop};this.eventService.dispatchEvent(e),this.rowRenderer.redrawAfterScroll()},t.prototype.isBodyVerticalScrollActive=function(){var e=this.columnController.isPinningRight(),t=this.columnController.isPinningLeft();return this.enableRtl?!t:!e},t.prototype.addIEPinFix=function(e,t){var o=this,i=function(){o.columnController.isPinningRight()&&setTimeout(function(){o.enableRtl?t():e()},0)};this.addDestroyableEventListener(this.eventService,v.Events.EVENT_MODEL_UPDATED,i)},t.prototype.setLeftAndRightBounds=function(){if(!this.gridOptionsWrapper.isForPrint()){var e=this.eBodyViewport.clientWidth,t=this.getBodyViewportScrollLeft();this.columnController.setVirtualViewportPosition(e,t)}},t.prototype.getBodyViewportScrollLeft=function(){return this.forPrint?0:p.Utils.getScrollLeft(this.eBodyViewport,this.enableRtl)},t.prototype.setBodyViewportScrollLeft=function(e){this.forPrint||p.Utils.setScrollLeft(this.eBodyViewport,e,this.enableRtl)},t.prototype.horizontallyScrollHeaderCenterAndFloatingCenter=function(){var e=this.getBodyViewportScrollLeft(),t=this.enableRtl?e:-e;this.eHeaderContainer.style.left=t+"px",this.eFloatingBottomContainer.style.left=t+"px",this.eFloatingTopContainer.style.left=t+"px"},t.prototype.fakeVerticalScroll=function(e){if(this.enableRtl){this.columnController.isPinningLeft()&&this.setFakeScroll(this.eBodyContainer,e),this.setFakeScroll(this.ePinnedRightColsContainer,e)}else{this.columnController.isPinningRight()&&this.setFakeScroll(this.eBodyContainer,e),this.setFakeScroll(this.ePinnedLeftColsContainer,e)}this.setFakeScroll(this.eFullWidthCellContainer,e)},t.prototype.setFakeScroll=function(e,t){e.style.top=-t+"px"},t.prototype.addScrollEventListener=function(e){this.eBodyViewport.addEventListener("scroll",e)},t.prototype.removeScrollEventListener=function(e){this.eBodyViewport.removeEventListener("scroll",e)},s([g.Autowired("alignedGridsService"),a("design:type",D.AlignedGridsService)],t.prototype,"alignedGridsService",void 0),s([g.Autowired("gridOptionsWrapper"),a("design:type",u.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),s([g.Autowired("columnController"),a("design:type",d.ColumnController)],t.prototype,"columnController",void 0),s([g.Autowired("rowRenderer"),a("design:type",c.RowRenderer)],t.prototype,"rowRenderer",void 0),s([g.Autowired("pinnedRowModel"),a("design:type",T.PinnedRowModel)],t.prototype,"pinnedRowModel",void 0),s([g.Autowired("eventService"),a("design:type",y.EventService)],t.prototype,"eventService",void 0),s([g.Autowired("context"),a("design:type",g.Context)],t.prototype,"context",void 0),s([g.Autowired("animationFrameService"),a("design:type",F.AnimationFrameService)],t.prototype,"animationFrameService",void 0),s([g.Autowired("paginationProxy"),a("design:type",P.PaginationProxy)],t.prototype,"paginationProxy",void 0),s([g.Autowired("columnApi"),a("design:type",d.ColumnApi)],t.prototype,"columnApi",void 0),s([g.Autowired("gridApi"),a("design:type",N.GridApi)],t.prototype,"gridApi",void 0),s([g.Optional("rangeController"),a("design:type",Object)],t.prototype,"rangeController",void 0),s([g.Autowired("dragService"),a("design:type",m.DragService)],t.prototype,"dragService",void 0),s([g.Autowired("selectionController"),a("design:type",E.SelectionController)],t.prototype,"selectionController",void 0),s([g.Optional("clipboardService"),a("design:type",Object)],t.prototype,"clipboardService",void 0),s([g.Autowired("csvCreator"),a("design:type",w.CsvCreator)],t.prototype,"csvCreator",void 0),s([g.Autowired("mouseEventService"),a("design:type",R.MouseEventService)],t.prototype,"mouseEventService",void 0),s([g.Autowired("focusedCellController"),a("design:type",O.FocusedCellController)],t.prototype,"focusedCellController",void 0),s([g.Autowired("$scope"),a("design:type",Object)],t.prototype,"$scope",void 0),s([g.Autowired("scrollVisibleService"),a("design:type",_.ScrollVisibleService)],t.prototype,"scrollVisibleService",void 0),s([g.Optional("contextMenuFactory"),a("design:type",Object)],t.prototype,"contextMenuFactory",void 0),s([g.Autowired("frameworkFactory"),a("design:type",Object)],t.prototype,"frameworkFactory",void 0),s([l(0,g.Qualifier("loggerFactory")),a("design:type",Function),a("design:paramtypes",[f.LoggerFactory]),a("design:returntype",void 0)],t.prototype,"agWire",null),s([g.PreDestroy,a("design:type",Function),a("design:paramtypes",[]),a("design:returntype",void 0)],t.prototype,"destroy",null),s([g.PostConstruct,a("design:type",Function),a("design:paramtypes",[]),a("design:returntype",void 0)],t.prototype,"init",null),t=s([g.Bean("gridPanel")],t)}(S.BeanStub);t.GridPanel=M;var I;!function(e){e[e.HORIZONTAL=0]="HORIZONTAL",e[e.VERTICAL=1]="VERTICAL",e[e.DIAGONAL=2]="DIAGONAL"}(I||(I={}))},function(e,t,o){"use strict";function i(e){return r.bind(this,e)}function n(e){return r.bind(this,"[ref="+e+"]")}function r(e,t,o,i){if(null===e)return void console.error("ag-Grid: QuerySelector selector should not be null");if("number"==typeof i)return void console.error("ag-Grid: QuerySelector should be on an attribute");var n=l(t,t.constructor.name);n.querySelectors||(n.querySelectors=[]),n.querySelectors.push({attributeName:o,querySelector:e})}function s(e){return a.bind(this,e)}function a(e,t,o,i){if(null===e)return void console.error("ag-Grid: EventListener eventName should not be null");var n=l(t,t.constructor.name);n.listenerMethods||(n.listenerMethods=[]),n.listenerMethods.push({methodName:o,eventName:e})}function l(e,t){return e.__agComponentMetaData||(e.__agComponentMetaData={}),e.__agComponentMetaData[t]||(e.__agComponentMetaData[t]={}),e.__agComponentMetaData[t]}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySelector=i,t.RefSelector=n,t.Listener=s},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(4),n=o(2),r=o(1),s=function(){function e(){this.destroyFunctions=[]}return e.prototype.destroy=function(){this.destroyFunctions.forEach(function(e){return e()}),this.destroyFunctions.length=0},e.prototype.addEventListener=function(e,t){this.localEventService||(this.localEventService=new i.EventService),this.localEventService.addEventListener(e,t)},e.prototype.removeEventListener=function(e,t){this.localEventService&&this.localEventService.removeEventListener(e,t)},e.prototype.dispatchEventAsync=function(e){var t=this;setTimeout(function(){return t.dispatchEvent(e)},0)},e.prototype.dispatchEvent=function(e){this.localEventService&&this.localEventService.dispatchEvent(e)},e.prototype.addDestroyableEventListener=function(e,t,o){e instanceof HTMLElement?r._.addSafePassiveEventListener(e,t,o):(n.GridOptionsWrapper,e.addEventListener(t,o)),this.destroyFunctions.push(function(){e instanceof HTMLElement?e.removeEventListener(t,o):(n.GridOptionsWrapper,e.removeEventListener(t,o))})},e.prototype.addDestroyFunc=function(e){this.destroyFunctions.push(e)},e}();t.BeanStub=s},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(1),a=o(0),l=o(0),p=o(10),u=o(4),d=o(5),c=o(0),h=o(2),f=o(0),g=o(7),y=o(3),v=o(6),m=function(){function e(){}return e.prototype.setBeans=function(e){this.logger=e.create("SelectionController"),this.reset(),this.gridOptionsWrapper.isRowModelDefault()?this.eventService.addEventListener(d.Events.EVENT_ROW_DATA_CHANGED,this.reset.bind(this)):this.logger.log("dont know what to do here")},e.prototype.init=function(){this.groupSelectsChildren=this.gridOptionsWrapper.isGroupSelectsChildren(),this.eventService.addEventListener(d.Events.EVENT_ROW_SELECTED,this.onRowSelected.bind(this))},e.prototype.setLastSelectedNode=function(e){this.lastSelectedNode=e},e.prototype.getLastSelectedNode=function(){return this.lastSelectedNode},e.prototype.getSelectedNodes=function(){var e=[];return s.Utils.iterateObject(this.selectedNodes,function(t,o){o&&e.push(o)}),e},e.prototype.getSelectedRows=function(){var e=[];return s.Utils.iterateObject(this.selectedNodes,function(t,o){o&&e.push(o.data)}),e},e.prototype.removeGroupsFromSelection=function(){var e=this;s.Utils.iterateObject(this.selectedNodes,function(t,o){o&&o.group&&(e.selectedNodes[o.id]=void 0)})},e.prototype.updateGroupsFromChildrenSelections=function(){this.rowModel.getType()!==g.Constants.ROW_MODEL_TYPE_IN_MEMORY&&console.warn("updateGroupsFromChildrenSelections not available when rowModel is not normal"),this.rowModel.getTopLevelNodes().forEach(function(e){e.depthFirstSearch(function(e){e.group&&e.calculateSelectedFromChildren()})})},e.prototype.getNodeForIdIfSelected=function(e){return this.selectedNodes[e]},e.prototype.clearOtherNodes=function(e){var t=this,o={},i=0;return s.Utils.iterateObject(this.selectedNodes,function(n,r){if(r&&r.id!==e.id){var s=t.selectedNodes[r.id];i+=s.setSelectedParams({newValue:!1,clearSelection:!1,tailingNodeInSequence:!0}),t.groupSelectsChildren&&r.parent&&(o[r.parent.id]=r.parent)}}),s.Utils.iterateObject(o,function(e,t){t.calculateSelectedFromChildren()}),i},e.prototype.onRowSelected=function(e){var t=e.node;this.groupSelectsChildren&&t.group||(t.isSelected()?this.selectedNodes[t.id]=t:this.selectedNodes[t.id]=void 0)},e.prototype.syncInRowNode=function(e,t){this.syncInOldRowNode(e,t),this.syncInNewRowNode(e)},e.prototype.syncInOldRowNode=function(e,t){s.Utils.exists(t)&&e.id!==t.id&&(s.Utils.exists(this.selectedNodes[t.id])&&(this.selectedNodes[t.id]=t))},e.prototype.syncInNewRowNode=function(e){s.Utils.exists(this.selectedNodes[e.id])?(e.setSelectedInitialValue(!0),this.selectedNodes[e.id]=e):e.setSelectedInitialValue(!1)},e.prototype.reset=function(){this.logger.log("reset"),this.selectedNodes={},this.lastSelectedNode=null},e.prototype.getBestCostNodeSelection=function(){function e(t){for(var o=0,n=t.length;o=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(4),s=o(5),a=o(2),l=o(14),p=o(19),u=o(3),d=o(0),c=o(7),h=o(1),f=o(29),g=o(6),y=function(){function e(){this.childrenMapped={},this.selected=!1}return e.prototype.setData=function(e){var t=this.data;this.data=e,this.valueCache.onDataChanged();var o=this.createDataChangedEvent(e,t,!1);this.dispatchLocalEvent(o)},e.prototype.createDataChangedEvent=function(t,o,i){return{type:e.EVENT_DATA_CHANGED,node:this,oldData:o,newData:t,update:i}},e.prototype.createLocalRowEvent=function(e){return{type:e,node:this}},e.prototype.updateData=function(e){var t=this.data;this.data=e;var o=this.createDataChangedEvent(e,t,!0);this.dispatchLocalEvent(o)},e.prototype.getRowIndexString=function(){return this.rowPinned===c.Constants.PINNED_TOP?"t-"+this.rowIndex:this.rowPinned===c.Constants.PINNED_BOTTOM?"b-"+this.rowIndex:this.rowIndex.toString()},e.prototype.createDaemonNode=function(){var t=new e;return this.context.wireBean(t),t.id=this.id,t.data=this.data,t.daemon=!0,t.selected=this.selected,t.level=this.level,t},e.prototype.setDataAndId=function(e,t){var o=h.Utils.exists(this.id)?this.createDaemonNode():null,i=this.data;this.data=e,this.setId(t),this.selectionController.syncInRowNode(this,o);var n=this.createDataChangedEvent(e,i,!1);this.dispatchLocalEvent(n)},e.prototype.setId=function(e){var t=this.gridOptionsWrapper.getRowNodeIdFunc();t?this.data?this.id=t(this.data):this.id=void 0:this.id=e},e.prototype.isPixelInRange=function(e){return e>=this.rowTop&&e0){a?this.calculatedSelectedForAllGroupNodes():t&&this.parent&&this.parent.calculateSelectedFromChildrenBubbleUp();var d={type:s.Events.EVENT_SELECTION_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.mainEventService.dispatchEvent(d)}o&&this.selectionController.setLastSelectedNode(this)}return u},e.prototype.doRowRangeSelection=function(){var e=0,t=this.gridOptionsWrapper.isGroupSelectsChildren(),o=this.selectionController.getLastSelectedNode();this.rowModel.getNodesInRangeForSelection(o,this).forEach(function(o){o.group&&t||o.selectThisNode(!0)&&e++}),t&&this.calculatedSelectedForAllGroupNodes();var i={type:s.Events.EVENT_SELECTION_CHANGED,api:this.gridApi,columnApi:this.columnApi};return this.mainEventService.dispatchEvent(i),e},e.prototype.isParentOfNode=function(e){for(var t=this.parent;t;){if(t===e)return!0;t=t.parent}return!1},e.prototype.calculatedSelectedForAllGroupNodes=function(){this.rowModel.getTopLevelNodes().forEach(function(e){e.group&&(e.depthFirstSearch(function(e){e.group&&e.calculateSelectedFromChildren()}),e.calculateSelectedFromChildren())})},e.prototype.selectThisNode=function(t){if(this.selected===t)return!1;this.selected=t,this.eventService&&this.dispatchLocalEvent(this.createLocalRowEvent(e.EVENT_ROW_SELECTED));var o=this.createGlobalRowEvent(s.Events.EVENT_ROW_SELECTED);return this.mainEventService.dispatchEvent(o),!0},e.prototype.selectChildNodes=function(e,t){var o=t?this.childrenAfterFilter:this.childrenAfterGroup,i=0;if(!h.Utils.missing(o)){for(var n=0;n=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),s=o(2),a=o(33),l=o(19),p=o(3),u=o(86),d=o(87),c=o(0),h=o(4),f=o(5),g=o(49),y=o(6),v=function(){function e(){this.allFilters={},this.quickFilter=null,this.availableFilters={text:u.TextFilter,number:d.NumberFilter,date:g.DateFilter}}return t=e,e.prototype.init=function(){this.eventService.addEventListener(f.Events.EVENT_ROW_DATA_CHANGED,this.onNewRowsLoaded.bind(this)),this.eventService.addEventListener(f.Events.EVENT_NEW_COLUMNS_LOADED,this.onNewColumnsLoaded.bind(this)),this.quickFilter=this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText()),this.checkExternalFilter()},e.prototype.registerFilter=function(e,t){this.availableFilters[e]=t},e.prototype.setFilterModel=function(e){var t=this;if(e){var o=Object.keys(e);r.Utils.iterateObject(this.allFilters,function(i,n){r.Utils.removeFromArray(o,i);var s=e[i];t.setModelOnFilterWrapper(n.filter,s)}),r.Utils.iterateArray(o,function(o){var i=t.columnController.getPrimaryColumn(o);if(!i)return void console.warn("Warning ag-grid setFilterModel - no column found for colId "+o);var n=t.getOrCreateFilterWrapper(i);t.setModelOnFilterWrapper(n.filter,e[o])})}else r.Utils.iterateObject(this.allFilters,function(e,o){t.setModelOnFilterWrapper(o.filter,null)});this.onFilterChanged()},e.prototype.setModelOnFilterWrapper=function(e,t){if("function"!=typeof e.setModel)return void console.warn("Warning ag-grid - filter missing setModel method, which is needed for setFilterModel");e.setModel(t)},e.prototype.getFilterModel=function(){var e={};return r.Utils.iterateObject(this.allFilters,function(t,o){var i=o.filter;if("function"!=typeof i.getModel)return void console.warn("Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel");var n=i.getModel();r.Utils.exists(n)&&(e[t]=n)}),e},e.prototype.isAdvancedFilterPresent=function(){return this.advancedFilterPresent},e.prototype.setAdvancedFilterPresent=function(){var e=!1;r.Utils.iterateObject(this.allFilters,function(t,o){o.filter.isFilterActive()&&(e=!0)}),this.advancedFilterPresent=e},e.prototype.updateFilterFlagInColumns=function(){r.Utils.iterateObject(this.allFilters,function(e,t){var o=t.filter.isFilterActive();t.column.setFilterActive(o)})},e.prototype.isAnyFilterPresent=function(){return this.isQuickFilterPresent()||this.advancedFilterPresent||this.externalFilterPresent},e.prototype.doesFilterPass=function(e,t){for(var o=e.data,i=Object.keys(this.allFilters),n=0,r=i.length;n=0&&(i=!0)}}),i},e.prototype.doesRowPassQuickFilterCache=function(e){return e.quickFilterAggregateText||this.aggregateRowForQuickFilter(e),e.quickFilterAggregateText.indexOf(this.quickFilter)>=0},e.prototype.doesRowPassQuickFilter=function(e){return this.gridOptionsWrapper.isCacheQuickFilter()?this.doesRowPassQuickFilterCache(e):this.doesRowPassQuickFilterNoCache(e)},e.prototype.doesRowPassFilter=function(e,t){return!(this.isQuickFilterPresent()&&!this.doesRowPassQuickFilter(e))&&(!(this.externalFilterPresent&&!this.gridOptionsWrapper.doesExternalFilterPass(e))&&!(this.advancedFilterPresent&&!this.doesFilterPass(e,t)))},e.prototype.getQuickFilterTextForColumn=function(e,t){var o,i=this.valueService.getValue(e,t),n=e.getColDef();if(e.getColDef().getQuickFilterText){var r={value:i,node:t,data:t.data,column:e,colDef:n};o=e.getColDef().getQuickFilterText(r)}else o=i;return o&&""!==o?o.toString().toUpperCase():null},e.prototype.aggregateRowForQuickFilter=function(e){var o=this,i=[];this.columnController.getAllPrimaryColumns().forEach(function(t){var n=o.getQuickFilterTextForColumn(t,e);r.Utils.exists(n)&&i.push(n)}),e.quickFilterAggregateText=i.join(t.QUICK_FILTER_SEPARATOR)},e.prototype.onNewRowsLoaded=function(){r.Utils.iterateObject(this.allFilters,function(e,t){t.filter.onNewRowsLoaded&&t.filter.onNewRowsLoaded()}),this.updateFilterFlagInColumns(),this.setAdvancedFilterPresent()},e.prototype.createValueGetter=function(e){var t=this;return function(o){return t.valueService.getValue(e,o)}},e.prototype.getFilterComponent=function(e){return this.getOrCreateFilterWrapper(e).filter},e.prototype.getOrCreateFilterWrapper=function(e){var t=this.cachedFilter(e);return t||(t=this.createFilterWrapper(e),this.allFilters[e.getColId()]=t),t},e.prototype.cachedFilter=function(e){return this.allFilters[e.getColId()]},e.prototype.createFilterInstance=function(e){var t,o=e.getFilter(),i="function"==typeof o,n=r.Utils.missing(o)||"string"==typeof o;if(i)t=o,this.assertMethodHasNoParameters(t);else{if(!n)return console.error("ag-Grid: colDef.filter should be function or a string"),null;var s=o;t=this.getFilterFromCache(s)}var a=new t;return this.checkFilterHasAllMandatoryMethods(a,e),this.context.wireBean(a),a},e.prototype.checkFilterHasAllMandatoryMethods=function(e,t){["getGui","isFilterActive","doesFilterPass","getModel","setModel"].forEach(function(o){if(!e[o])throw"Filter for column "+t.getColId()+" is missing method "+o})},e.prototype.createParams=function(e){var t=this,o=this.onFilterChanged.bind(this),i={type:f.Events.EVENT_FILTER_MODIFIED,api:this.gridApi,columnApi:this.columnApi},n=function(){return t.eventService.dispatchEvent(i)},s=this.doesRowPassOtherFilters.bind(this,e.filter),a=e.column.getColDef(),l={column:e.column,colDef:a,rowModel:this.rowModel,filterChangedCallback:o,filterModifiedCallback:n,valueGetter:this.createValueGetter(e.column),doesRowPassOtherFilter:s,context:this.gridOptionsWrapper.getContext(),$scope:e.scope};return a.filterParams&&r.Utils.assign(l,a.filterParams),l},e.prototype.createFilterWrapper=function(e){var t={column:e,filter:null,scope:null,gui:null};return t.filter=this.createFilterInstance(e),this.initialiseFilterAndPutIntoGui(t),t},e.prototype.initialiseFilterAndPutIntoGui=function(e){this.gridOptionsWrapper.isAngularCompileFilters()&&(e.scope=this.$scope.$new(),e.scope.context=this.gridOptionsWrapper.getContext());var t=this.createParams(e);e.filter.init(t);var o=document.createElement("div");o.className="ag-filter";var i=e.filter.getGui();"string"==typeof i&&(i=r.Utils.loadTemplate(i)),o.appendChild(i),e.scope?e.gui=this.$compile(o)(e.scope)[0]:e.gui=o},e.prototype.getFilterFromCache=function(e){var t=this.enterprise?"set":"text",o=this.availableFilters[t];return r.Utils.missing(e)?o:(this.enterprise||"set"!==e||(console.warn("ag-Grid: Set filter is only available in Enterprise ag-Grid"),e="text"),this.availableFilters[e]?this.availableFilters[e]:(console.error("ag-Grid: Could not find filter type "+e),this.availableFilters[o]))},e.prototype.onNewColumnsLoaded=function(){this.destroy()},e.prototype.destroyFilter=function(e){var t=this.allFilters[e.getColId()];t&&(this.disposeFilterWrapper(t),this.onFilterChanged())},e.prototype.disposeFilterWrapper=function(e){e.filter.setModel(null),e.filter.destroy&&e.filter.destroy(),e.column.setFilterActive(!1),delete this.allFilters[e.column.getColId()]},e.prototype.destroy=function(){var e=this;r.Utils.iterateObject(this.allFilters,function(t,o){e.disposeFilterWrapper(o)})},e.prototype.assertMethodHasNoParameters=function(e){r.Utils.getFunctionParameters(e).length>0&&(console.warn("ag-grid: It looks like your filter is of the old type and expecting parameters in the constructor."),console.warn("ag-grid: From ag-grid 1.14, the constructor should take no parameters and init() used instead."))},e.QUICK_FILTER_SEPARATOR="\n",i([c.Autowired("$compile"),n("design:type",Object)],e.prototype,"$compile",void 0),i([c.Autowired("$scope"),n("design:type",Object)],e.prototype,"$scope",void 0),i([c.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([c.Autowired("gridCore"),n("design:type",Object)],e.prototype,"gridCore",void 0),i([c.Autowired("popupService"),n("design:type",a.PopupService)],e.prototype,"popupService",void 0),i([c.Autowired("valueService"),n("design:type",l.ValueService)],e.prototype,"valueService",void 0),i([c.Autowired("columnController"),n("design:type",p.ColumnController)],e.prototype,"columnController",void 0),i([c.Autowired("rowModel"),n("design:type",Object)],e.prototype,"rowModel",void 0),i([c.Autowired("eventService"),n("design:type",h.EventService)],e.prototype,"eventService",void 0),i([c.Autowired("enterprise"),n("design:type",Boolean)],e.prototype,"enterprise",void 0),i([c.Autowired("context"),n("design:type",c.Context)],e.prototype,"context",void 0),i([c.Autowired("columnApi"),n("design:type",p.ColumnApi)],e.prototype,"columnApi",void 0),i([c.Autowired("gridApi"),n("design:type",y.GridApi)],e.prototype,"gridApi",void 0),i([c.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),i([c.PreDestroy,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"destroy",null),e=t=i([c.Bean("filterManager")],e);var t}();t.FilterManager=v},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(10),a=o(0),l=o(0),p=function(){function e(){this.expressionToFunctionCache={}}return e.prototype.setBeans=function(e){this.logger=e.create("ExpressionService")},e.prototype.evaluate=function(e,t){if("function"==typeof e){return e(t)}if("string"==typeof e){var o=e;return this.evaluateExpression(o,t)}console.error("ag-Grid: value should be either a string or a function",e)},e.prototype.evaluateExpression=function(e,t){try{return this.createExpressionFunction(e)(t.value,t.context,t.oldValue,t.newValue,t.value,t.node,t.data,t.colDef,t.rowIndex,t.api,t.columnApi,t.getValue,t.column,t.columnGroup)}catch(t){return console.log("Processing of the expression failed"),console.log("Expression = "+e),console.log("Exception = "+t),null}},e.prototype.createExpressionFunction=function(e){if(this.expressionToFunctionCache[e])return this.expressionToFunctionCache[e];var t=this.createFunctionBody(e),o=new Function("x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup",t);return this.expressionToFunctionCache[e]=o,o},e.prototype.createFunctionBody=function(e){return e.indexOf("return")>=0?e:"return "+e+";"},i([r(0,l.Qualifier("loggerFactory")),n("design:type",Function),n("design:paramtypes",[s.LoggerFactory]),n("design:returntype",void 0)],e.prototype,"setBeans",null),e=i([a.Bean("expressionService")],e)}();t.ExpressionService=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},s=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(1),l=o(2),p=o(11),u=o(17),d=o(47),c=o(19),h=o(4),f=o(46),g=o(5),y=o(7),v=o(36),m=o(0),C=o(32),E=o(3),w=o(10),R=o(24),O=o(77),_=o(23),S=o(13),A=o(31),P=o(6),b=o(25),D=o(35),T=o(45),N=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rowCompsByIndex={},t.floatingTopRowComps=[],t.floatingBottomRowComps=[],t.refreshInProgress=!1,t}return i(t,e),t.prototype.agWire=function(e){this.logger=e.create("RowRenderer")},t.prototype.init=function(){this.forPrint=this.gridOptionsWrapper.isForPrint(),this.autoHeight=this.gridOptionsWrapper.isAutoHeight(),this.rowContainers=this.gridPanel.getRowContainers(),this.addDestroyableEventListener(this.eventService,g.Events.EVENT_PAGINATION_CHANGED,this.onPageLoaded.bind(this)),this.addDestroyableEventListener(this.eventService,g.Events.EVENT_PINNED_ROW_DATA_CHANGED,this.onPinnedRowDataChanged.bind(this)),this.addDestroyableEventListener(this.eventService,g.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.redrawAfterModelUpdate()},t.prototype.onPageLoaded=function(e){a.Utils.missing(e)&&(e={type:g.Events.EVENT_MODEL_UPDATED,api:this.gridApi,columnApi:this.columnApi,animate:!1,keepRenderedRows:!1,newData:!1,newPage:!1}),this.onModelUpdated(e)},t.prototype.getAllCellsForColumn=function(e){function t(t,i){var n=i.getCellForCol(e);n&&o.push(n)}var o=[];return a.Utils.iterateObject(this.rowCompsByIndex,t),a.Utils.iterateObject(this.floatingBottomRowComps,t),a.Utils.iterateObject(this.floatingTopRowComps,t),o},t.prototype.refreshFloatingRowComps=function(){this.refreshFloatingRows(this.floatingTopRowComps,this.pinnedRowModel.getPinnedTopRowData(),this.rowContainers.floatingTopPinnedLeft,this.rowContainers.floatingTopPinnedRight,this.rowContainers.floatingTop,this.rowContainers.floatingTopFullWidth),this.refreshFloatingRows(this.floatingBottomRowComps,this.pinnedRowModel.getPinnedBottomRowData(),this.rowContainers.floatingBottomPinnedLeft,this.rowContainers.floatingBottomPinnedRight,this.rowContainers.floatingBottom,this.rowContainers.floatingBottomFullWith)},t.prototype.refreshFloatingRows=function(e,t,o,i,n,r){var s=this;e.forEach(function(e){e.destroy()}),e.length=0;var l=this.columnController.getAllDisplayedColumns();a.Utils.missingOrEmpty(l)||(t&&t.forEach(function(t){var a=new f.RowComp(s.$scope,n,o,i,r,t,s.beans,!1,!1);a.init(),e.push(a)}),this.flushContainers(e))},t.prototype.onPinnedRowDataChanged=function(){this.redrawAfterModelUpdate()},t.prototype.onModelUpdated=function(e){var t={recycleRows:e.keepRenderedRows,animate:e.animate,newData:e.newData,newPage:e.newPage};this.redrawAfterModelUpdate(t)},t.prototype.getRenderedIndexesForRowNodes=function(e){var t=[];return a.Utils.missing(e)?t:(a.Utils.iterateObject(this.rowCompsByIndex,function(o,i){var n=i.getRowNode();e.indexOf(n)>=0&&t.push(o)}),t)},t.prototype.redrawRows=function(e){if(e&&0!=e.length){var t=this.getRenderedIndexesForRowNodes(e);this.removeRowComps(t),this.redrawAfterModelUpdate({recycleRows:!0})}},t.prototype.getCellToRestoreFocusToAfterRefresh=function(e){var t=e.suppressKeepFocus?null:this.focusedCellController.getFocusCellToUseAfterRefresh();if(a.Utils.missing(t))return null;var o=document.activeElement,i=this.gridOptionsWrapper.getDomData(o,v.CellComp.DOM_DATA_KEY_CELL_COMP);return a.Utils.missing(i)?null:t},t.prototype.redrawAfterModelUpdate=function(e){void 0===e&&(e={}),this.logger.log("refreshView"),this.getLockOnRefresh();var t=this.getCellToRestoreFocusToAfterRefresh(e);this.forPrint||this.sizeContainerToPageHeight(),this.scrollToTopIfNewData(e);var o=this.forPrint||this.autoHeight,i=!o&&e.recycleRows,n=!o&&e.animate,r=this.binRowComps(i);this.redraw(r,n),e.onlyBody||this.refreshFloatingRowComps(),this.restoreFocusedCell(t),this.releaseLockOnRefresh()},t.prototype.scrollToTopIfNewData=function(e){var t=e.newData||e.newPage,o=this.gridOptionsWrapper.isSuppressScrollOnNewData();t&&!o&&this.gridPanel.scrollToTop()},t.prototype.sizeContainerToPageHeight=function(){var e=this.paginationProxy.getCurrentPageHeight();0===e&&(e=1),this.rowContainers.body.setHeight(e),this.rowContainers.fullWidth.setHeight(e),this.rowContainers.pinnedLeft.setHeight(e),this.rowContainers.pinnedRight.setHeight(e)},t.prototype.getLockOnRefresh=function(){if(this.refreshInProgress)throw"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. Your code probably called a grid API method while the grid was in the render stage. To overcome this, put the API call into a timeout, eg instead of api.refreshView(), call setTimeout(function(){api.refreshView(),0}). To see what part of your code that caused the refresh check this stacktrace.";this.refreshInProgress=!0},t.prototype.releaseLockOnRefresh=function(){this.refreshInProgress=!1},t.prototype.restoreFocusedCell=function(e){e&&this.focusedCellController.setFocusedCell(e.rowIndex,e.column,e.floating,!0)},t.prototype.stopEditing=function(e){void 0===e&&(e=!1),this.forEachRowComp(function(t,o){o.stopEditing(e)})},t.prototype.forEachCellComp=function(e){a.Utils.iterateObject(this.rowCompsByIndex,function(t,o){o.forEachCellComp(e)})},t.prototype.forEachRowComp=function(e){a.Utils.iterateObject(this.rowCompsByIndex,e),a.Utils.iterateObject(this.floatingTopRowComps,e),a.Utils.iterateObject(this.floatingBottomRowComps,e)},t.prototype.addRenderedRowListener=function(e,t,o){this.rowCompsByIndex[t].addEventListener(e,o)},t.prototype.refreshCells=function(e){var t=this;void 0===e&&(e={});var o;a.Utils.exists(e.rowNodes)&&(o={top:{},bottom:{},normal:{}},e.rowNodes.forEach(function(e){e.rowPinned===y.Constants.PINNED_TOP?o.top[e.id]=!0:e.rowPinned===y.Constants.PINNED_BOTTOM?o.bottom[e.id]=!0:o.normal[e.id]=!0}));var i;a.Utils.exists(e.columns)&&(i={},e.columns.forEach(function(e){var o=t.columnController.getGridColumn(e);i[o.getId()]=!0}));var n=function(t){var n=t.getRowNode(),r=n.id,s=n.rowPinned;if(a.Utils.exists(o))if(s===y.Constants.PINNED_BOTTOM){if(!o.bottom[r])return}else if(s===y.Constants.PINNED_TOP){if(!o.top[r])return}else if(!o.normal[r])return;t.forEachCellComp(function(t){var o=t.getColumn().getId();i&&!i[o]||t.refreshCell({forceRefresh:e.force,volatile:e.volatile,newData:!1})})};a.Utils.iterateObject(this.rowCompsByIndex,function(e,t){n(t)}),this.floatingTopRowComps&&this.floatingTopRowComps.forEach(n),this.floatingBottomRowComps&&this.floatingBottomRowComps.forEach(n)},t.prototype.destroy=function(){e.prototype.destroy.call(this);var t=Object.keys(this.rowCompsByIndex);this.removeRowComps(t)},t.prototype.binRowComps=function(e){var t,o=this,i={};return e?(t=[],a.Utils.iterateObject(this.rowCompsByIndex,function(e,n){var r=n.getRowNode();a.Utils.exists(r.id)?(i[r.id]=n,delete o.rowCompsByIndex[e]):t.push(e)})):t=Object.keys(this.rowCompsByIndex),this.removeRowComps(t),i},t.prototype.removeRowComps=function(e){var t=this;e.forEach(function(e){t.rowCompsByIndex[e].destroy(),delete t.rowCompsByIndex[e]})},t.prototype.redrawAfterScroll=function(){this.getLockOnRefresh(),this.redraw(null,!1,!0),this.releaseLockOnRefresh()},t.prototype.removeRowCompsNotToDraw=function(e){var t={};e.forEach(function(e){return t[e]=!0});var o=Object.keys(this.rowCompsByIndex),i=a.Utils.filter(o,function(e){return!t[e]});this.removeRowComps(i)},t.prototype.calculateIndexesToDraw=function(){var e=this,t=a.Utils.createArrayOfNumbers(this.firstRenderedRow,this.lastRenderedRow);return a.Utils.iterateObject(this.rowCompsByIndex,function(o,i){var n=Number(o);(ne.lastRenderedRow)&&e.keepRowBecauseEditing(i)&&t.push(n)}),t.sort(function(e,t){return e-t}),t},t.prototype.redraw=function(e,t,o){var i=this;void 0===t&&(t=!1),void 0===o&&(o=!1),this.workOutFirstAndLastRowsToRender();var n=this.calculateIndexesToDraw();this.removeRowCompsNotToDraw(n);var r=[],s=[];n.forEach(function(n){var l=i.createOrUpdateRowComp(n,e,t,o);a.Utils.exists(l)&&(s.push(l),a.Utils.pushAll(r,l.getAndClearNextVMTurnFunctions()))}),this.flushContainers(s),a.Utils.executeNextVMTurn(r),o&&!this.gridOptionsWrapper.isSuppressAnimationFrame()?this.beans.taskQueue.addP2Task(this.destroyRowComps.bind(this,e,t)):this.destroyRowComps(e,t),this.checkAngularCompile()},t.prototype.flushContainers=function(e){a.Utils.iterateObject(this.rowContainers,function(e,t){t&&t.flushRowTemplates()}),e.forEach(function(e){return e.afterFlush()})},t.prototype.onDisplayedColumnsChanged=function(){var e=this.columnController.isPinningLeft(),t=this.columnController.isPinningRight();(this.pinningLeft!==e||t!==this.pinningRight)&&(this.pinningLeft=e,this.pinningRight=t,this.gridOptionsWrapper.isEmbedFullWidthRows()&&this.redrawFullWidthEmbeddedRows())},t.prototype.redrawFullWidthEmbeddedRows=function(){var e=[];this.forEachRowComp(function(t,o){if(o.isFullWidth()){var i=o.getRowNode().rowIndex;e.push(i.toString())}}),this.removeRowComps(e),this.redrawAfterScroll()},t.prototype.createOrUpdateRowComp=function(e,t,o,i){var n,r=this.rowCompsByIndex[e];if(r||(n=this.paginationProxy.getRow(e),a.Utils.exists(n)&&a.Utils.exists(t)&&t[n.id]&&(r=t[n.id],t[n.id]=null)),r)r.ensureDomOrder();else{if(n||(n=this.paginationProxy.getRow(e)),!a.Utils.exists(n))return;r=this.createRowComp(n,o,i)}return this.rowCompsByIndex[e]=r,r},t.prototype.destroyRowComps=function(e,t){var o=[];a.Utils.iterateObject(e,function(e,i){i&&(i.destroy(t),a.Utils.pushAll(o,i.getAndClearDelayedDestroyFunctions()))}),a.Utils.executeInAWhile(o)},t.prototype.checkAngularCompile=function(){var e=this;this.gridOptionsWrapper.isAngularCompileRows()&&setTimeout(function(){e.$scope.$apply()},0)},t.prototype.workOutFirstAndLastRowsToRender=function(){var e,t;if(this.paginationProxy.isRowsToRender()){var o=this.paginationProxy.getPageFirstRow(),i=this.paginationProxy.getPageLastRow();if(this.forPrint)e=o,t=i;else{var n=this.paginationProxy?this.paginationProxy.getPixelOffset():0,r=this.gridPanel.getVerticalPixelRange(),s=r.top,a=r.bottom,l=this.paginationProxy.getRowIndexAtPixel(s+n),p=this.paginationProxy.getRowIndexAtPixel(a+n),u=this.gridOptionsWrapper.getRowBuffer();l-=u,p+=u,li&&(p=i),e=l,t=p}}else e=0,t=-1;var d=e!==this.firstRenderedRow,c=t!==this.lastRenderedRow;if(d||c){this.firstRenderedRow=e,this.lastRenderedRow=t;var h={type:g.Events.EVENT_VIEWPORT_CHANGED,firstRow:e,lastRow:t,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(h)}},t.prototype.getFirstVirtualRenderedRow=function(){return this.firstRenderedRow},t.prototype.getLastVirtualRenderedRow=function(){return this.lastRenderedRow},t.prototype.keepRowBecauseEditing=function(e){var t=e.getRowNode(),o=this.focusedCellController.isRowNodeFocused(t),i=e.isEditing();return!(!o&&!i)&&!!this.paginationProxy.isRowPresent(t)},t.prototype.createRowComp=function(e,t,o){var i=o&&!this.gridOptionsWrapper.isSuppressAnimationFrame(),n=new f.RowComp(this.$scope,this.rowContainers.body,this.rowContainers.pinnedLeft,this.rowContainers.pinnedRight,this.rowContainers.fullWidth,e,this.beans,t,i);return n.init(),n},t.prototype.getRenderedNodes=function(){var e=this.rowCompsByIndex;return Object.keys(e).map(function(t){return e[t].getRowNode()})},t.prototype.navigateToNextCell=function(e,t,o,i,n){for(var r=new _.GridCell({rowIndex:o,floating:n,column:i}),s=r;;){if(s=this.cellNavigationService.getNextCellToFocus(t,s),a.Utils.missing(s))break;if(!this.gridOptionsWrapper.isGroupUseEntireRow())break;if(!this.paginationProxy.getRow(s.rowIndex).group)break}var l=this.gridOptionsWrapper.getNavigateToNextCellFunc();if(a.Utils.exists(l)){var p={key:t,previousCellDef:r,nextCellDef:s?s.getGridCellDef():null,event:e},u=l(p);s=a.Utils.exists(u)?new _.GridCell(u):null}if(s&&(a.Utils.missing(s.floating)&&this.gridPanel.ensureIndexVisible(s.rowIndex),s.column.isPinned()||this.gridPanel.ensureColumnVisible(s.column),this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter(),this.animationFrameService.flushAllFrames(),this.focusedCellController.setFocusedCell(s.rowIndex,s.column,s.floating,!0),this.rangeController)){var d=new _.GridCell({rowIndex:s.rowIndex,floating:s.floating,column:s.column});this.rangeController.setRangeToCell(d)}},t.prototype.startEditingCell=function(e,t,o){var i=this.getComponentForCell(e);i&&i.startRowOrCellEdit(t,o)},t.prototype.getComponentForCell=function(e){var t;switch(e.floating){case y.Constants.PINNED_TOP:t=this.floatingTopRowComps[e.rowIndex];break;case y.Constants.PINNED_BOTTOM:t=this.floatingBottomRowComps[e.rowIndex];break;default:t=this.rowCompsByIndex[e.rowIndex]}return t?t.getRenderedCellForColumn(e.column):null},t.prototype.onTabKeyDown=function(e,t){var o=t.shiftKey;this.moveToCellAfter(e,o)&&t.preventDefault()},t.prototype.tabToNextCell=function(e){var t=this.focusedCellController.getFocusedCell();if(a.Utils.missing(t))return!1;var o=this.getComponentForCell(t);return!a.Utils.missing(o)&&this.moveToCellAfter(o,e)},t.prototype.moveToCellAfter=function(e,t){var o=e.isEditing(),i=e.getGridCell(),n=this.findNextCellToFocusOn(i,t,o);return!!a.Utils.exists(n)&&(o?this.gridOptionsWrapper.isFullRowEdit()?this.moveEditToNextRow(e,n):this.moveEditToNextCell(e,n):n.focusCell(!0),!0)},t.prototype.moveEditToNextCell=function(e,t){e.stopEditing(),t.startEditingIfEnabled(null,null,!0),t.focusCell(!1)},t.prototype.moveEditToNextRow=function(e,t){var o=e.getGridCell(),i=t.getGridCell();if(o.rowIndex===i.rowIndex&&o.floating===i.floating)e.setFocusOutOnEditor(),t.setFocusInOnEditor();else{var n=e.getRenderedRow(),r=t.getRenderedRow();e.setFocusOutOnEditor(),n.stopEditing(),r.startRowEditing(),t.setFocusInOnEditor()}t.focusCell()},t.prototype.findNextCellToFocusOn=function(e,t,o){for(var i=e;;){i=this.cellNavigationService.getNextTabbedCell(i,t);var n=this.gridOptionsWrapper.getTabToNextCellFunc();if(a.Utils.exists(n)){var r={backwards:t,editing:o,previousCellDef:e.getGridCellDef(),nextCellDef:i?i.getGridCellDef():null},s=n(r);i=a.Utils.exists(s)?new _.GridCell(s):null}if(!i)return null;a.Utils.missing(i.floating)&&this.gridPanel.ensureIndexVisible(i.rowIndex),i.column.isPinned()||this.gridPanel.ensureColumnVisible(i.column),this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter(),this.animationFrameService.flushAllFrames();var l=this.getComponentForCell(i);if(!a.Utils.missing(l)&&((!o||l.isCellEditable())&&!l.isSuppressNavigable())){if(this.rangeController){var p=new _.GridCell({rowIndex:i.rowIndex,floating:i.floating,column:i.column});this.rangeController.setRangeToCell(p)}return l}}},n([m.Autowired("paginationProxy"),r("design:type",A.PaginationProxy)],t.prototype,"paginationProxy",void 0),n([m.Autowired("columnController"),r("design:type",E.ColumnController)],t.prototype,"columnController",void 0),n([m.Autowired("gridOptionsWrapper"),r("design:type",l.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([m.Autowired("gridCore"),r("design:type",C.GridCore)],t.prototype,"gridCore",void 0),n([m.Autowired("gridPanel"),r("design:type",p.GridPanel)],t.prototype,"gridPanel",void 0),n([m.Autowired("$scope"),r("design:type",Object)],t.prototype,"$scope",void 0),n([m.Autowired("expressionService"),r("design:type",u.ExpressionService)],t.prototype,"expressionService",void 0),n([m.Autowired("templateService"),r("design:type",d.TemplateService)],t.prototype,"templateService",void 0),n([m.Autowired("valueService"),r("design:type",c.ValueService)],t.prototype,"valueService",void 0),n([m.Autowired("eventService"),r("design:type",h.EventService)],t.prototype,"eventService",void 0),n([m.Autowired("pinnedRowModel"),r("design:type",b.PinnedRowModel)],t.prototype,"pinnedRowModel",void 0),n([m.Autowired("context"),r("design:type",m.Context)],t.prototype,"context",void 0),n([m.Autowired("loggerFactory"),r("design:type",w.LoggerFactory)],t.prototype,"loggerFactory",void 0),n([m.Autowired("focusedCellController"),r("design:type",R.FocusedCellController)],t.prototype,"focusedCellController",void 0),n([m.Autowired("cellNavigationService"),r("design:type",O.CellNavigationService)],t.prototype,"cellNavigationService",void 0),n([m.Autowired("columnApi"),r("design:type",E.ColumnApi)],t.prototype,"columnApi",void 0),n([m.Autowired("gridApi"),r("design:type",P.GridApi)],t.prototype,"gridApi",void 0),n([m.Autowired("beans"),r("design:type",D.Beans)],t.prototype,"beans",void 0),n([m.Autowired("animationFrameService"),r("design:type",T.AnimationFrameService)],t.prototype,"animationFrameService",void 0),n([m.Optional("rangeController"),r("design:type",Object)],t.prototype,"rangeController",void 0),n([s(0,m.Qualifier("loggerFactory")),r("design:type",Function),r("design:paramtypes",[w.LoggerFactory]),r("design:returntype",void 0)],t.prototype,"agWire",null),n([m.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"init",null),n([m.PreDestroy,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"destroy",null),t=n([m.Bean("rowRenderer")],t)}(S.BeanStub);t.RowRenderer=N},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),s=o(17),a=o(3),l=o(0),p=o(1),u=o(5),d=o(4),c=o(29),h=function(){function e(){this.initialised=!1}return e.prototype.init=function(){this.cellExpressions=this.gridOptionsWrapper.isEnableCellExpressions(),this.initialised=!0},e.prototype.getValue=function(e,t,o){void 0===o&&(o=!1),this.initialised||this.init();var i,n=e.getColDef(),r=n.field,s=e.getId(),a=t.data,l=t.groupData&&void 0!==t.groupData[s],u=!o&&t.aggData&&void 0!==t.aggData[s];if(i=l?t.groupData[s]:u?t.aggData[s]:n.valueGetter?this.executeValueGetter(n.valueGetter,a,e,t):r&&a?p._.getValueUsingField(a,r,e.isFieldContainsDots()):void 0,this.cellExpressions&&"string"==typeof i&&0===i.indexOf("=")){var d=i.substring(1);i=this.executeValueGetter(d,a,e,t)}return i},e.prototype.setValue=function(e,t,o){var i=this.columnController.getPrimaryColumn(t);if(e&&i){var n=e.data;p._.missing(n)&&(e.data={});var r=i.getColDef(),s=r.field,a=r.newValueHandler,l=r.valueSetter;if(p._.missing(s)&&p._.missing(a)&&p._.missing(l))return void console.warn("ag-Grid: you need either field or valueSetter set on colDef for editing to work");var d={node:e,data:e.data,oldValue:this.getValue(i,e),newValue:o,colDef:i.getColDef(),column:i,api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext()};d.newValue=o;var c;if(c=p._.exists(a)?a(d):p._.exists(l)?this.expressionService.evaluate(l,d):this.setValueUsingField(n,s,o,i.isFieldContainsDots()),void 0===c&&(c=!0),c){e.resetQuickFilterAggregateText(),this.valueCache.onDataChanged(),d.newValue=this.getValue(i,e),"function"==typeof i.getColDef().onCellValueChanged&&i.getColDef().onCellValueChanged(d);var h={type:u.Events.EVENT_CELL_VALUE_CHANGED,event:null,rowIndex:e.rowIndex,rowPinned:e.rowPinned,column:d.column,api:d.api,colDef:d.colDef,columnApi:d.columnApi,context:d.context,data:e.data,node:e,oldValue:d.oldValue,newValue:d.newValue,value:d.newValue};this.eventService.dispatchEvent(h)}}},e.prototype.setValueUsingField=function(e,t,o,i){if(i)for(var n=t.split("."),r=e;n.length>0&&r;){var s=n.shift();0===n.length?r[s]=o:r=r[s]}else e[t]=o;return!0},e.prototype.executeValueGetter=function(e,t,o,i){var n=o.getId(),r=this.valueCache.getValue(i,n);if(void 0!==r)return r;var s={data:t,node:i,column:o,colDef:o.getColDef(),api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext(),getValue:this.getValueCallback.bind(this,i)},a=this.expressionService.evaluate(e,s);return this.valueCache.setValue(i,n,a),a},e.prototype.getValueCallback=function(e,t){var o=this.columnController.getPrimaryColumn(t);return o?this.getValue(o,e):null},i([l.Autowired("gridOptionsWrapper"),n("design:type",r.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([l.Autowired("expressionService"),n("design:type",s.ExpressionService)],e.prototype,"expressionService",void 0),i([l.Autowired("columnController"),n("design:type",a.ColumnController)],e.prototype,"columnController",void 0),i([l.Autowired("eventService"),n("design:type",d.EventService)],e.prototype,"eventService",void 0),i([l.Autowired("valueCache"),n("design:type",c.ValueCache)],e.prototype,"valueCache",void 0),i([l.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=i([l.Bean("valueService")],e)}();t.ValueService=h},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(10),a=o(0),l=o(1),p=o(2),u=o(43),d=o(3),c=o(56);!function(e){e[e.ToolPanel=0]="ToolPanel",e[e.HeaderCell=1]="HeaderCell"}(t.DragSourceType||(t.DragSourceType={}));var h;!function(e){e[e.Up=0]="Up",e[e.Down=1]="Down"}(h=t.VDirection||(t.VDirection={}));var f;!function(e){e[e.Left=0]="Left",e[e.Right=1]="Right"}(f=t.HDirection||(t.HDirection={}));var g=function(){function e(){this.dragSourceAndParamsList=[],this.dropTargets=[]}return t=e,e.prototype.init=function(){this.ePinnedIcon=l.Utils.createIcon("columnMovePin",this.gridOptionsWrapper,null),this.ePlusIcon=l.Utils.createIcon("columnMoveAdd",this.gridOptionsWrapper,null),this.eHiddenIcon=l.Utils.createIcon("columnMoveHide",this.gridOptionsWrapper,null),this.eMoveIcon=l.Utils.createIcon("columnMoveMove",this.gridOptionsWrapper,null),this.eLeftIcon=l.Utils.createIcon("columnMoveLeft",this.gridOptionsWrapper,null),this.eRightIcon=l.Utils.createIcon("columnMoveRight",this.gridOptionsWrapper,null),this.eGroupIcon=l.Utils.createIcon("columnMoveGroup",this.gridOptionsWrapper,null),this.eAggregateIcon=l.Utils.createIcon("columnMoveValue",this.gridOptionsWrapper,null),this.ePivotIcon=l.Utils.createIcon("columnMovePivot",this.gridOptionsWrapper,null),this.eDropNotAllowedIcon=l.Utils.createIcon("dropNotAllowed",this.gridOptionsWrapper,null)},e.prototype.setBeans=function(e){this.logger=e.create("OldToolPanelDragAndDropService")},e.prototype.addDragSource=function(e,t){void 0===t&&(t=!1);var o={eElement:e.eElement,onDragStart:this.onDragStart.bind(this,e),onDragStop:this.onDragStop.bind(this),onDragging:this.onDragging.bind(this)};this.dragSourceAndParamsList.push({params:o,dragSource:e}),this.dragService.addDragSource(o,t)},e.prototype.removeDragSource=function(e){var t=l.Utils.find(this.dragSourceAndParamsList,function(t){return t.dragSource===e});t&&(this.dragService.removeDragSource(t.params),l.Utils.removeFromArray(this.dragSourceAndParamsList,t))},e.prototype.destroy=function(){var e=this;this.dragSourceAndParamsList.forEach(function(t){e.dragService.removeDragSource(t.params)}),this.dragSourceAndParamsList.length=0},e.prototype.nudge=function(){this.dragging&&this.onDragging(this.eventLastTime,!0)},e.prototype.onDragStart=function(e,t){this.dragging=!0,this.dragSource=e,this.eventLastTime=t,this.dragItem=this.dragSource.dragItemCallback(),this.dragItem.columns.forEach(function(e){return e.setMoving(!0)}),this.lastDropTarget=this.dragSource.dragSourceDropTarget,this.createGhost()},e.prototype.onDragStop=function(e){if(this.eventLastTime=null,this.dragging=!1,this.dragItem.columns.forEach(function(e){return e.setMoving(!1)}),this.lastDropTarget&&this.lastDropTarget.onDragStop){var t=this.createDropTargetEvent(this.lastDropTarget,e,null,null,!1);this.lastDropTarget.onDragStop(t)}this.lastDropTarget=null,this.dragItem=null,this.removeGhost()},e.prototype.onDragging=function(e,t){var o=this.workOutHDirection(e),i=this.workOutVDirection(e);this.eventLastTime=e,this.positionGhost(e);var n=l.Utils.find(this.dropTargets,this.isMouseOnDropTarget.bind(this,e));if(n!==this.lastDropTarget)this.leaveLastTargetIfExists(e,o,i,t),this.enterDragTargetIfExists(n,e,o,i,t),this.lastDropTarget=n;else if(n){var r=this.createDropTargetEvent(n,e,o,i,t);n.onDragging(r)}},e.prototype.enterDragTargetIfExists=function(e,t,o,i,n){if(e){var r=this.createDropTargetEvent(e,t,o,i,n);e.onDragEnter(r),this.setGhostIcon(e.getIconName?e.getIconName():null)}},e.prototype.leaveLastTargetIfExists=function(e,t,o,i){if(this.lastDropTarget){var n=this.createDropTargetEvent(this.lastDropTarget,e,t,o,i);this.lastDropTarget.onDragLeave(n),this.setGhostIcon(null)}},e.prototype.getAllContainersFromDropTarget=function(e){var t=[e.getContainer()],o=e.getSecondaryContainers?e.getSecondaryContainers():null;return o&&(t=t.concat(o)),t},e.prototype.isMouseOnDropTarget=function(e,t){var o=this.getAllContainersFromDropTarget(t),i=!1;return o.forEach(function(t){if(t){var o=t.getBoundingClientRect();if(0!==o.width&&0!==o.height){var n=e.clientX>=o.left&&e.clientX<=o.right,r=e.clientY>=o.top&&e.clientY<=o.bottom;n&&r&&(i=!0)}}}),i},e.prototype.addDropTarget=function(e){this.dropTargets.push(e)},e.prototype.workOutHDirection=function(e){return this.eventLastTime.clientX>e.clientX?f.Left:this.eventLastTime.clientXe.clientY?h.Up:this.eventLastTime.clientY0&&s+this.eGhost.clientWidth>i+u&&(s=i+u-this.eGhost.clientWidth),s<0&&(s=0),n>0&&r+this.eGhost.clientHeight>n+p&&(r=n+p-this.eGhost.clientHeight),r<0&&(r=0),this.eGhost.style.left=s+"px",this.eGhost.style.top=r+"px"},e.prototype.removeGhost=function(){this.eGhost&&this.eGhostParent&&this.eGhostParent.removeChild(this.eGhost),this.eGhost=null},e.prototype.createGhost=function(){this.eGhost=l.Utils.loadTemplate(t.GHOST_TEMPLATE),this.eGhost.classList.add(this.environment.getTheme()),this.eGhostIcon=this.eGhost.querySelector(".ag-dnd-ghost-icon"),this.setGhostIcon(null),this.eGhost.querySelector(".ag-dnd-ghost-label").innerHTML=this.dragSource.dragItemName,this.eGhost.style.height="25px",this.eGhost.style.top="20px",this.eGhost.style.left="20px";var e=this.gridOptionsWrapper.getDocument();this.eGhostParent=e.querySelector("body"),this.eGhostParent?this.eGhostParent.appendChild(this.eGhost):console.warn("ag-Grid: could not find document body, it is needed for dragging columns")},e.prototype.setGhostIcon=function(e,o){void 0===o&&(o=!1),l.Utils.removeAllChildren(this.eGhostIcon);var i;switch(e){case t.ICON_ADD:i=this.ePlusIcon;break;case t.ICON_PINNED:i=this.ePinnedIcon;break;case t.ICON_MOVE:i=this.eMoveIcon;break;case t.ICON_LEFT:i=this.eLeftIcon;break;case t.ICON_RIGHT:i=this.eRightIcon;break;case t.ICON_GROUP:i=this.eGroupIcon;break;case t.ICON_AGGREGATE:i=this.eAggregateIcon;break;case t.ICON_PIVOT:i=this.ePivotIcon;break;case t.ICON_NOT_ALLOWED:i=this.eDropNotAllowedIcon;break;default:i=this.eHiddenIcon}this.eGhostIcon.appendChild(i),l.Utils.addOrRemoveCssClass(this.eGhostIcon,"ag-shake-left-to-right",o)},e.ICON_PINNED="pinned",e.ICON_ADD="add",e.ICON_MOVE="move",e.ICON_LEFT="left",e.ICON_RIGHT="right",e.ICON_GROUP="group",e.ICON_AGGREGATE="aggregate",e.ICON_PIVOT="pivot",e.ICON_NOT_ALLOWED="notAllowed",e.GHOST_TEMPLATE='
    ',i([a.Autowired("gridOptionsWrapper"),n("design:type",p.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([a.Autowired("dragService"),n("design:type",u.DragService)],e.prototype,"dragService",void 0),i([a.Autowired("environment"),n("design:type",c.Environment)],e.prototype,"environment",void 0),i([a.Autowired("columnController"),n("design:type",d.ColumnController)],e.prototype,"columnController",void 0),i([a.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),i([r(0,a.Qualifier("loggerFactory")),n("design:type",Function),n("design:paramtypes",[s.LoggerFactory]),n("design:returntype",void 0)],e.prototype,"setBeans",null),i([a.PreDestroy,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"destroy",null),e=t=i([a.Bean("dragAndDropService")],e);var t}();t.DragAndDropService=g},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(9),s=o(0),a=o(2),l=o(3),p=o(4),u=o(5),d=o(0),c=o(1),h=o(6),f=function(){function e(){}return t=e,e.prototype.progressSort=function(e,t){var o=this.getNextSortDirection(e);this.setSortForColumn(e,o,t)},e.prototype.setSortForColumn=function(e,t,o){if(t!==r.Column.SORT_ASC&&t!==r.Column.SORT_DESC&&(t=null),e.setSort(t),e.getSort()){var i=Number((new Date).valueOf());e.setSortedAt(i)}else e.setSortedAt(null);o&&!this.gridOptionsWrapper.isSuppressMultiSort()||this.clearSortBarThisColumn(e),this.dispatchSortChangedEvents()},e.prototype.onSortChanged=function(){this.dispatchSortChangedEvents()},e.prototype.dispatchSortChangedEvents=function(){var e={type:u.Events.EVENT_SORT_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(e)},e.prototype.clearSortBarThisColumn=function(e){this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function(t){t!==e&&t.setSort(null)})},e.prototype.getNextSortDirection=function(e){var o;if(o=e.getColDef().sortingOrder?e.getColDef().sortingOrder:this.gridOptionsWrapper.getSortingOrder()?this.gridOptionsWrapper.getSortingOrder():t.DEFAULT_SORTING_ORDER,!Array.isArray(o)||o.length<=0)return void console.warn("ag-grid: sortingOrder must be an array with at least one element, currently it's "+o);var i,n=o.indexOf(e.getSort()),r=n<0,s=n==o.length-1;return i=r||s?o[0]:o[n+1],t.DEFAULT_SORTING_ORDER.indexOf(i)<0?(console.warn("ag-grid: invalid sort type "+i),null):i},e.prototype.getSortModel=function(){var e=this.getColumnsWithSortingOrdered();return c.Utils.map(e,function(e){return{colId:e.getColId(),sort:e.getSort()}})},e.prototype.setSortModel=function(e){var t=this;if(!this.gridOptionsWrapper.isEnableSorting())return void console.warn("ag-grid: You are setting the sort model on a grid that does not have sorting enabled");var o=e&&e.length>0;this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function(i){var n=null,r=-1;if(o&&!i.getColDef().suppressSorting)for(var s=0;s=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(9),s=o(4),a=o(0),l=o(2),p=o(3),u=o(6),d=function(){function e(e,t,o){this.displayedChildren=[],this.localEventService=new s.EventService,this.groupId=t,this.instanceId=o,this.originalColumnGroup=e}return e.createUniqueId=function(e,t){return e+"_"+t},e.prototype.reset=function(){this.parent=null,this.children=null,this.displayedChildren=null},e.prototype.getParent=function(){return this.parent},e.prototype.setParent=function(e){this.parent=e},e.prototype.getUniqueId=function(){return e.createUniqueId(this.groupId,this.instanceId)},e.prototype.isEmptyGroup=function(){return 0===this.displayedChildren.length},e.prototype.checkLeft=function(){if(this.displayedChildren.forEach(function(t){t instanceof e&&t.checkLeft()}),this.displayedChildren.length>0)if(this.gridOptionsWrapper.isEnableRtl()){var t=this.displayedChildren[this.displayedChildren.length-1],o=t.getLeft();this.setLeft(o)}else{var i=this.displayedChildren[0].getLeft();this.setLeft(i)}else this.setLeft(null)},e.prototype.getLeft=function(){return this.left},e.prototype.getOldLeft=function(){return this.oldLeft},e.prototype.setLeft=function(t){this.oldLeft=t,this.left!==t&&(this.left=t,this.localEventService.dispatchEvent(this.createAgEvent(e.EVENT_LEFT_CHANGED)))},e.prototype.createAgEvent=function(e){return{type:e}},e.prototype.addEventListener=function(e,t){this.localEventService.addEventListener(e,t)},e.prototype.removeEventListener=function(e,t){this.localEventService.removeEventListener(e,t)},e.prototype.getGroupId=function(){return this.groupId},e.prototype.getInstanceId=function(){return this.instanceId},e.prototype.isChildInThisGroupDeepSearch=function(t){var o=!1;return this.children.forEach(function(i){t===i&&(o=!0),i instanceof e&&i.isChildInThisGroupDeepSearch(t)&&(o=!0)}),o},e.prototype.getActualWidth=function(){var e=0;return this.displayedChildren&&this.displayedChildren.forEach(function(t){e+=t.getActualWidth()}),e},e.prototype.isResizable=function(){if(!this.displayedChildren)return!1;var e=!1;return this.displayedChildren.forEach(function(t){t.isResizable()&&(e=!0)}),e},e.prototype.getMinWidth=function(){var e=0;return this.displayedChildren.forEach(function(t){e+=t.getMinWidth()}),e},e.prototype.addChild=function(e){this.children||(this.children=[]),this.children.push(e)},e.prototype.getDisplayedChildren=function(){return this.displayedChildren},e.prototype.getLeafColumns=function(){var e=[];return this.addLeafColumns(e),e},e.prototype.getDisplayedLeafColumns=function(){var e=[];return this.addDisplayedLeafColumns(e),e},e.prototype.getDefinition=function(){return this.originalColumnGroup.getColGroupDef()},e.prototype.getColGroupDef=function(){return this.originalColumnGroup.getColGroupDef()},e.prototype.isPadding=function(){return this.originalColumnGroup.isPadding()},e.prototype.isExpandable=function(){return this.originalColumnGroup.isExpandable()},e.prototype.isExpanded=function(){return this.originalColumnGroup.isExpanded()},e.prototype.setExpanded=function(e){this.originalColumnGroup.setExpanded(e)},e.prototype.addDisplayedLeafColumns=function(t){this.displayedChildren.forEach(function(o){o instanceof r.Column?t.push(o):o instanceof e&&o.addDisplayedLeafColumns(t)})},e.prototype.addLeafColumns=function(t){this.children.forEach(function(o){o instanceof r.Column?t.push(o):o instanceof e&&o.addLeafColumns(t)})},e.prototype.getChildren=function(){return this.children},e.prototype.getColumnGroupShow=function(){return this.originalColumnGroup.getColumnGroupShow()},e.prototype.getOriginalColumnGroup=function(){return this.originalColumnGroup},e.prototype.calculateDisplayedColumns=function(){var t=this;this.displayedChildren=[],this.originalColumnGroup.isExpandable()?this.children.forEach(function(o){switch(o.getColumnGroupShow()){case e.HEADER_GROUP_SHOW_OPEN:t.originalColumnGroup.isExpanded()&&t.displayedChildren.push(o);break;case e.HEADER_GROUP_SHOW_CLOSED:t.originalColumnGroup.isExpanded()||t.displayedChildren.push(o);break;default:t.displayedChildren.push(o)}}):this.displayedChildren=this.children,this.localEventService.dispatchEvent(this.createAgEvent(e.EVENT_DISPLAYED_CHILDREN_CHANGED))},e.HEADER_GROUP_SHOW_OPEN="open",e.HEADER_GROUP_SHOW_CLOSED="closed",e.EVENT_LEFT_CHANGED="leftChanged",e.EVENT_DISPLAYED_CHILDREN_CHANGED="leftChanged",i([a.Autowired("gridOptionsWrapper"),n("design:type",l.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([a.Autowired("columnApi"),n("design:type",p.ColumnApi)],e.prototype,"columnApi",void 0),i([a.Autowired("gridApi"),n("design:type",u.GridApi)],e.prototype,"gridApi",void 0),e}();t.ColumnGroup=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(1),n=o(65),r=function(){function e(e){this.rowIndex=e.rowIndex,this.column=e.column,this.floating=i.Utils.makeNull(e.floating)}return e.prototype.getGridCellDef=function(){return{rowIndex:this.rowIndex,column:this.column,floating:this.floating}},e.prototype.getGridRow=function(){return new n.GridRow(this.rowIndex,this.floating)},e.prototype.toString=function(){return"rowIndex = "+this.rowIndex+", floating = "+this.floating+", column = "+(this.column?this.column.getId():null)},e.prototype.createId=function(){return this.rowIndex+"."+this.floating+"."+this.column.getId()},e}();t.GridCell=r},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(4),a=o(5),l=o(2),p=o(3),u=o(1),d=o(23),c=o(6),h=o(36),f=function(){function e(){}return e.prototype.init=function(){this.eventService.addEventListener(a.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_EVERYTHING_CHANGED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_GROUP_OPENED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_MOVED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_PINNED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,this.clearFocusedCell.bind(this)),this.eventService.addEventListener(a.Events.EVENT_COLUMN_VISIBLE,this.clearFocusedCell.bind(this))},e.prototype.clearFocusedCell=function(){this.focusedCell=null,this.onCellFocused(!1)},e.prototype.getFocusedCell=function(){return this.focusedCell},e.prototype.getFocusCellToUseAfterRefresh=function(){if(this.gridOptionsWrapper.isSuppressFocusAfterRefresh())return null;if(!this.focusedCell)return null;var e=this.getGridCellForDomElement(document.activeElement);return e&&this.focusedCell.createId()===e.createId()?this.focusedCell:null},e.prototype.getGridCellForDomElement=function(e){for(var t=e;t;){var o=this.gridOptionsWrapper.getDomData(t,h.CellComp.DOM_DATA_KEY_CELL_COMP);if(o)return o.getGridCell();t=t.parentNode}return null},e.prototype.setFocusedCell=function(e,t,o,i){if(void 0===i&&(i=!1),!this.gridOptionsWrapper.isSuppressCellSelection()){var n=u.Utils.makeNull(this.columnController.getGridColumn(t));this.focusedCell=new d.GridCell({rowIndex:e,floating:u.Utils.makeNull(o),column:n}),this.onCellFocused(i)}},e.prototype.isCellFocused=function(e){return!u.Utils.missing(this.focusedCell)&&(this.focusedCell.column===e.column&&this.isRowFocused(e.rowIndex,e.floating))},e.prototype.isRowNodeFocused=function(e){return this.isRowFocused(e.rowIndex,e.rowPinned)},e.prototype.isAnyCellFocused=function(){return!!this.focusedCell},e.prototype.isRowFocused=function(e,t){if(u.Utils.missing(this.focusedCell))return!1;var o=u.Utils.makeNull(t);return this.focusedCell.rowIndex===e&&this.focusedCell.floating===o},e.prototype.onCellFocused=function(e){var t={type:a.Events.EVENT_CELL_FOCUSED,forceBrowserFocus:e,rowIndex:null,column:null,floating:null,api:this.gridApi,columnApi:this.columnApi,rowPinned:null};this.focusedCell&&(t.rowIndex=this.focusedCell.rowIndex,t.column=this.focusedCell.column,t.rowPinned=this.focusedCell.floating),this.eventService.dispatchEvent(t)},i([r.Autowired("eventService"),n("design:type",s.EventService)],e.prototype,"eventService",void 0),i([r.Autowired("gridOptionsWrapper"),n("design:type",l.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.Autowired("columnController"),n("design:type",p.ColumnController)],e.prototype,"columnController",void 0),i([r.Autowired("columnApi"),n("design:type",p.ColumnApi)],e.prototype,"columnApi",void 0),i([r.Autowired("gridApi"),n("design:type",c.GridApi)],e.prototype,"gridApi",void 0),i([r.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=i([r.Bean("focusedCellController")],e)}();t.FocusedCellController=f},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),s=o(15),a=o(0),l=o(4),p=o(0),u=o(5),d=o(0),c=o(7),h=o(1),f=o(3),g=o(6),y=function(){function e(){}return e.prototype.init=function(){this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData()),this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData())},e.prototype.isEmpty=function(e){var t=e===c.Constants.PINNED_TOP?this.pinnedTopRows:this.pinnedBottomRows;return h.Utils.missingOrEmpty(t)},e.prototype.isRowsToRender=function(e){return!this.isEmpty(e)},e.prototype.getRowAtPixel=function(e,t){var o=t===c.Constants.PINNED_TOP?this.pinnedTopRows:this.pinnedBottomRows;if(h.Utils.missingOrEmpty(o))return 0;for(var i=0;i=e)return i}return o.length-1},e.prototype.setPinnedTopRowData=function(e){this.pinnedTopRows=this.createNodesFromData(e,!0);var t={type:u.Events.EVENT_PINNED_ROW_DATA_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)},e.prototype.setPinnedBottomRowData=function(e){this.pinnedBottomRows=this.createNodesFromData(e,!1);var t={type:u.Events.EVENT_PINNED_ROW_DATA_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)},e.prototype.createNodesFromData=function(e,t){var o=this,i=[];if(e){var n=0;e.forEach(function(e,r){var a=new s.RowNode;o.context.wireBean(a),a.data=e,a.rowPinned=t?c.Constants.PINNED_TOP:c.Constants.PINNED_BOTTOM,a.setRowTop(n),a.setRowHeight(o.gridOptionsWrapper.getRowHeightForNode(a)),a.setRowIndex(r),n+=a.rowHeight,i.push(a)})}return i},e.prototype.getPinnedTopRowData=function(){return this.pinnedTopRows},e.prototype.getPinnedBottomRowData=function(){return this.pinnedBottomRows},e.prototype.getPinnedTopTotalHeight=function(){return this.getTotalHeight(this.pinnedTopRows)},e.prototype.getPinnedTopRowCount=function(){return this.pinnedTopRows?this.pinnedTopRows.length:0},e.prototype.getPinnedBottomRowCount=function(){return this.pinnedBottomRows?this.pinnedBottomRows.length:0},e.prototype.getPinnedTopRow=function(e){return this.pinnedTopRows[e]},e.prototype.getPinnedBottomRow=function(e){return this.pinnedBottomRows[e]},e.prototype.forEachPinnedTopRow=function(e){h.Utils.missingOrEmpty(this.pinnedTopRows)||this.pinnedTopRows.forEach(e)},e.prototype.forEachPinnedBottomRow=function(e){h.Utils.missingOrEmpty(this.pinnedBottomRows)||this.pinnedBottomRows.forEach(e)},e.prototype.getPinnedBottomTotalHeight=function(){return this.getTotalHeight(this.pinnedBottomRows)},e.prototype.getTotalHeight=function(e){if(e&&0!==e.length){var t=e[e.length-1];return t.rowTop+t.rowHeight}return 0},i([p.Autowired("gridOptionsWrapper"),n("design:type",r.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([p.Autowired("eventService"),n("design:type",l.EventService)],e.prototype,"eventService",void 0),i([p.Autowired("context"),n("design:type",a.Context)],e.prototype,"context",void 0),i([p.Autowired("columnApi"),n("design:type",f.ColumnApi)],e.prototype,"columnApi",void 0),i([p.Autowired("gridApi"),n("design:type",g.GridApi)],e.prototype,"gridApi",void 0),i([d.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=i([a.Bean("pinnedRowModel")],e)}();t.PinnedRowModel=y},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r,s=o(0),a=o(2),l=o(16),p=o(34);!function(e){e[e.AG_GRID=0]="AG_GRID",e[e.FRAMEWORK=1]="FRAMEWORK"}(r||(r={}));var u=function(){function e(){}return e.prototype.newDateComponent=function(e){return this.componentResolver.createAgGridComponent(this.gridOptions,e,"dateComponent")},e.prototype.newHeaderComponent=function(e){return this.componentResolver.createAgGridComponent(e.column.getColDef(),e,"headerComponent")},e.prototype.newHeaderGroupComponent=function(e){return this.componentResolver.createAgGridComponent(e.columnGroup.getColGroupDef(),e,"headerGroupComponent")},e.prototype.newFloatingFilterComponent=function(e,t,o){var i=e+"FloatingFilterComponent";return this.componentResolver.createAgGridComponent(t,o,"floatingFilterComponent",i,!1)},e.prototype.newFloatingFilterWrapperComponent=function(e,t){var o=this,i=e.getColDef();if(i.suppressFilter)return this.newEmptyFloatingFilterWrapperComponent(e);var n;n="string"==typeof i.filter?i.filter:i.filter?"custom":this.gridOptionsWrapper.isEnterprise()?"set":"text";var r=this.newFloatingFilterComponent(n,i,t),s={column:e,floatingFilterComp:r,suppressFilterButton:this.componentResolver.mergeParams(i,"floatingFilterComponent",t).suppressFilterButton};if(!r){var a=this.getFilterComponentPrototype(i);if(a&&!a.component.prototype.getModelAsString)return this.newEmptyFloatingFilterWrapperComponent(e);var l=t.currentParentModel;t.currentParentModel=function(){return o.filterManager.getFilterComponent(e).getModelAsString(l())},s.floatingFilterComp=this.newFloatingFilterComponent("readModelAsString",i,t)}return this.componentResolver.createAgGridComponent(i,s,"floatingFilterWrapperComponent")},e.prototype.newFullWidthGroupRowInnerCellRenderer=function(e){return this.componentResolver.createAgGridComponent(this.gridOptions,e,"groupRowInnerRenderer","groupRowInnerRenderer",!1)},e.prototype.newCellRenderer=function(e,t){return this.componentResolver.createAgGridComponent(e,t,"cellRenderer","cellRenderer",!1)},e.prototype.newInnerCellRenderer=function(e,t){return this.componentResolver.createAgGridComponent(e,t,"innerRenderer")},e.prototype.newFullRowGroupRenderer=function(e){return this.componentResolver.createAgGridComponent(this.gridOptionsWrapper,e,"fullWidthCellRenderer")},e.prototype.getFilterComponentPrototype=function(e){return this.componentResolver.getComponentToUse(e,"filterComponent")},e.prototype.newEmptyFloatingFilterWrapperComponent=function(e){var t={column:e,floatingFilterComp:null};return this.componentResolver.createAgGridComponent(e.getColDef(),t,"floatingFilterWrapperComponent","emptyFloatingFilterWrapperComponent")},i([s.Autowired("componentResolver"),n("design:type",p.ComponentResolver)],e.prototype,"componentResolver",void 0),i([s.Autowired("gridOptions"),n("design:type",Object)],e.prototype,"gridOptions",void 0),i([s.Autowired("gridOptionsWrapper"),n("design:type",a.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([s.Autowired("filterManager"),n("design:type",l.FilterManager)],e.prototype,"filterManager",void 0),e=i([s.Bean("componentRecipes")],e)}();t.ComponentRecipes=u},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),s=o(22),a=o(28),l=o(0),p=o(0),u=function(){function e(){}return e.prototype.calculateColInitialWidth=function(e){return e.width?e.width=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(22),s=o(9),a=o(4),l=o(0),p=o(3),u=o(6),d=function(){function e(e,t,o){this.localEventService=new a.EventService,this.expandable=!1,this.colGroupDef=e,this.groupId=t,this.expanded=e&&!!e.openByDefault,this.padding=o}return e.prototype.isVisible=function(){return!!this.children&&this.children.some(function(e){return e.isVisible()})},e.prototype.isPadding=function(){return this.padding},e.prototype.setExpanded=function(t){this.expanded=t;var o={type:e.EVENT_EXPANDED_CHANGED};this.localEventService.dispatchEvent(o)},e.prototype.isExpandable=function(){return this.expandable},e.prototype.isExpanded=function(){return this.expanded},e.prototype.getGroupId=function(){return this.groupId},e.prototype.getId=function(){return this.getGroupId()},e.prototype.setChildren=function(e){this.children=e},e.prototype.getChildren=function(){return this.children},e.prototype.getColGroupDef=function(){return this.colGroupDef},e.prototype.getLeafColumns=function(){var e=[];return this.addLeafColumns(e),e},e.prototype.addLeafColumns=function(t){this.children.forEach(function(o){o instanceof s.Column?t.push(o):o instanceof e&&o.addLeafColumns(t)})},e.prototype.getColumnGroupShow=function(){return this.padding?this.children[0].getColumnGroupShow():this.colGroupDef.columnGroupShow},e.prototype.setupExpandable=function(){var e=this;this.setExpandable(),this.getLeafColumns().forEach(function(t){return t.addEventListener(s.Column.EVENT_VISIBLE_CHANGED,e.onColumnVisibilityChanged.bind(e))})},e.prototype.setExpandable=function(){for(var t=!1,o=!1,i=!1,n=0,s=this.children.length;n=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(2),a=function(){function e(){this.cacheVersion=0}return e.prototype.init=function(){this.active=this.gridOptionsWrapper.isValueCache(),this.neverExpires=this.gridOptionsWrapper.isValueCacheNeverExpires()},e.prototype.onDataChanged=function(){this.neverExpires||this.expire()},e.prototype.expire=function(){this.cacheVersion++},e.prototype.setValue=function(e,t,o){this.active&&(e.__cacheVersion!==this.cacheVersion&&(e.__cacheVersion=this.cacheVersion,e.__cacheData={}),e.__cacheData[t]=o)},e.prototype.getValue=function(e,t){return this.active&&e.__cacheVersion===this.cacheVersion&&void 0!==e.__cacheData[t]?e.__cacheData[t]:void 0},i([r.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=i([r.Bean("valueCache")],e)}();t.ValueCache=a},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(1),a=o(4),l=o(5),p=o(3),u=o(6),d=function(){function e(){}return e.prototype.setScrollsVisible=function(e){if(this.vBody!==e.vBody||this.hBody!==e.hBody||this.vPinnedLeft!==e.vPinnedLeft||this.vPinnedRight!==e.vPinnedRight){this.vBody=e.vBody,this.hBody=e.hBody,this.vPinnedLeft=e.vPinnedLeft,this.vPinnedRight=e.vPinnedRight;var t={type:l.Events.EVENT_SCROLL_VISIBILITY_CHANGED,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)}},e.prototype.isVBodyShowing=function(){return this.vBody},e.prototype.isHBodyShowing=function(){return this.hBody},e.prototype.isVPinnedLeftShowing=function(){return this.vPinnedLeft},e.prototype.isVPinnedRightShowing=function(){return this.vPinnedRight},e.prototype.getPinnedLeftWidth=function(){return this.columnController.getPinnedLeftContainerWidth()},e.prototype.getPinnedLeftWithScrollWidth=function(){var e=this.getPinnedLeftWidth();return this.vPinnedLeft&&(e+=s.Utils.getScrollbarWidth()),e},e.prototype.getPinnedRightWidth=function(){return this.columnController.getPinnedRightContainerWidth()},e.prototype.getPinnedRightWithScrollWidth=function(){var e=this.getPinnedRightWidth();return this.vPinnedRight&&(e+=s.Utils.getScrollbarWidth()),e},i([r.Autowired("eventService"),n("design:type",a.EventService)],e.prototype,"eventService",void 0),i([r.Autowired("columnController"),n("design:type",p.ColumnController)],e.prototype,"columnController",void 0),i([r.Autowired("columnApi"),n("design:type",p.ColumnApi)],e.prototype,"columnApi",void 0),i([r.Autowired("gridApi"),n("design:type",u.GridApi)],e.prototype,"gridApi",void 0),e=i([r.Bean("scrollVisibleService")],e)}();t.ScrollVisibleService=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(13),a=o(4),l=o(5),p=o(1),u=o(0),d=o(2),c=o(11),h=o(30),f=o(14),g=o(3),y=o(6),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.notActive=function(){return!this.gridOptionsWrapper.isPaginationAutoPageSize()},t.prototype.postConstruct=function(){this.addDestroyableEventListener(this.eventService,l.Events.EVENT_BODY_HEIGHT_CHANGED,this.onBodyHeightChanged.bind(this)),this.addDestroyableEventListener(this.eventService,l.Events.EVENT_SCROLL_VISIBILITY_CHANGED,this.onScrollVisibilityChanged.bind(this)),this.checkPageSize()},t.prototype.onScrollVisibilityChanged=function(){this.checkPageSize()},t.prototype.onBodyHeightChanged=function(){this.checkPageSize()},t.prototype.checkPageSize=function(){if(!this.notActive()){var e=this.gridOptionsWrapper.getRowHeightAsNumber(),t=this.gridPanel.getBodyHeight();if(this.scrollVisibleService.isHBodyShowing()&&(t-=this.gridOptionsWrapper.getScrollbarWidth()),t>0){var o=Math.floor(t/e);this.gridOptionsWrapper.setProperty("paginationPageSize",o)}}},n([u.Autowired("gridPanel"),r("design:type",c.GridPanel)],t.prototype,"gridPanel",void 0),n([u.Autowired("eventService"),r("design:type",a.EventService)],t.prototype,"eventService",void 0),n([u.Autowired("gridOptionsWrapper"),r("design:type",d.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([u.Autowired("scrollVisibleService"),r("design:type",h.ScrollVisibleService)],t.prototype,"scrollVisibleService",void 0),n([u.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"postConstruct",null),t=n([u.Bean("paginationAutoPageSizeService")],t)}(s.BeanStub);t.PaginationAutoPageSizeService=v;var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.currentPage=0,t.topRowIndex=0,t.bottomRowIndex=0,t.pixelOffset=0,t}return i(t,e),t.prototype.postConstruct=function(){this.active=this.gridOptionsWrapper.isPagination(),this.addDestroyableEventListener(this.eventService,l.Events.EVENT_MODEL_UPDATED,this.onModelUpdated.bind(this)),this.addDestroyableEventListener(this.gridOptionsWrapper,"paginationPageSize",this.onModelUpdated.bind(this)),this.onModelUpdated()},t.prototype.isLastRowFound=function(){return this.rowModel.isLastRowFound()},t.prototype.onModelUpdated=function(e){this.setIndexesAndBounds();var t={type:l.Events.EVENT_PAGINATION_CHANGED,animate:!!e&&e.animate,newData:!!e&&e.newData,newPage:!!e&&e.newPage,keepRenderedRows:!!e&&e.keepRenderedRows,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)},t.prototype.goToPage=function(e){if(this.active&&this.currentPage!==e){this.currentPage=e;var t={type:l.Events.EVENT_MODEL_UPDATED,animate:!1,keepRenderedRows:!1,newData:!1,newPage:!0,api:this.gridApi,columnApi:this.columnApi};this.onModelUpdated(t)}},t.prototype.getPixelOffset=function(){return this.pixelOffset},t.prototype.getRow=function(e){return this.rowModel.getRow(e)},t.prototype.getRowIndexAtPixel=function(e){return this.rowModel.getRowIndexAtPixel(e)},t.prototype.getCurrentPageHeight=function(){return p._.missing(this.topRowBounds)||p._.missing(this.bottomRowBounds)?0:this.bottomRowBounds.rowTop+this.bottomRowBounds.rowHeight-this.topRowBounds.rowTop},t.prototype.isRowPresent=function(e){return this.isRowInPage(e)},t.prototype.isRowInPage=function(e){return!!this.rowModel.isRowPresent(e)&&(e.rowIndex>=this.topRowIndex&&e.rowIndex<=this.bottomRowIndex)},t.prototype.isEmpty=function(){return this.rowModel.isEmpty()},t.prototype.isRowsToRender=function(){return this.rowModel.isRowsToRender()},t.prototype.getNodesInRangeForSelection=function(e,t){return this.rowModel.getNodesInRangeForSelection(e,t)},t.prototype.forEachNode=function(e){return this.rowModel.forEachNode(e)},t.prototype.getType=function(){return this.rowModel.getType()},t.prototype.getRowBounds=function(e){return this.rowModel.getRowBounds(e)},t.prototype.getPageFirstRow=function(){return this.pageSize*this.currentPage},t.prototype.getPageLastRow=function(){var e=this.pageSize*(this.currentPage+1)-1,t=this.rowModel.getPageLastRow();return t>e?e:t},t.prototype.getRowCount=function(){return this.rowModel.getRowCount()},t.prototype.goToPageWithIndex=function(e){if(this.active){var t=Math.floor(e/this.pageSize);this.goToPage(t)}},t.prototype.getTotalRowCount=function(){return this.rowModel.getPageLastRow()+1},t.prototype.isLastPageFound=function(){return this.rowModel.isLastRowFound()},t.prototype.getCurrentPage=function(){return this.currentPage},t.prototype.goToNextPage=function(){this.goToPage(this.currentPage+1)},t.prototype.goToPreviousPage=function(){this.goToPage(this.currentPage-1)},t.prototype.goToFirstPage=function(){this.goToPage(0)},t.prototype.goToLastPage=function(){var e=this.rowModel.getPageLastRow()+1,t=Math.floor(e/this.pageSize);this.goToPage(t)},t.prototype.getPageSize=function(){return this.pageSize},t.prototype.getTotalPages=function(){return this.totalPages},t.prototype.setPageSize=function(){this.pageSize=this.gridOptionsWrapper.getPaginationPageSize(),this.pageSize>=1||(this.pageSize=100)},t.prototype.setIndexesAndBounds=function(){if(this.active){this.setPageSize();var e=this.getTotalRowCount();this.totalPages=Math.floor((e-1)/this.pageSize)+1,this.currentPage>=this.totalPages&&(this.currentPage=this.totalPages-1),(!p._.isNumeric(this.currentPage)||this.currentPage<0)&&(this.currentPage=0),this.topRowIndex=this.pageSize*this.currentPage,this.bottomRowIndex=this.pageSize*(this.currentPage+1)-1;var t=this.rowModel.getPageLastRow();this.bottomRowIndex>t&&(this.bottomRowIndex=t)}else this.pageSize=this.rowModel.getPageLastRow()+1,this.totalPages=1,this.currentPage=0,this.topRowIndex=0,this.bottomRowIndex=this.rowModel.getPageLastRow();this.topRowBounds=this.rowModel.getRowBounds(this.topRowIndex),this.bottomRowBounds=this.rowModel.getRowBounds(this.bottomRowIndex),this.pixelOffset=p._.exists(this.topRowBounds)?this.topRowBounds.rowTop:0},n([u.Autowired("rowModel"),r("design:type",Object)],t.prototype,"rowModel",void 0),n([u.Autowired("gridPanel"),r("design:type",c.GridPanel)],t.prototype,"gridPanel",void 0),n([u.Autowired("eventService"),r("design:type",a.EventService)],t.prototype,"eventService",void 0),n([u.Autowired("gridOptionsWrapper"),r("design:type",d.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([u.Autowired("selectionController"),r("design:type",f.SelectionController)],t.prototype,"selectionController",void 0),n([u.Autowired("columnApi"),r("design:type",g.ColumnApi)],t.prototype,"columnApi",void 0),n([u.Autowired("gridApi"),r("design:type",y.GridApi)],t.prototype,"gridApi",void 0),n([u.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"postConstruct",null),t=n([u.Bean("paginationProxy")],t)}(s.BeanStub);t.PaginationProxy=m},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(2),a=o(3),l=o(18),p=o(16),u=o(4),d=o(11),c=o(10),h=o(7),f=o(33),g=o(5),y=o(1),v=o(63),m=o(0),C=o(24),E=o(8),w=o(121),R=o(6),O=function(){function e(e){this.destroyFunctions=[],this.logger=e.create("GridCore")}return e.prototype.init=function(){var e,t,o=this,i=this.createSouthPanel();this.toolPanel&&!this.gridOptionsWrapper.isForPrint()&&(this.gridOptionsWrapper.isEnableRtl()?t=this.toolPanel.getHtmlElement():e=this.toolPanel.getHtmlElement());var n=this.createNorthPanel();this.eRootPanel=new v.BorderLayout({center:this.gridPanel.getLayout(),east:e,west:t,north:n,south:i,dontFill:this.gridOptionsWrapper.isForPrint(),fillHorizontalOnly:this.gridOptionsWrapper.isAutoHeight(),name:"eRootPanel"}),this.gridOptionsWrapper.isForPrint()?(y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-layout-for-print"),y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-no-scrolls")):this.gridOptionsWrapper.isAutoHeight()?y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-layout-auto-height"):(y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-layout-normal"),y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-scrolls")),this.showToolPanel(this.gridOptionsWrapper.isShowToolPanel()),this.eGridDiv.appendChild(this.eRootPanel.getGui()),this.$scope&&this.$scope.$watch(this.quickFilterOnScope,function(e){return o.filterManager.setQuickFilter(e)}),this.gridOptionsWrapper.isForPrint()||this.addWindowResizeListener(),this.addRtlSupport(),this.doLayout(),this.finished=!1,this.periodicallyDoLayout(),this.eventService.addEventListener(g.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,this.onRowGroupChanged.bind(this)),this.eventService.addEventListener(g.Events.EVENT_COLUMN_EVERYTHING_CHANGED,this.onRowGroupChanged.bind(this)),this.onRowGroupChanged(),this.logger.log("ready")},e.prototype.addRtlSupport=function(){this.gridOptionsWrapper.isEnableRtl()?y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-rtl"):y.Utils.addCssClass(this.eRootPanel.getGui(),"ag-ltr")},e.prototype.createNorthPanel=function(){var e=this;if(!this.gridOptionsWrapper.isEnterprise())return null;var t=document.createElement("div"),o=this.onDropPanelVisible.bind(this);return this.rowGroupComp=this.rowGroupCompFactory.create(),this.pivotComp=this.pivotCompFactory.create(),t.appendChild(this.rowGroupComp.getHtmlElement()),t.appendChild(this.pivotComp.getHtmlElement()),this.rowGroupComp.addEventListener(E.Component.EVENT_VISIBLE_CHANGED,o),this.pivotComp.addEventListener(E.Component.EVENT_VISIBLE_CHANGED,o),this.destroyFunctions.push(function(){e.rowGroupComp.removeEventListener(E.Component.EVENT_VISIBLE_CHANGED,o),e.pivotComp.removeEventListener(E.Component.EVENT_VISIBLE_CHANGED,o)}),this.onDropPanelVisible(),t},e.prototype.onDropPanelVisible=function(){var e=this.rowGroupComp.isVisible()&&this.pivotComp.isVisible();this.rowGroupComp.addOrRemoveCssClass("ag-width-half",e),this.pivotComp.addOrRemoveCssClass("ag-width-half",e)},e.prototype.getRootGui=function(){return this.eRootPanel.getGui()},e.prototype.createSouthPanel=function(){!this.statusBar&&this.gridOptionsWrapper.isEnableStatusBar()&&console.warn("ag-Grid: status bar is only available in ag-Grid-Enterprise");var e=this.statusBar&&this.gridOptionsWrapper.isEnableStatusBar(),t=this.gridOptionsWrapper.isPagination(),o=t&&!this.gridOptionsWrapper.isForPrint()&&!this.gridOptionsWrapper.isSuppressPaginationPanel();if(!e&&!o)return null;var i=document.createElement("div");if(e&&i.appendChild(this.statusBar.getHtmlElement()),o){var n=new w.PaginationComp;this.context.wireBean(n),i.appendChild(n.getHtmlElement()),this.destroyFunctions.push(n.destroy.bind(n))}return i},e.prototype.onRowGroupChanged=function(){if(this.rowGroupComp){var e=this.gridOptionsWrapper.getRowGroupPanelShow();if(e===h.Constants.ALWAYS)this.rowGroupComp.setVisible(!0);else if(e===h.Constants.ONLY_WHEN_GROUPING){var t=!this.columnController.isRowGroupEmpty();this.rowGroupComp.setVisible(t)}else this.rowGroupComp.setVisible(!1);this.eRootPanel.doLayout()}},e.prototype.addWindowResizeListener=function(){var e=this.doLayout.bind(this);window.addEventListener("resize",e),this.destroyFunctions.push(function(){return window.removeEventListener("resize",e)})},e.prototype.periodicallyDoLayout=function(){var e=this;if(!this.finished){var t=this.gridOptionsWrapper.getLayoutInterval();t>0?this.frameworkFactory.setTimeout(function(){e.doLayout(),e.gridPanel.periodicallyCheck(),e.periodicallyDoLayout()},t):this.frameworkFactory.setTimeout(function(){e.periodicallyDoLayout()},5e3)}},e.prototype.showToolPanel=function(e){if(e&&!this.toolPanel)return console.warn("ag-Grid: toolPanel is only available in ag-Grid Enterprise"),void(this.toolPanelShowing=!1);this.toolPanelShowing=e,this.toolPanel&&(this.toolPanel.setVisible(e),this.eRootPanel.doLayout())},e.prototype.isToolPanelShowing=function(){return this.toolPanelShowing},e.prototype.destroy=function(){this.finished=!0,this.eGridDiv.removeChild(this.eRootPanel.getGui()),this.logger.log("Grid DOM removed"),this.destroyFunctions.forEach(function(e){return e()})},e.prototype.ensureNodeVisible=function(e){if(this.doingVirtualPaging)throw"Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory";for(var t=this.rowModel.getPageLastRow()+1,o="function"==typeof e,i=-1,n=0;n=0&&this.gridPanel.ensureIndexVisible(i)},e.prototype.doLayout=function(){var e=this.eRootPanel.doLayout();if(e&&this.eRootPanel.doLayout(),e){this.rowRenderer.redrawAfterScroll();var t={type:g.Events.EVENT_GRID_SIZE_CHANGED,clientWidth:this.eRootPanel.getGui().clientWidth,clientHeight:this.eRootPanel.getGui().clientHeight,api:this.gridApi,columnApi:this.columnApi};this.eventService.dispatchEvent(t)}},i([m.Autowired("gridOptions"),n("design:type",Object)],e.prototype,"gridOptions",void 0),i([m.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([m.Autowired("rowModel"),n("design:type",Object)],e.prototype,"rowModel",void 0),i([m.Autowired("frameworkFactory"),n("design:type",Object)],e.prototype,"frameworkFactory",void 0),i([m.Autowired("columnController"),n("design:type",a.ColumnController)],e.prototype,"columnController",void 0),i([m.Autowired("rowRenderer"),n("design:type",l.RowRenderer)],e.prototype,"rowRenderer",void 0),i([m.Autowired("filterManager"),n("design:type",p.FilterManager)],e.prototype,"filterManager",void 0),i([m.Autowired("eventService"),n("design:type",u.EventService)],e.prototype,"eventService",void 0),i([m.Autowired("gridPanel"),n("design:type",d.GridPanel)],e.prototype,"gridPanel",void 0),i([m.Autowired("eGridDiv"),n("design:type",HTMLElement)],e.prototype,"eGridDiv",void 0),i([m.Autowired("$scope"),n("design:type",Object)],e.prototype,"$scope",void 0),i([m.Autowired("quickFilterOnScope"),n("design:type",String)],e.prototype,"quickFilterOnScope",void 0),i([m.Autowired("popupService"),n("design:type",f.PopupService)],e.prototype,"popupService",void 0),i([m.Autowired("focusedCellController"),n("design:type",C.FocusedCellController)],e.prototype,"focusedCellController",void 0),i([m.Autowired("context"),n("design:type",m.Context)],e.prototype,"context",void 0),i([m.Autowired("columnApi"),n("design:type",a.ColumnApi)],e.prototype,"columnApi",void 0),i([m.Autowired("gridApi"),n("design:type",R.GridApi)],e.prototype,"gridApi",void 0),i([m.Optional("rowGroupCompFactory"),n("design:type",Object)],e.prototype,"rowGroupCompFactory",void 0),i([m.Optional("pivotCompFactory"),n("design:type",Object)],e.prototype,"pivotCompFactory",void 0),i([m.Optional("toolPanel"),n("design:type",E.Component)],e.prototype,"toolPanel",void 0),i([m.Optional("statusBar"),n("design:type",E.Component)],e.prototype,"statusBar",void 0),i([m.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),i([m.PreDestroy,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"destroy",null),e=i([m.Bean("gridCore"),r(0,m.Qualifier("loggerFactory")),n("design:paramtypes",[c.LoggerFactory])],e)}();t.GridCore=O},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),s=o(7),a=o(0),l=o(32),p=o(2),u=function(){function e(){}return e.prototype.getPopupParent=function(){return this.gridCore.getRootGui()},e.prototype.positionPopupForMenu=function(e){function t(){return i.right-n.left-2}function o(){return i.left-n.left-a}var i=e.eventSource.getBoundingClientRect(),n=this.getPopupParent().getBoundingClientRect(),r=i.top-n.top;r=this.keepYWithinBounds(e,r);var s,a=e.ePopup.clientWidth>0?e.ePopup.clientWidth:200,l=n.right-n.left,p=l-a;this.gridOptionsWrapper.isEnableRtl()?(s=o(),s<0&&(s=t()),s>p&&(s=0)):(s=t(),s>p&&(s=o()),s<0&&(s=0)),e.ePopup.style.left=s+"px",e.ePopup.style.top=r+"px"},e.prototype.positionPopupUnderMouseEvent=function(e){var t=this.getPopupParent().getBoundingClientRect();this.positionPopup({ePopup:e.ePopup,x:e.mouseEvent.clientX-t.left,y:e.mouseEvent.clientY-t.top,keepWithinBounds:!0}),this.callPostProcessPopup(e.ePopup,null,e.mouseEvent,e.type,e.column,e.rowNode)},e.prototype.positionPopupUnderComponent=function(e){var t=e.eventSource.getBoundingClientRect(),o=this.getPopupParent().getBoundingClientRect();this.positionPopup({ePopup:e.ePopup,minWidth:e.minWidth,nudgeX:e.nudgeX,nudgeY:e.nudgeY,x:t.left-o.left,y:t.top-o.top+t.height,keepWithinBounds:e.keepWithinBounds}),this.callPostProcessPopup(e.ePopup,e.eventSource,null,e.type,e.column,e.rowNode)},e.prototype.callPostProcessPopup=function(e,t,o,i,n,r){var s=this.gridOptionsWrapper.getPostProcessPopupFunc();if(s){s({column:n,rowNode:r,ePopup:e,type:i,eventSource:t,mouseEvent:o})}},e.prototype.positionPopupOverComponent=function(e){var t=e.eventSource.getBoundingClientRect(),o=this.getPopupParent().getBoundingClientRect();this.positionPopup({ePopup:e.ePopup,minWidth:e.minWidth,nudgeX:e.nudgeX,nudgeY:e.nudgeY,x:t.left-o.left,y:t.top-o.top,keepWithinBounds:e.keepWithinBounds}),this.callPostProcessPopup(e.ePopup,e.eventSource,null,e.type,e.column,e.rowNode)},e.prototype.positionPopup=function(e){var t=e.x,o=e.y;e.nudgeX&&(t+=e.nudgeX),e.nudgeY&&(o+=e.nudgeY),e.keepWithinBounds&&(t=this.keepXWithinBounds(e,t),o=this.keepYWithinBounds(e,o)),e.ePopup.style.left=t+"px",e.ePopup.style.top=o+"px"},e.prototype.keepYWithinBounds=function(e,t){var o,i=this.getPopupParent().getBoundingClientRect();o=e.ePopup.clientHeight>0?e.ePopup.clientHeight:200;var n=i.bottom-i.top,r=n-o-5;return t>r?r:t<0?0:t},e.prototype.keepXWithinBounds=function(e,t){var o,i=this.getPopupParent().getBoundingClientRect();o=e.minWidth>0?e.minWidth:e.ePopup.clientWidth>0?e.ePopup.clientWidth:200;var n=i.right-i.left,r=n-o-5;return t>r?r:t<0?0:t},e.prototype.addAsModalPopup=function(e,t,o){function i(e){(e.which||e.keyCode)===s.Constants.KEY_ESCAPE&&n(null)}function n(t){t&&t===c||t&&t===h||d||(d=!0,u.getPopupParent().removeChild(e),p.removeEventListener("keydown",i),p.removeEventListener("click",n),p.removeEventListener("touchstart",n),p.removeEventListener("contextmenu",n),e.removeEventListener("click",a),e.removeEventListener("touchstart",l),o&&o())}function a(e){c=e}function l(e){h=e}var p=this.gridOptionsWrapper.getDocument();if(!p)return void console.warn("ag-grid: could not find the body of the document, document.body is empty");if(e.style.top="0px",e.style.left="0px",!r.Utils.isVisible(e)){this.getPopupParent().appendChild(e);var u=this,d=!1;setTimeout(function(){t&&p.addEventListener("keydown",i),p.addEventListener("click",n),p.addEventListener("touchstart",n),p.addEventListener("contextmenu",n),e.addEventListener("click",a),e.addEventListener("touchstart",l)},0);var c=null,h=null;return n}},i([a.Autowired("gridCore"),n("design:type",l.GridCore)],e.prototype,"gridCore",void 0),i([a.Autowired("gridOptionsWrapper"),n("design:type",p.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e=i([a.Bean("popupService")],e)}();t.PopupService=u},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r,s=o(0),a=o(2),l=o(1),p=o(88),u=o(54),d=o(76);!function(e){e[e.AG_GRID=0]="AG_GRID",e[e.FRAMEWORK=1]="FRAMEWORK"}(r=t.ComponentType||(t.ComponentType={}));var c;!function(e){e[e.DEFAULT=0]="DEFAULT",e[e.REGISTERED_BY_NAME=1]="REGISTERED_BY_NAME",e[e.HARDCODED=2]="HARDCODED"}(c=t.ComponentSource||(t.ComponentSource={}));var h=function(){function e(){}return e.prototype.getComponentToUse=function(e,t,o){var i=null==o?t:o,n=null,s=null,a=null,l=null;if(null!=e){var p=e[t];null!=p&&("string"==typeof p?n=p:this.agComponentUtils.doesImplementIComponent(p)?s=p:a=p),l=e[t+"Framework"]}if(s&&l||n&&l||a&&l)throw Error("You are trying to specify: "+t+" twice as a component.");if(l&&!this.frameworkComponentWrapper)throw Error("You are specifying a framework component but you are not using a framework version of ag-grid for : "+t);if(l)return{type:r.FRAMEWORK,component:l,source:c.HARDCODED};if(s)return{type:r.AG_GRID,component:s,source:c.HARDCODED};if(a)return this.agComponentUtils.adaptFunction(t,a,r.AG_GRID,c.HARDCODED);var u;return u=n||i,this.namedComponentResolver.resolve(t,u)},e.prototype.mergeParams=function(e,t,o){var i=e?e[t+"Params"]:null,n={};return l._.mergeDeep(n,o),l._.mergeDeep(n,i),n.api||(n.api=this.gridOptions.api),n},e.prototype.createAgGridComponent=function(e,t,o,i,n){void 0===n&&(n=!0);var r=null==e?this.gridOptions:e,s=null==i?o:i,a=this.newAgGridComponent(r,o,s,n);if(!a)return null;var l=this.mergeParams(r,o,t);return this.context.wireBean(a),a.init(l),a},e.prototype.newAgGridComponent=function(e,t,o,i){void 0===i&&(i=!0);var n=this.getComponentToUse(e,t,o);if(!n||!n.component)return i&&console.error("Error creating component "+t+"=>"+o),null;if(n.type===r.AG_GRID)return new n.component;var s=n.component,a=this.componentMetadataProvider.retrieve(t);return this.frameworkComponentWrapper.wrap(s,a.mandatoryMethodList,a.optionalMethodList)},i([s.Autowired("gridOptions"),n("design:type",Object)],e.prototype,"gridOptions",void 0),i([s.Autowired("gridOptionsWrapper"),n("design:type",a.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([s.Autowired("context"),n("design:type",s.Context)],e.prototype,"context",void 0),i([s.Autowired("namedComponentResolver"),n("design:type",p.NamedComponentResolver)],e.prototype,"namedComponentResolver",void 0),i([s.Autowired("agComponentUtils"),n("design:type",u.AgComponentUtils)],e.prototype,"agComponentUtils",void 0),i([s.Autowired("componentMetadataProvider"),n("design:type",d.ComponentMetadataProvider)],e.prototype,"componentMetadataProvider",void 0),i([s.Optional("frameworkComponentWrapper"),n("design:type",Object)],e.prototype,"frameworkComponentWrapper",void 0),e=i([s.Bean("componentResolver")],e)}();t.ComponentResolver=h},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(3),a=o(6),l=o(2),p=o(17),u=o(18),d=o(47),c=o(19),h=o(4),f=o(68),g=o(24),y=o(51),v=o(52),m=o(33),C=o(53),E=o(38),w=o(74),R=o(75),O=o(11),_=o(31),S=o(45),A=o(34),P=function(){function e(){}return e.prototype.postConstruct=function(){this.forPrint=this.gridOptionsWrapper.isForPrint()},i([r.Autowired("paginationProxy"),n("design:type",_.PaginationProxy)],e.prototype,"paginationProxy",void 0),i([r.Autowired("gridPanel"),n("design:type",O.GridPanel)],e.prototype,"gridPanel",void 0),i([r.Autowired("context"),n("design:type",r.Context)],e.prototype,"context",void 0),i([r.Autowired("columnApi"),n("design:type",s.ColumnApi)],e.prototype,"columnApi",void 0),i([r.Autowired("gridApi"),n("design:type",a.GridApi)],e.prototype,"gridApi",void 0),i([r.Autowired("gridOptionsWrapper"),n("design:type",l.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.Autowired("expressionService"),n("design:type",p.ExpressionService)],e.prototype,"expressionService",void 0),i([r.Autowired("rowRenderer"),n("design:type",u.RowRenderer)],e.prototype,"rowRenderer",void 0),i([r.Autowired("$compile"),n("design:type",Object)],e.prototype,"$compile",void 0),i([r.Autowired("templateService"),n("design:type",d.TemplateService)],e.prototype,"templateService",void 0),i([r.Autowired("valueService"),n("design:type",c.ValueService)],e.prototype,"valueService",void 0),i([r.Autowired("eventService"),n("design:type",h.EventService)],e.prototype,"eventService",void 0),i([r.Autowired("columnController"),n("design:type",s.ColumnController)],e.prototype,"columnController",void 0),i([r.Autowired("columnAnimationService"),n("design:type",f.ColumnAnimationService)],e.prototype,"columnAnimationService",void 0),i([r.Optional("rangeController"),n("design:type",Object)],e.prototype,"rangeController",void 0),i([r.Autowired("focusedCellController"),n("design:type",g.FocusedCellController)],e.prototype,"focusedCellController",void 0),i([r.Optional("contextMenuFactory"),n("design:type",Object)],e.prototype,"contextMenuFactory",void 0),i([r.Autowired("cellEditorFactory"),n("design:type",y.CellEditorFactory)],e.prototype,"cellEditorFactory",void 0),i([r.Autowired("cellRendererFactory"),n("design:type",v.CellRendererFactory)],e.prototype,"cellRendererFactory",void 0),i([r.Autowired("popupService"),n("design:type",m.PopupService)],e.prototype,"popupService",void 0),i([r.Autowired("cellRendererService"),n("design:type",C.CellRendererService)],e.prototype,"cellRendererService",void 0),i([r.Autowired("valueFormatterService"),n("design:type",E.ValueFormatterService)],e.prototype,"valueFormatterService",void 0),i([r.Autowired("stylingService"),n("design:type",w.StylingService)],e.prototype,"stylingService",void 0),i([r.Autowired("columnHoverService"),n("design:type",R.ColumnHoverService)],e.prototype,"columnHoverService",void 0),i([r.Autowired("enterprise"),n("design:type",Boolean)],e.prototype,"enterprise",void 0),i([r.Autowired("componentResolver"),n("design:type",A.ComponentResolver)],e.prototype,"componentResolver",void 0),i([r.Autowired("animationFrameService"),n("design:type",S.AnimationFrameService)],e.prototype,"taskQueue",void 0),i([r.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"postConstruct",null),e=i([r.Bean("beans")],e)}();t.Beans=P},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(1),r=o(9),s=o(15),a=o(7),l=o(5),p=o(23),u=o(8),d=o(66),c=function(e){function t(t,o,i,n,r){var s=e.call(this)||this;return s.scope=t,s.beans=o,s.column=i,s.rowNode=n,s.rowComp=r,s.createGridCellVo(),s.rangeSelectionEnabled=o.enterprise&&o.gridOptionsWrapper.isEnableRangeSelection(),s.cellFocused=s.beans.focusedCellController.isCellFocused(s.gridCell),s.firstRightPinned=s.column.isFirstRightPinned(),s.lastLeftPinned=s.column.isLastLeftPinned(),s.rangeSelectionEnabled&&(s.rangeCount=s.beans.rangeController.getCellRangeCount(s.gridCell)),s.value=s.getValue(),s.setUsingWrapper(),s.chooseCellRenderer(),s.setupColSpan(),s}return i(t,e),t.prototype.getCreateTemplate=function(){var e,t,o=[],i=this.column,n=this.getCellWidth(),r=i.getLeft(),s=this.getInitialValueToRender(),a=this.getToolTip(),l=this.preProcessStylesFromColDef(),p=this.getInitialCssClasses();return this.usingWrapper&&(e='',t=""),o.push("'),o.push(e),o.push(s),o.push(t),o.push("
    "),o.join("")},t.prototype.afterAttached=function(){var e='[comp-id="'+this.getCompId()+'"]',t=this.eParentRow.querySelector(e);this.setHtmlElementNoHydrate(t),this.addDomData(),this.addSelectionCheckbox(),this.attachCellRenderer(),this.angular1Compile(),this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_CELL_FOCUSED,this.onCellFocused.bind(this)),this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_FLASH_CELLS,this.onFlashCells.bind(this)),this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_COLUMN_HOVER_CHANGED,this.onColumnHover.bind(this)),this.addDestroyableEventListener(this.rowNode,s.RowNode.EVENT_ROW_INDEX_CHANGED,this.onRowIndexChanged.bind(this)),this.addDestroyableEventListener(this.rowNode,s.RowNode.EVENT_CELL_CHANGED,this.onCellChanged.bind(this)),this.addDestroyableEventListener(this.column,r.Column.EVENT_LEFT_CHANGED,this.onLeftChanged.bind(this)),this.addDestroyableEventListener(this.column,r.Column.EVENT_WIDTH_CHANGED,this.onWidthChanged.bind(this)),this.addDestroyableEventListener(this.column,r.Column.EVENT_FIRST_RIGHT_PINNED_CHANGED,this.onFirstRightPinnedChanged.bind(this)),this.addDestroyableEventListener(this.column,r.Column.EVENT_LAST_LEFT_PINNED_CHANGED,this.onLastLeftPinnedChanged.bind(this)),this.rangeSelectionEnabled&&this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_RANGE_SELECTION_CHANGED,this.onRangeSelectionChanged.bind(this))},t.prototype.onColumnHover=function(){var e=this.beans.columnHoverService.isHovered(this.column);n._.addOrRemoveCssClass(this.getHtmlElement(),"ag-column-hover",e)},t.prototype.onCellChanged=function(e){e.column===this.column&&this.refreshCell({})},t.prototype.getCellLeft=function(){var e;return e=this.beans.gridOptionsWrapper.isEnableRtl()&&this.colsSpanning?this.colsSpanning[this.colsSpanning.length-1]:this.column,e.getLeft()},t.prototype.getCellWidth=function(){if(this.colsSpanning){var e=0;return this.colsSpanning.forEach(function(t){return e+=t.getActualWidth()}),e}return this.column.getActualWidth()},t.prototype.onFlashCells=function(e){var t=this.gridCell.createId();e.cells[t]&&this.animateCell("highlight")},t.prototype.setupColSpan=function(){n._.missing(this.column.getColDef().colSpan)||(this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayColumnsChanged.bind(this)),this.addDestroyableEventListener(this.beans.eventService,l.Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,this.onWidthChanged.bind(this)),this.colsSpanning=this.getColSpanningList())},t.prototype.getColSpanningList=function(){var e=this.column.getColSpan(this.rowNode),t=[];if(1===e)t.push(this.column);else for(var o=this.column,i=this.column.getPinned(),r=0;r=4&&e.push("ag-cell-range-selected-4"),e):e},t.prototype.onRowIndexChanged=function(){this.createGridCellVo(),this.onCellFocused(),this.onRangeSelectionChanged()},t.prototype.onRangeSelectionChanged=function(){if(this.beans.enterprise){var e=this.beans.rangeController.getCellRangeCount(this.gridCell),t=this.getHtmlElement();this.rangeCount!==e&&(n._.addOrRemoveCssClass(t,"ag-cell-range-selected",0!==e),n._.addOrRemoveCssClass(t,"ag-cell-range-selected-1",1===e),n._.addOrRemoveCssClass(t,"ag-cell-range-selected-2",2===e),n._.addOrRemoveCssClass(t,"ag-cell-range-selected-3",3===e),n._.addOrRemoveCssClass(t,"ag-cell-range-selected-4",e>=4),this.rangeCount=e)}},t.prototype.onFirstRightPinnedChanged=function(){var e=this.column.isFirstRightPinned();this.firstRightPinned!==e&&(this.firstRightPinned=e,n._.addOrRemoveCssClass(this.getHtmlElement(),"ag-cell-first-right-pinned",e))},t.prototype.onLastLeftPinnedChanged=function(){var e=this.column.isLastLeftPinned();this.lastLeftPinned!==e&&(this.lastLeftPinned=e,n._.addOrRemoveCssClass(this.getHtmlElement(),"ag-cell-last-left-pinned",e))},t.prototype.addSelectionCheckbox=function(){if(this.usingWrapper){this.eParentOfValue=this.getRefElement("eCellValue"),this.eCellWrapper=this.getRefElement("eCellWrapper");var e=new d.CheckboxSelectionComponent;this.beans.context.wireBean(e);var t=this.column.getColDef().checkboxSelection;t="function"==typeof t?t:null,e.init({rowNode:this.rowNode,column:this.column,visibleFunc:t}),this.addDestroyFunc(function(){return e.destroy()}),this.eCellWrapper.insertBefore(e.getHtmlElement(),this.eParentOfValue)}else this.eParentOfValue=this.getHtmlElement()},t.prototype.addDomData=function(){var e=this,o=this.getHtmlElement();this.beans.gridOptionsWrapper.setDomData(o,t.DOM_DATA_KEY_CELL_COMP,this),this.addDestroyFunc(function(){return e.beans.gridOptionsWrapper.setDomData(o,t.DOM_DATA_KEY_CELL_COMP,null)})},t.prototype.onCellFocused=function(e){var t=this.beans.focusedCellController.isCellFocused(this.gridCell);t!==this.cellFocused&&(n._.addOrRemoveCssClass(this.getHtmlElement(),"ag-cell-focus",t),n._.addOrRemoveCssClass(this.getHtmlElement(),"ag-cell-no-focus",!t),this.cellFocused=t),t&&e&&e.forceBrowserFocus&&this.getHtmlElement().focus();var o=this.beans.gridOptionsWrapper.isFullRowEdit();t||o||!this.editingCell||this.stopRowOrCellEdit()},t.prototype.stopRowOrCellEdit=function(e){void 0===e&&(e=!1),this.beans.gridOptionsWrapper.isFullRowEdit()?this.rowComp.stopRowEditing(e):this.stopEditing(e)},t.prototype.stopEditing=function(e){if(void 0===e&&(e=!1),this.editingCell){if(!e){if(!(this.cellEditor.isCancelAfterEnd&&this.cellEditor.isCancelAfterEnd())){var t=this.cellEditor.getValue();this.beans.valueService.setValue(this.rowNode,this.column,t),this.value=this.getValue()}}if(this.editingCell=!1,this.cellEditor.destroy&&this.cellEditor.destroy(),this.cellEditorInPopup)this.hideEditorPopup(),this.hideEditorPopup=null;else if(n._.removeAllChildren(this.getHtmlElement()),this.usingWrapper)this.getHtmlElement().appendChild(this.eCellWrapper);else if(this.cellRenderer){var o=this.cellRendererGui;this.getHtmlElement().appendChild(o)}this.setInlineEditingClass(),this.refreshCell({forceRefresh:!0,suppressFlash:!0});var i=this.createEvent(null,l.Events.EVENT_CELL_EDITING_STOPPED);this.beans.eventService.dispatchEvent(i)}},t.DOM_DATA_KEY_CELL_COMP="cellComp",t}(u.Component);t.CellComp=c},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(1),r=o(9),s=o(13),a=function(e){function t(t,o,i,n){var r=e.call(this)||this;return r.columnOrGroup=t,r.eCell=o,r.colsSpanning=n,r.beans=i,r}return i(t,e),t.prototype.setColsSpanning=function(e){this.colsSpanning=e,this.onLeftChanged()},t.prototype.getColumnOrGroup=function(){return this.beans.gridOptionsWrapper.isEnableRtl()&&this.colsSpanning?this.colsSpanning[this.colsSpanning.length-1]:this.columnOrGroup},t.prototype.init=function(){this.addDestroyableEventListener(this.columnOrGroup,r.Column.EVENT_LEFT_CHANGED,this.onLeftChanged.bind(this)),this.setLeftFirstTime()},t.prototype.setLeftFirstTime=function(){var e=this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation(),t=n.Utils.exists(this.columnOrGroup.getOldLeft());this.beans.columnAnimationService.isActive()&&t&&!e?this.animateInLeft():this.onLeftChanged()},t.prototype.animateInLeft=function(){var e=this,t=this.getColumnOrGroup().getLeft(),o=this.getColumnOrGroup().getOldLeft();this.setLeft(o),this.actualLeft=t,this.beans.columnAnimationService.executeNextVMTurn(function(){e.actualLeft===t&&e.setLeft(t)})},t.prototype.onLeftChanged=function(){this.actualLeft=this.getColumnOrGroup().getLeft(),this.setLeft(this.actualLeft)},t.prototype.setLeft=function(e){n.Utils.exists(e)&&(this.eCell.style.left=e+"px")},t}(s.BeanStub);t.SetLeftFeature=a},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(2),a=o(17),l=function(){function e(){}return e.prototype.formatValue=function(e,t,o,i){var n,r=e.getColDef();n=t&&t.rowPinned&&r.pinnedRowValueFormatter?r.pinnedRowValueFormatter:r.valueFormatter;var s=null;if(n){var a={value:i,node:t,data:t?t.data:null,colDef:e.getColDef(),column:e,api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext()};a.$scope=o,s=this.expressionService.evaluate(n,a)}else if(r.refData)return r.refData[i];return s},i([r.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.Autowired("expressionService"),n("design:type",a.ExpressionService)],e.prototype,"expressionService",void 0),e=i([r.Bean("valueFormatterService")],e)}();t.ValueFormatterService=l},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),s=o(0),a=function(){function e(){}return e.prototype.addDragHandling=function(e){var t=this;e.eDraggableElement.addEventListener("mousedown",function(o){var i=t.gridOptionsWrapper.getDocument(),n=i.querySelector("body");new l(e,o,n)})},i([s.Autowired("gridOptionsWrapper"),n("design:type",r.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e=i([s.Bean("horizontalDragService")],e)}();t.HorizontalDragService=a;var l=function(){function e(e,t,o){this.mouseMove=this.onMouseMove.bind(this),this.mouseUp=this.onMouseUp.bind(this),this.mouseLeave=this.onMouseLeave.bind(this),this.lastDelta=0,this.params=e,this.eDragParent=o,this.dragStartX=t.clientX,this.startEvent=t,this.eDragParent.addEventListener("mousemove",this.mouseMove),this.eDragParent.addEventListener("mouseup",this.mouseUp),this.eDragParent.addEventListener("mouseleave",this.mouseLeave),this.draggingStarted=!1,"number"==typeof e.startAfterPixels&&e.startAfterPixels>0||this.startDragging()}return e.prototype.startDragging=function(){this.draggingStarted=!0,this.oldBodyCursor=this.params.eBody.style.cursor,this.oldParentCursor=this.eDragParent.style.cursor,this.oldMsUserSelect=this.eDragParent.style.msUserSelect,this.oldWebkitUserSelect=this.eDragParent.style.webkitUserSelect,this.params.eBody.style.cursor=this.params.cursor,this.eDragParent.style.cursor=this.params.cursor,this.eDragParent.style.msUserSelect="none",this.eDragParent.style.webkitUserSelect="none",this.params.onDragStart(this.startEvent)},e.prototype.onMouseMove=function(e){var t=e.clientX;if(this.lastDelta=t-this.dragStartX,!this.draggingStarted){Math.abs(this.lastDelta)>=this.params.startAfterPixels&&this.startDragging()}this.draggingStarted&&this.params.onDragging(this.lastDelta,!1)},e.prototype.onMouseUp=function(){this.stopDragging()},e.prototype.onMouseLeave=function(){this.stopDragging()},e.prototype.stopDragging=function(){this.draggingStarted&&(this.params.eBody.style.cursor=this.oldBodyCursor,this.eDragParent.style.cursor=this.oldParentCursor,this.eDragParent.style.msUserSelect=this.oldMsUserSelect,this.eDragParent.style.webkitUserSelect=this.oldWebkitUserSelect,this.params.onDragging(this.lastDelta,!0)),this.eDragParent.removeEventListener("mousemove",this.mouseMove),this.eDragParent.removeEventListener("mouseup",this.mouseUp),this.eDragParent.removeEventListener("mouseleave",this.mouseLeave)},e}()},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(2),a=o(10),l=o(27),p=o(101),u=o(28),d=o(9),c=o(0),h=o(1),f=function(){function e(){}return e.prototype.setBeans=function(e){this.logger=e.create("BalancedColumnTreeBuilder")},e.prototype.createBalancedColumnGroups=function(e,t){var o=new p.ColumnKeyCreator,i=this.recursivelyCreateColumns(e,0,o,t),n=this.findMaxDept(i,0);this.logger.log("Number of levels for grouped columns is "+n);var r=this.balanceColumnTree(i,0,n,o);return this.columnUtils.depthFirstOriginalTreeSearch(r,function(e){e instanceof u.OriginalColumnGroup&&e.setupExpandable()}),{balancedTree:r,treeDept:n}},e.prototype.balanceColumnTree=function(e,t,o,i){var n=this,r=[];return e.forEach(function(e){if(e instanceof u.OriginalColumnGroup){var s=e,a=n.balanceColumnTree(s.getChildren(),t+1,o,i);s.setChildren(a),r.push(s)}else{for(var l=e,p=o-1;p>=t;p--){var d=i.getUniqueKey(null,null),c=n.createMergedColGroupDef(null),h=new u.OriginalColumnGroup(c,d,!0);n.context.wireBean(h),h.setChildren([l]),l=h}r.push(l)}}),r},e.prototype.findMaxDept=function(e,t){for(var o=t,i=0;i=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(0),a=o(61),l=o(81),p=o(3),u=o(19),d=o(2),c=o(7),h=o(1),f=function(e){function t(t,o,i,n,r,s,a){var l=e.call(this,t,o,i,n,r)||this;return l.suppressQuotes=s,l.columnSeparator=a,l.result="",l.lineOpened=!1,l}return i(t,e),t.prototype.prepare=function(e){},t.prototype.addCustomHeader=function(e){e&&(this.result+=e+"\r\n")},t.prototype.addCustomFooter=function(e){e&&(this.result+=e+"\r\n")},t.prototype.onNewHeaderGroupingRow=function(){return this.lineOpened&&(this.result+="\r\n"),{onColumn:this.onNewHeaderGroupingRowColumn.bind(this)}},t.prototype.onNewHeaderGroupingRowColumn=function(e,t,o){0!=t&&(this.result+=this.columnSeparator),this.result+=e;for(var i=1;i<=o;i++)this.result+=this.columnSeparator+this.putInQuotes("",this.suppressQuotes);this.lineOpened=!0},t.prototype.onNewHeaderRow=function(){return this.lineOpened&&(this.result+="\r\n"),{onColumn:this.onNewHeaderRowColumn.bind(this)}},t.prototype.onNewHeaderRowColumn=function(e,t,o){0!=t&&(this.result+=this.columnSeparator),this.result+=this.putInQuotes(this.extractHeaderValue(e),this.suppressQuotes),this.lineOpened=!0},t.prototype.onNewBodyRow=function(){return this.lineOpened&&(this.result+="\r\n"),{onColumn:this.onNewBodyRowColumn.bind(this)}},t.prototype.onNewBodyRowColumn=function(e,t,o){0!=t&&(this.result+=this.columnSeparator),this.result+=this.putInQuotes(this.extractRowCellValue(e,t,c.Constants.EXPORT_TYPE_CSV,o),this.suppressQuotes),this.lineOpened=!0},t.prototype.putInQuotes=function(e,t){if(t)return e;if(null===e||void 0===e)return'""';var o;return"string"==typeof e?o=e:"function"==typeof e.toString?o=e.toString():(console.warn("unknown value type during csv conversion"),o=""),'"'+o.replace(/"/g,'""')+'"'},t.prototype.parse=function(){return this.result},t}(a.BaseGridSerializingSession);t.CsvSerializingSession=f;var g=function(){function e(){}return e.prototype.export=function(e){if(this.isExportSuppressed())return console.warn("ag-grid: Export canceled. Export is not allowed as per your configuration."),"";var t=this.getMergedParamsAndData(e),o=t.mergedParams,i=t.data,n=o&&o.fileName&&0!==o.fileName.length,r=n?o.fileName:this.getDefaultFileName();return-1===r.indexOf(".")&&(r=r+"."+this.getDefaultFileExtension()),this.downloader.download(r,i,this.getMimeType()),i},e.prototype.getData=function(e){return this.getMergedParamsAndData(e).data},e.prototype.getMergedParamsAndData=function(e){var t=this.mergeDefaultParams(e);return{mergedParams:t,data:this.gridSerializer.serialize(this.createSerializingSession(t),t)}},e.prototype.mergeDefaultParams=function(e){var t=this.gridOptionsWrapper.getDefaultExportParams(),o={};return h._.assign(o,t),h._.assign(o,e),o},n([s.Autowired("downloader"),r("design:type",l.Downloader)],e.prototype,"downloader",void 0),n([s.Autowired("gridSerializer"),r("design:type",a.GridSerializer)],e.prototype,"gridSerializer",void 0),n([s.Autowired("gridOptionsWrapper"),r("design:type",d.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e}();t.BaseCreator=g;var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.exportDataAsCsv=function(e){return this.export(e)},t.prototype.getDataAsCsv=function(e){return this.getData(e)},t.prototype.getMimeType=function(){return"text/csv;charset=utf-8;"},t.prototype.getDefaultFileName=function(){return"export.csv"},t.prototype.getDefaultFileExtension=function(){return"csv"},t.prototype.createSerializingSession=function(e){return new f(this.columnController,this.valueService,this.gridOptionsWrapper,e?e.processCellCallback:null,e?e.processHeaderCallback:null,e&&e.suppressQuotes,e&&e.columnSeparator||",")},t.prototype.isExportSuppressed=function(){return this.gridOptionsWrapper.isSuppressCsvExport()},n([s.Autowired("columnController"),r("design:type",p.ColumnController)],t.prototype,"columnController",void 0),n([s.Autowired("valueService"),r("design:type",u.ValueService)],t.prototype,"valueService",void 0),t=n([s.Bean("csvCreator")],t)}(g);t.CsvCreator=y},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(27),s=o(22),a=o(28),l=o(0),p=o(1),u=o(0),d=function(){function e(){}return e.prototype.createDisplayedGroups=function(e,t,o,i){var n,r,s=this,a=[],l=this.mapOldGroupsById(i);return e.forEach(function(e){for(var i=s.getOriginalPathForColumn(t,e),p=[],u=!r,d=0;d=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(10),a=o(1),l=o(4),p=o(5),u=o(2),d=o(3),c=o(6),h=function(){function e(){this.onMouseUpListener=this.onMouseUp.bind(this),this.onMouseMoveListener=this.onMouseMove.bind(this),this.onTouchEndListener=this.onTouchUp.bind(this),this.onTouchMoveListener=this.onTouchMove.bind(this),this.dragEndFunctions=[],this.dragSources=[]}return e.prototype.init=function(){this.logger=this.loggerFactory.create("DragService")},e.prototype.destroy=function(){this.dragSources.forEach(this.removeListener.bind(this)),this.dragSources.length=0},e.prototype.removeListener=function(e){var t=e.dragSource.eElement,o=e.mouseDownListener;if(t.removeEventListener("mousedown",o),e.touchEnabled){var i=e.touchStartListener;t.removeEventListener("touchstart",i,{passive:!0})}},e.prototype.removeDragSource=function(e){var t=a.Utils.find(this.dragSources,function(t){return t.dragSource===e});t&&(this.removeListener(t),a.Utils.removeFromArray(this.dragSources,t))},e.prototype.setNoSelectToBody=function(e){var t=this.gridOptionsWrapper.getDocument(),o=t.querySelector("body");a.Utils.exists(o)&&a.Utils.addOrRemoveCssClass(o,"ag-body-no-select",e)},e.prototype.addDragSource=function(e,t){void 0===t&&(t=!1);var o=this.onMouseDown.bind(this,e);e.eElement.addEventListener("mousedown",o);var i=null,n=this.gridOptionsWrapper.isSuppressTouch();t&&!n&&(i=this.onTouchStart.bind(this,e),e.eElement.addEventListener("touchstart",i,{passive:!1})),this.dragSources.push({dragSource:e,mouseDownListener:o,touchStartListener:i,touchEnabled:t})},e.prototype.onTouchStart=function(e,t){var o=this;this.currentDragParams=e,this.dragging=!1;var i=t.touches[0];this.touchLastTime=i,this.touchStart=i,t.preventDefault(),e.eElement.addEventListener("touchmove",this.onTouchMoveListener,{passive:!0}),e.eElement.addEventListener("touchend",this.onTouchEndListener,{passive:!0}),e.eElement.addEventListener("touchcancel",this.onTouchEndListener,{passive:!0}),this.dragEndFunctions.push(function(){e.eElement.removeEventListener("touchmove",o.onTouchMoveListener,{passive:!0}),e.eElement.removeEventListener("touchend",o.onTouchEndListener,{passive:!0}),e.eElement.removeEventListener("touchcancel",o.onTouchEndListener,{passive:!0})}),0===e.dragStartPixels&&this.onCommonMove(i,this.touchStart)},e.prototype.onMouseDown=function(e,t){var o=this;if(0===t.button){this.currentDragParams=e,this.dragging=!1,this.mouseEventLastTime=t,this.mouseStartEvent=t;var i=this.gridOptionsWrapper.getDocument();i.addEventListener("mousemove",this.onMouseMoveListener),i.addEventListener("mouseup",this.onMouseUpListener),this.dragEndFunctions.push(function(){i.removeEventListener("mousemove",o.onMouseMoveListener),i.removeEventListener("mouseup",o.onMouseUpListener)}),0===e.dragStartPixels&&this.onMouseMove(t)}},e.prototype.isEventNearStartEvent=function(e,t){var o=a.Utils.exists(this.currentDragParams.dragStartPixels)?this.currentDragParams.dragStartPixels:4;return a.Utils.areEventsNear(e,t,o)},e.prototype.getFirstActiveTouch=function(e){for(var t=0;t=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(2),a=o(3),l=o(11),p=o(4),u=o(10),d=o(5),c=o(0),h=o(0),f=o(0),g=o(0),y=0,v=function(){function e(){this.instanceId=y++,this.consuming=!1}return e.prototype.setBeans=function(e){this.logger=e.create("AlignedGridsService")},e.prototype.init=function(){this.eventService.addEventListener(d.Events.EVENT_COLUMN_MOVED,this.fireColumnEvent.bind(this)),this.eventService.addEventListener(d.Events.EVENT_COLUMN_VISIBLE,this.fireColumnEvent.bind(this)),this.eventService.addEventListener(d.Events.EVENT_COLUMN_PINNED,this.fireColumnEvent.bind(this)),this.eventService.addEventListener(d.Events.EVENT_COLUMN_GROUP_OPENED,this.fireColumnEvent.bind(this)),this.eventService.addEventListener(d.Events.EVENT_COLUMN_RESIZED,this.fireColumnEvent.bind(this)),this.eventService.addEventListener(d.Events.EVENT_BODY_SCROLL,this.fireScrollEvent.bind(this))},e.prototype.fireEvent=function(e){if(!this.consuming){var t=this.gridOptionsWrapper.getAlignedGrids();t&&t.forEach(function(t){if(t.api){var o=t.api.__getAlignedGridService();e(o)}})}},e.prototype.onEvent=function(e){this.consuming=!0,e(),this.consuming=!1},e.prototype.fireColumnEvent=function(e){this.fireEvent(function(t){t.onColumnEvent(e)})},e.prototype.fireScrollEvent=function(e){"horizontal"===e.direction&&this.fireEvent(function(t){t.onScrollEvent(e)})},e.prototype.onScrollEvent=function(e){var t=this;this.onEvent(function(){t.gridPanel.setHorizontalScrollPosition(e.left)})},e.prototype.getMasterColumns=function(e){var t=[];return e.columns?e.columns.forEach(function(e){t.push(e)}):e.column&&t.push(e.column),t},e.prototype.getColumnIds=function(e){var t=[];return e.columns?e.columns.forEach(function(e){t.push(e.getColId())}):e.columns&&t.push(e.column.getColId()),t},e.prototype.onColumnEvent=function(e){var t=this;this.onEvent(function(){switch(e.type){case d.Events.EVENT_COLUMN_MOVED:case d.Events.EVENT_COLUMN_VISIBLE:case d.Events.EVENT_COLUMN_PINNED:case d.Events.EVENT_COLUMN_RESIZED:var o=e;t.processColumnEvent(o);break;case d.Events.EVENT_COLUMN_GROUP_OPENED:var i=e;t.processGroupOpenedEvent(i);break;case d.Events.EVENT_COLUMN_PIVOT_CHANGED:console.warn("ag-Grid: pivoting is not supported with aligned grids. You can only use one of these features at a time in a grid.")}})},e.prototype.processGroupOpenedEvent=function(e){var t,o=e.columnGroup;if(o){var i=o.getGroupId();t=this.columnController.getOriginalColumnGroup(i)}o&&!t||(this.logger.log("onColumnEvent-> processing "+event+" expanded = "+o.isExpanded()),this.columnController.setColumnGroupOpened(t,o.isExpanded()))},e.prototype.processColumnEvent=function(e){var t,o=this,i=e.column;if(i&&(t=this.columnController.getPrimaryColumn(i.getColId())),!i||t){var n=this.getColumnIds(e),r=this.getMasterColumns(e);switch(e.type){case d.Events.EVENT_COLUMN_MOVED:var s=e;this.logger.log("onColumnEvent-> processing "+e.type+" toIndex = "+s.toIndex),this.columnController.moveColumns(n,s.toIndex);break;case d.Events.EVENT_COLUMN_VISIBLE:var a=e;this.logger.log("onColumnEvent-> processing "+e.type+" visible = "+a.visible),this.columnController.setColumnsVisible(n,a.visible);break;case d.Events.EVENT_COLUMN_PINNED:var l=e;this.logger.log("onColumnEvent-> processing "+e.type+" pinned = "+l.pinned),this.columnController.setColumnsPinned(n,l.pinned);break;case d.Events.EVENT_COLUMN_RESIZED:var p=e;r.forEach(function(t){o.logger.log("onColumnEvent-> processing "+e.type+" actualWidth = "+t.getActualWidth()),o.columnController.setColumnWidth(t.getColId(),t.getActualWidth(),p.finished)})}}},i([f.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([f.Autowired("columnController"),n("design:type",a.ColumnController)],e.prototype,"columnController",void 0),i([f.Autowired("gridPanel"),n("design:type",l.GridPanel)],e.prototype,"gridPanel",void 0),i([f.Autowired("eventService"),n("design:type",p.EventService)],e.prototype,"eventService",void 0),i([r(0,h.Qualifier("loggerFactory")),n("design:type",Function),n("design:paramtypes",[u.LoggerFactory]),n("design:returntype",void 0)],e.prototype,"setBeans",null),i([g.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=i([c.Bean("alignedGridsService")],e)}();t.AlignedGridsService=v},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(11),a=o(116),l=function(){function e(){this.p1Tasks=new a.LinkedList,this.p2Tasks=new a.LinkedList,this.ticking=!1}return e.prototype.addP1Task=function(e){this.p1Tasks.add(e),this.schedule()},e.prototype.addP2Task=function(e){this.p2Tasks.add(e),this.schedule()},e.prototype.executeFrame=function(e){for(var t=(new Date).getTime(),o=(new Date).getTime()-t,i=!0,n=e<=0;n||o=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(1),a=o(36),l=o(15),p=o(2),u=o(9),d=o(5),c=o(4),h=o(0),f=o(8),g=o(12),y=function(e){function t(){return e.call(this,t.TEMPLATE)||this}return i(t,e),t.prototype.init=function(e){var t=s._.createIconNoSpan("groupLoading",this.gridOptionsWrapper,null);this.eLoadingIcon.appendChild(t);var o=this.gridOptionsWrapper.getLocaleTextFunc();this.eLoadingText.innerText=o("loadingOoo","Loading")},t.prototype.refresh=function(e){return!1},t.TEMPLATE='
    \n \n \n
    ',n([h.Autowired("gridOptionsWrapper"),r("design:type",p.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([g.RefSelector("eLoadingIcon"),r("design:type",HTMLElement)],t.prototype,"eLoadingIcon",void 0),n([g.RefSelector("eLoadingText"),r("design:type",HTMLElement)],t.prototype,"eLoadingText",void 0),t}(f.Component);t.LoadingCellRenderer=y;var v=function(e){function t(t,o,i,n,r,s,a,l,p){var u=e.call(this)||this;return u.eAllRowContainers=[],u.active=!0,u.columnRefreshPending=!1,u.cellComps={},u.createSecondPassFuncs=[],u.removeFirstPassFuncs=[],u.removeSecondPassFuncs=[],u.initialised=!1,u.parentScope=t,u.beans=a,u.bodyContainerComp=o,u.pinnedLeftContainerComp=i,u.pinnedRightContainerComp=n,u.fullWidthContainerComp=r,u.rowNode=s,u.rowIsEven=u.rowNode.rowIndex%2==0,u.paginationPage=u.beans.paginationProxy.getCurrentPage(),u.useAnimationFrameForCreate=p,u.setAnimateFlags(l),u}return i(t,e),t.prototype.init=function(){var e=this;this.rowFocused=this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex,this.rowNode.rowPinned),this.scope=this.createChildScopeOrNull(this.rowNode.data),this.setupRowContainers(),this.addListeners(),this.slideRowIn&&this.createSecondPassFuncs.push(function(){e.onTopChanged()}),this.fadeRowIn&&this.createSecondPassFuncs.push(function(){e.eAllRowContainers.forEach(function(e){return s._.removeCssClass(e,"ag-opacity-zero")})}),this.executeProcessRowPostCreateFunc()},t.prototype.createTemplate=function(e,t){void 0===t&&(t=null);var o=[],i=this.rowNode.rowHeight,n=this.getInitialRowClasses(t).join(" "),r=this.rowNode.id,s=this.preProcessStylesFromGridOptions(),a=this.getRowBusinessKey(),l=this.getInitialRowTopStyle();return o.push("'),o.push(e),o.push("
    "),o.join("")},t.prototype.getCellForCol=function(e){var t=this.cellComps[e.getColId()];return t?t.getHtmlElement():null},t.prototype.afterFlush=function(){this.initialised||(this.initialised=!0,this.executeProcessRowPostCreateFunc())},t.prototype.executeProcessRowPostCreateFunc=function(){var e=this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();if(e){e({eRow:this.eBodyRow,ePinnedLeftRow:this.ePinnedLeftRow,ePinnedRightRow:this.ePinnedRightRow,node:this.rowNode,api:this.beans.gridOptionsWrapper.getApi(),rowIndex:this.rowNode.rowIndex,addRenderedRowListener:this.addEventListener.bind(this),columnApi:this.beans.gridOptionsWrapper.getColumnApi(),context:this.beans.gridOptionsWrapper.getContext()})}},t.prototype.getInitialRowTopStyle=function(){var e="";if(!this.beans.forPrint&&!this.beans.gridOptionsWrapper.isAutoHeight()){var t=this.slideRowIn?this.roundRowTopToBounds(this.rowNode.oldRowTop):this.rowNode.rowTop;e="top: "+this.applyPixelOffset(t)+"px; "}return e},t.prototype.getRowBusinessKey=function(){if("function"==typeof this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc()){return this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc()(this.rowNode)}},t.prototype.lazyCreateCells=function(e,t){if(this.active){var o=this.createCells(e);t.innerHTML=o.template,this.callAfterRowAttachedOnCells(o.cellComps,t)}},t.prototype.createRowContainer=function(e,t,o){var i,n=this;i=this.useAnimationFrameForCreate?{cellComps:[],template:""}:this.createCells(t);var r=this.createTemplate(i.template);e.appendRowTemplate(r,function(){var r=e.getRowElement(n.getCompId());n.afterRowAttached(e,r),o(r),n.useAnimationFrameForCreate?n.beans.taskQueue.addP1Task(n.lazyCreateCells.bind(n,t,r)):n.callAfterRowAttachedOnCells(i.cellComps,r)})},t.prototype.createChildScopeOrNull=function(e){if(this.beans.gridOptionsWrapper.isAngularCompileRows()){var t=this.parentScope.$new();return t.data=e,t.rowNode=this.rowNode,t.context=this.beans.gridOptionsWrapper.getContext(),t}return null},t.prototype.setupRowStub=function(){this.fullWidthRow=!0,this.fullWidthRowEmbedded=this.beans.gridOptionsWrapper.isEmbedFullWidthRows(),this.createFullWidthRows(t.LOADING_CELL_RENDERER)},t.prototype.setupRowContainers=function(){var e=this.beans.gridOptionsWrapper.getIsFullWidthCellFunc(),t=!!e&&e(this.rowNode),o=this.rowNode.group&&this.beans.gridOptionsWrapper.isGroupUseEntireRow();this.rowNode.stub?this.setupRowStub():t?this.setupFullWidthContainers():o?this.setupFullWidthGroupContainers():this.setupNormalRowContainers()},t.prototype.setupFullWidthContainers=function(){this.fullWidthRow=!0,this.fullWidthRowEmbedded=this.beans.gridOptionsWrapper.isEmbedFullWidthRows(),this.createFullWidthRows(t.FULL_WIDTH_CELL_RENDERER)},t.prototype.setupFullWidthGroupContainers=function(){this.fullWidthRow=!0,this.fullWidthRowEmbedded=this.beans.gridOptionsWrapper.isEmbedFullWidthRows(),this.createFullWidthRows(t.GROUP_ROW_RENDERER)},t.prototype.setupNormalRowContainers=function(){var e=this,t=this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);if(this.createRowContainer(this.bodyContainerComp,t,function(t){return e.eBodyRow=t}),!this.beans.forPrint){var o=this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode),i=this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);this.createRowContainer(this.pinnedRightContainerComp,i,function(t){return e.ePinnedRightRow=t}),this.createRowContainer(this.pinnedLeftContainerComp,o,function(t){return e.ePinnedLeftRow=t})}},t.prototype.createFullWidthRows=function(e){var t=this;this.fullWidthRowEmbedded?(this.createFullWidthRowContainer(this.bodyContainerComp,null,null,e,function(e,o){t.eFullWidthRowBody=e,t.fullWidthRowComponentBody=o}),this.createFullWidthRowContainer(this.pinnedLeftContainerComp,u.Column.PINNED_LEFT,"ag-cell-last-left-pinned",e,function(e,o){t.eFullWidthRowLeft=e,t.fullWidthRowComponentLeft=o}),this.createFullWidthRowContainer(this.pinnedRightContainerComp,u.Column.PINNED_RIGHT,"ag-cell-first-right-pinned",e,function(e,o){t.eFullWidthRowRight=e,t.fullWidthRowComponentRight=o})):this.createFullWidthRowContainer(this.fullWidthContainerComp,null,null,e,function(e,o){t.eFullWidthRow=e,t.fullWidthRowComponent=o,t.beans.forPrint||t.addMouseWheelListenerToFullWidthRow()})},t.prototype.addMouseWheelListenerToFullWidthRow=function(){var e=this.beans.gridPanel.genericMouseWheelListener.bind(this.beans.gridPanel);this.addDestroyableEventListener(this.eFullWidthRow,"mousewheel",e),this.addDestroyableEventListener(this.eFullWidthRow,"DOMMouseScroll",e)},t.prototype.setAnimateFlags=function(e){if(e){var t=s._.exists(this.rowNode.oldRowTop);this.slideRowIn=t,this.fadeRowIn=!t}else this.slideRowIn=!1,this.fadeRowIn=!1},t.prototype.isEditing=function(){return!1},t.prototype.stopRowEditing=function(e){this.stopEditing(e)},t.prototype.isFullWidth=function(){return this.fullWidthRow},t.prototype.addListeners=function(){this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_HEIGHT_CHANGED,this.onRowHeightChanged.bind(this)),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_ROW_SELECTED,this.onRowSelected.bind(this)),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_ROW_INDEX_CHANGED,this.onRowIndexChanged.bind(this)),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_TOP_CHANGED,this.onTopChanged.bind(this)),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_EXPANDED_CHANGED,this.onExpandedChanged.bind(this)),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_DATA_CHANGED,this.onRowNodeDataChanged.bind(this));var e=this.beans.eventService;this.addDestroyableEventListener(e,d.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this)),this.addDestroyableEventListener(e,d.Events.EVENT_VIRTUAL_COLUMNS_CHANGED,this.onVirtualColumnsChanged.bind(this)),this.addDestroyableEventListener(e,d.Events.EVENT_COLUMN_RESIZED,this.onColumnResized.bind(this)),this.addDestroyableEventListener(e,d.Events.EVENT_CELL_FOCUSED,this.onCellFocusChanged.bind(this)),this.addDestroyableEventListener(e,d.Events.EVENT_PAGINATION_CHANGED,this.onPaginationChanged.bind(this)),this.addDestroyableEventListener(e,d.Events.EVENT_GRID_COLUMNS_CHANGED,this.onGridColumnsChanged.bind(this))},t.prototype.onGridColumnsChanged=function(){var e=Object.keys(this.cellComps);this.removeRenderedCells(e)},t.prototype.onRowNodeDataChanged=function(e){this.forEachCellComp(function(t){return t.refreshCell({suppressFlash:!e.update,newData:!e.update})}),this.onRowSelected(),this.postProcessStylesFromGridOptions(),this.postProcessClassesFromGridOptions()},t.prototype.onExpandedChanged=function(){if(this.rowNode.group&&!this.rowNode.footer){var e=this.rowNode.expanded;this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-group-expanded",e)}),this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-group-contracted",!e)})}},t.prototype.onDisplayedColumnsChanged=function(){this.fullWidthRow||this.refreshCells()},t.prototype.destroyFullWidthComponents=function(){this.fullWidthRowComponent&&(this.fullWidthRowComponent.destroy&&this.fullWidthRowComponent.destroy(),this.fullWidthRowComponent=null),this.fullWidthRowComponentBody&&(this.fullWidthRowComponentBody.destroy&&this.fullWidthRowComponentBody.destroy(),this.fullWidthRowComponent=null),this.fullWidthRowComponentLeft&&(this.fullWidthRowComponentLeft.destroy&&this.fullWidthRowComponentLeft.destroy(),this.fullWidthRowComponentLeft=null),this.fullWidthRowComponentRight&&(this.fullWidthRowComponentRight.destroy&&this.fullWidthRowComponentRight.destroy(),this.fullWidthRowComponent=null)},t.prototype.getContainerForCell=function(e){switch(e){case u.Column.PINNED_LEFT:return this.ePinnedLeftRow;case u.Column.PINNED_RIGHT:return this.ePinnedRightRow;default:return this.eBodyRow}},t.prototype.onVirtualColumnsChanged=function(){this.fullWidthRow||this.refreshCells()},t.prototype.onColumnResized=function(){this.fullWidthRow||this.refreshCells()},t.prototype.refreshCells=function(){if(this.beans.gridOptionsWrapper.isSuppressAnimationFrame())this.refreshCellsInAnimationFrame();else{if(this.columnRefreshPending)return;this.beans.taskQueue.addP1Task(this.refreshCellsInAnimationFrame.bind(this))}},t.prototype.refreshCellsInAnimationFrame=function(){if(this.active){this.columnRefreshPending=!1;var e=this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode),t=this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode),o=this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);this.insertCellsIntoContainer(this.eBodyRow,e),this.insertCellsIntoContainer(this.ePinnedLeftRow,t),this.insertCellsIntoContainer(this.ePinnedRightRow,o);var i=Object.keys(this.cellComps);e.forEach(function(e){return s._.removeFromArray(i,e.getId())}),t.forEach(function(e){return s._.removeFromArray(i,e.getId())}),o.forEach(function(e){return s._.removeFromArray(i,e.getId())}),i=s._.filter(i,this.isCellEligibleToBeRemoved.bind(this)),this.removeRenderedCells(i)}},t.prototype.removeRenderedCells=function(e){var t=this;e.forEach(function(e){var o=t.cellComps[e];s._.missing(o)||(o.detach(),o.destroy(),t.cellComps[e]=null)})},t.prototype.isCellEligibleToBeRemoved=function(e){var t=this.beans.columnController.getAllDisplayedColumns(),o=this.cellComps[e];if(!o)return!0;if(this.isCellInWrongRow(o))return!0;var i=o.isEditing(),n=this.beans.focusedCellController.isCellFocused(o.getGridCell());if(i||n){var r=o.getColumn();return!(t.indexOf(r)>=0)}return!0},t.prototype.ensureCellInCorrectContainer=function(e){var t=e.getHtmlElement(),o=e.getColumn(),i=o.getPinned(),n=this.getContainerForCell(i),r=e.getParentRow();r!==n&&(r&&r.removeChild(t),n.appendChild(t),e.setParentRow(n))},t.prototype.isCellInWrongRow=function(e){var t=e.getColumn(),o=this.getContainerForCell(t.getPinned());return e.getParentRow()!==o},t.prototype.insertCellsIntoContainer=function(e,t){var o=this;if(e){var i=[],n=[];t.forEach(function(t){var r=t.getId(),s=o.cellComps[r];s?o.ensureCellInCorrectContainer(s):o.createNewCell(t,e,i,n)}),i.length>0&&(s._.appendHtml(e,i.join("")),this.callAfterRowAttachedOnCells(n,e))}},t.prototype.addDomData=function(e){var o=this.beans.gridOptionsWrapper;o.setDomData(e,t.DOM_DATA_KEY_RENDERED_ROW,this),this.addDestroyFunc(function(){o.setDomData(e,t.DOM_DATA_KEY_RENDERED_ROW,null)})},t.prototype.createNewCell=function(e,t,o,i){var n=new a.CellComp(this.scope,this.beans,e,this.rowNode,this),r=n.getCreateTemplate();o.push(r),i.push(n),this.cellComps[e.getId()]=n,n.setParentRow(t)},t.prototype.onMouseEvent=function(e,t){switch(e){case"dblclick":this.onRowDblClick(t);break;case"click":this.onRowClick(t)}},t.prototype.createRowEvent=function(e,t){return{type:e,node:this.rowNode,data:this.rowNode.data,rowIndex:this.rowNode.rowIndex,rowPinned:this.rowNode.rowPinned,context:this.beans.gridOptionsWrapper.getContext(),api:this.beans.gridOptionsWrapper.getApi(),columnApi:this.beans.gridOptionsWrapper.getColumnApi(),event:t}},t.prototype.createRowEventWithSource=function(e,t){var o=this.createRowEvent(e,t);return o.source=this,o},t.prototype.onRowDblClick=function(e){var t=this.createRowEventWithSource(d.Events.EVENT_ROW_DOUBLE_CLICKED,e);this.beans.eventService.dispatchEvent(t)},t.prototype.onRowClick=function(e){var t=this.createRowEventWithSource(d.Events.EVENT_ROW_CLICKED,e);this.beans.eventService.dispatchEvent(t);var o=e.ctrlKey||e.metaKey,i=e.shiftKey;this.rowNode.group||this.rowNode.rowPinned||this.beans.gridOptionsWrapper.isRowSelection()&&(this.beans.gridOptionsWrapper.isSuppressRowClickSelection()||(this.rowNode.isSelected()?o?this.beans.gridOptionsWrapper.isRowDeselection()&&this.rowNode.setSelectedParams({newValue:!1}):this.rowNode.setSelectedParams({newValue:!0,clearSelection:!0}):this.rowNode.setSelectedParams({newValue:!0,clearSelection:!o,rangeSelect:i})))},t.prototype.createFullWidthRowContainer=function(e,t,o,i,n){var r=this,a=this.createTemplate("",o);e.appendRowTemplate(a,function(){var o=e.getRowElement(r.getCompId()),a=r.createFullWidthParams(o,t),l=r.beans.componentResolver.createAgGridComponent(null,a,i),p=s._.ensureElement(l.getGui());o.appendChild(p),r.afterRowAttached(e,o),n(o,l),r.angular1Compile(o)})},t.prototype.angular1Compile=function(e){this.scope&&this.beans.$compile(e)(this.scope)},t.prototype.createFullWidthParams=function(e,t){return{fullWidth:!0,data:this.rowNode.data,node:this.rowNode,value:this.rowNode.key,$scope:this.scope,rowIndex:this.rowNode.rowIndex,api:this.beans.gridOptionsWrapper.getApi(),columnApi:this.beans.gridOptionsWrapper.getColumnApi(),context:this.beans.gridOptionsWrapper.getContext(),eGridCell:e,eParentOfValue:e,pinned:t,addRenderedRowListener:this.addEventListener.bind(this)}},t.prototype.getInitialRowClasses=function(e){var t=[];return s._.exists(e)&&t.push(e),t.push("ag-row"),t.push(this.rowFocused?"ag-row-focus":"ag-row-no-focus"),this.fadeRowIn&&t.push("ag-opacity-zero"),this.rowIsEven?t.push("ag-row-even"):t.push("ag-row-odd"),this.beans.gridOptionsWrapper.isAnimateRows()?t.push("ag-row-animation"):t.push("ag-row-no-animation"),this.rowNode.isSelected()&&t.push("ag-row-selected"),this.rowNode.group?(t.push("ag-row-group"),t.push("ag-row-level-"+this.rowNode.level),this.rowNode.footer&&t.push("ag-row-footer")):this.rowNode.parent?t.push("ag-row-level-"+(this.rowNode.parent.level+1)):t.push("ag-row-level-0"),this.rowNode.stub&&t.push("ag-row-stub"),this.fullWidthRow&&t.push("ag-full-width-row"),this.rowNode.group&&!this.rowNode.footer&&t.push(this.rowNode.expanded?"ag-row-group-expanded":"ag-row-group-contracted"),s._.pushAll(t,this.processClassesFromGridOptions()),t},t.prototype.stopEditing=function(e){if(void 0===e&&(e=!1),this.forEachCellComp(function(t){t.stopEditing(e)}),this.editingRow){if(!e){var t=this.createRowEvent(d.Events.EVENT_ROW_VALUE_CHANGED);this.beans.eventService.dispatchEvent(t)}this.setEditingRow(!1)}},t.prototype.setEditingRow=function(e){this.editingRow=e,this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-editing",e)});var t=e?this.createRowEvent(d.Events.EVENT_ROW_EDITING_STARTED):this.createRowEvent(d.Events.EVENT_ROW_EDITING_STOPPED);this.beans.eventService.dispatchEvent(t)},t.prototype.startRowEditing=function(e,t,o){void 0===e&&(e=null),void 0===t&&(t=null),void 0===o&&(o=null),this.editingRow||(this.forEachCellComp(function(i){var n=i===o;n?i.startEditingIfEnabled(e,t,n):i.startEditingIfEnabled(null,null,n)}),this.setEditingRow(!0))},t.prototype.forEachCellComp=function(e){s._.iterateObject(this.cellComps,function(t,o){o&&e(o)})},t.prototype.postProcessClassesFromGridOptions=function(){var e=this,t=this.processClassesFromGridOptions();t&&t.forEach(function(t){e.eAllRowContainers.forEach(function(e){return s._.addCssClass(e,t)})})},t.prototype.processClassesFromGridOptions=function(){var e=[],t=function(t){"string"==typeof t?e.push(t):Array.isArray(t)&&t.forEach(function(t){return e.push(t)})},o=this.beans.gridOptionsWrapper.getRowClass();if(o){if("function"==typeof o)return void console.warn("ag-Grid: rowClass should not be a function, please use getRowClass instead");t(o)}var i=this.beans.gridOptionsWrapper.getRowClassFunc();if(i){t(i({node:this.rowNode,data:this.rowNode.data,rowIndex:this.rowNode.rowIndex,context:this.beans.gridOptionsWrapper.getContext(),api:this.beans.gridOptionsWrapper.getApi()}))}return e},t.prototype.preProcessStylesFromGridOptions=function(){var e=this.processStylesFromGridOptions();return s._.cssStyleObjectToMarkup(e)},t.prototype.postProcessStylesFromGridOptions=function(){var e=this.processStylesFromGridOptions();this.eAllRowContainers.forEach(function(t){return s._.addStylesToElement(t,e)})},t.prototype.processStylesFromGridOptions=function(){var e=this.beans.gridOptionsWrapper.getRowStyle();if(e&&"function"==typeof e)return void console.log("ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead");var t,o=this.beans.gridOptionsWrapper.getRowStyleFunc();if(o){t=o({data:this.rowNode.data,node:this.rowNode,api:this.beans.gridOptionsWrapper.getApi(),context:this.beans.gridOptionsWrapper.getContext(),$scope:this.scope})}return s._.assign({},e,t)},t.prototype.createCells=function(e){var t=this,o=[],i=[];return e.forEach(function(e){var n=new a.CellComp(t.scope,t.beans,e,t.rowNode,t),r=n.getCreateTemplate();o.push(r),i.push(n),t.cellComps[e.getId()]=n}),{template:o.join(""),cellComps:i}},t.prototype.onRowSelected=function(){var e=this.rowNode.isSelected();this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-selected",e)})},t.prototype.callAfterRowAttachedOnCells=function(e,t){var o=this;e.forEach(function(e){e.setParentRow(t),e.afterAttached(),o.editingRow&&e.startEditingIfEnabled()})},t.prototype.afterRowAttached=function(e,t){var o=this;this.addDomData(t),this.removeSecondPassFuncs.push(function(){e.removeRowElement(t)}),this.removeFirstPassFuncs.push(function(){if(s._.exists(o.rowNode.rowTop)){var e=o.roundRowTopToBounds(o.rowNode.rowTop);o.setRowTop(e)}else s._.addCssClass(t,"ag-opacity-zero")}),this.eAllRowContainers.push(t),this.useAnimationFrameForCreate?this.beans.taskQueue.addP1Task(this.addHoverFunctionality.bind(this,t)):this.addHoverFunctionality(t)},t.prototype.addHoverFunctionality=function(e){var t=this;this.active&&(this.addDestroyableEventListener(e,"mouseenter",function(){return t.rowNode.onMouseEnter()}),this.addDestroyableEventListener(e,"mouseleave",function(){return t.rowNode.onMouseLeave()}),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_MOUSE_ENTER,function(){s._.addCssClass(e,"ag-row-hover")}),this.addDestroyableEventListener(this.rowNode,l.RowNode.EVENT_MOUSE_LEAVE,function(){s._.removeCssClass(e,"ag-row-hover")}))},t.prototype.roundRowTopToBounds=function(e){var t=this.beans.gridPanel.getVerticalPixelRange(),o=t.top-100,i=t.bottom+100;return ei?i:e},t.prototype.onRowHeightChanged=function(){if(s._.exists(this.rowNode.rowHeight)){var e=this.rowNode.rowHeight+"px";this.eAllRowContainers.forEach(function(t){return t.style.height=e})}},t.prototype.addEventListener=function(e,o){"renderedRowRemoved"===e&&(e=t.EVENT_ROW_REMOVED,console.warn("ag-Grid: Since version 11, event renderedRowRemoved is now called "+t.EVENT_ROW_REMOVED)),this.renderedRowEventService||(this.renderedRowEventService=new c.EventService),this.renderedRowEventService.addEventListener(e,o)},t.prototype.removeEventListener=function(e,o){"renderedRowRemoved"===e&&(e=t.EVENT_ROW_REMOVED,console.warn("ag-Grid: Since version 11, event renderedRowRemoved is now called "+t.EVENT_ROW_REMOVED)),this.renderedRowEventService.removeEventListener(e,o)},t.prototype.destroyScope=function(){this.scope&&(this.scope.$destroy(),this.scope=null)},t.prototype.destroy=function(t){if(void 0===t&&(t=!1),e.prototype.destroy.call(this),this.destroyScope(),this.active=!1,this.destroyFullWidthComponents(),t)this.removeFirstPassFuncs.forEach(function(e){return e()}),this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));else{this.destroyContainingCells();this.getAndClearDelayedDestroyFunctions().forEach(function(e){return e()})}var o=this.createRowEvent(d.Events.EVENT_VIRTUAL_ROW_REMOVED);this.renderedRowEventService&&this.renderedRowEventService.dispatchEvent(o),this.beans.eventService.dispatchEvent(o)},t.prototype.destroyContainingCells=function(){this.forEachCellComp(function(e){return e.destroy()}),this.destroyFullWidthComponents()},t.prototype.getAndClearDelayedDestroyFunctions=function(){var e=this.removeSecondPassFuncs;return this.removeSecondPassFuncs=[],e},t.prototype.onCellFocusChanged=function(){var e=this.beans.focusedCellController.isRowFocused(this.rowNode.rowIndex,this.rowNode.rowPinned);e!==this.rowFocused&&(this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-focus",e)}),this.eAllRowContainers.forEach(function(t){return s._.addOrRemoveCssClass(t,"ag-row-no-focus",!e)}),this.rowFocused=e),!e&&this.editingRow&&this.stopEditing(!1)},t.prototype.onPaginationChanged=function(){var e=this.beans.paginationProxy.getCurrentPage();this.paginationPage!==e&&(this.paginationPage=e,this.onTopChanged())},t.prototype.onTopChanged=function(){this.beans.forPrint||this.beans.gridOptionsWrapper.isAutoHeight()||this.setRowTop(this.rowNode.rowTop)},t.prototype.applyPixelOffset=function(e){return this.rowNode.isRowPinned()?e:e-this.beans.paginationProxy.getPixelOffset()},t.prototype.setRowTop=function(e){if(s._.exists(e)){var t=this.applyPixelOffset(e),o=t+"px";this.eAllRowContainers.forEach(function(e){return e.style.top=o})}},t.prototype.getAndClearNextVMTurnFunctions=function(){var e=this.createSecondPassFuncs;return this.createSecondPassFuncs=[],e},t.prototype.getRowNode=function(){return this.rowNode},t.prototype.getRenderedCellForColumn=function(e){return this.cellComps[e.getColId()]},t.prototype.onRowIndexChanged=function(){this.onCellFocusChanged(),this.updateRowIndexes()},t.prototype.updateRowIndexes=function(){var e=this.rowNode.getRowIndexString(),t=this.rowNode.rowIndex%2==0,o=this.rowIsEven!==t;o&&(this.rowIsEven=t),this.eAllRowContainers.forEach(function(i){i.setAttribute("index",e),o&&(s._.addOrRemoveCssClass(i,"ag-row-even",t),s._.addOrRemoveCssClass(i,"ag-row-odd",!t))})},t.prototype.ensureDomOrder=function(){var e=this.getBodyRowElement();e&&this.bodyContainerComp.ensureDomOrder(e);var t=this.getPinnedLeftRowElement();t&&this.pinnedLeftContainerComp.ensureDomOrder(t);var o=this.getPinnedRightRowElement();o&&this.pinnedRightContainerComp.ensureDomOrder(o);var i=this.getFullWidthRowElement();i&&this.fullWidthContainerComp.ensureDomOrder(i)},t.prototype.getPinnedLeftRowElement=function(){return this.ePinnedLeftRow?this.ePinnedLeftRow:this.eFullWidthRowLeft},t.prototype.getPinnedRightRowElement=function(){return this.ePinnedRightRow?this.ePinnedRightRow:this.eFullWidthRowRight},t.prototype.getBodyRowElement=function(){return this.eBodyRow?this.eBodyRow:this.eFullWidthRowBody},t.prototype.getFullWidthRowElement=function(){return this.eFullWidthRow},t.EVENT_ROW_REMOVED="rowRemoved",t.DOM_DATA_KEY_RENDERED_ROW="renderedRow",t.FULL_WIDTH_CELL_RENDERER="fullWidthCellRenderer",t.GROUP_ROW_RENDERER="groupRowRenderer",t.LOADING_CELL_RENDERER="loadingCellRenderer",t}(f.Component);t.RowComp=v},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(0),a=function(){function e(){this.templateCache={},this.waitingCallbacks={}}return e.prototype.getTemplate=function(e,t){var o=this.templateCache[e];if(o)return o;var i=this.waitingCallbacks[e],n=this;if(!i){i=[],this.waitingCallbacks[e]=i;var r=new XMLHttpRequest;r.onload=function(){n.handleHttpResult(this,e)},r.open("GET",e),r.send()}return t&&i.push(t),null},e.prototype.handleHttpResult=function(e,t){if(200!==e.status||null===e.response)return void console.warn("Unable to get template error "+e.status+" - "+t);this.templateCache[t]=e.response||e.responseText;for(var o=this.waitingCallbacks[t],i=0;i=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(12),l=o(0),p=o(2),u=o(1),d={equals:"Equals",notEqual:"Not equal",lessThan:"Less than",greaterThan:"Greater than",inRange:"In range",lessThanOrEqual:"Less than or equals",greaterThanOrEqual:"Greater than or equals",filterOoo:"Filter...",contains:"Contains",notContains:"Not contains",startsWith:"Starts with",endsWith:"Ends with",searchOoo:"Search...",selectAll:"Select All",applyFilter:"Apply Filter",clearFilter:"Clear Filter"},c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.init=function(e){this.filterParams=e,this.defaultFilter=this.filterParams.defaultOption,this.filterParams.filterOptions&&this.filterParams.filterOptions.lastIndexOf(t.EQUALS)<0&&(this.defaultFilter=this.filterParams.filterOptions[0]),this.customInit(),this.filter=this.defaultFilter,this.clearActive=!0===e.clearButton,this.applyActive=!0===e.applyButton||!0===e.apply,this.newRowsActionKeep="keep"===e.newRowsAction,this.setTemplate(this.generateTemplate()),u._.setVisible(this.eApplyButton,this.applyActive),this.applyActive&&this.addDestroyableEventListener(this.eApplyButton,"click",this.filterParams.filterChangedCallback),u._.setVisible(this.eClearButton,this.clearActive),this.clearActive&&this.addDestroyableEventListener(this.eClearButton,"click",this.onClearButton.bind(this));var o=this.applyActive||this.clearActive;u._.setVisible(this.eButtonsPanel,o),this.instantiate(this.context),this.initialiseFilterBodyUi(),this.refreshFilterBodyUi()},t.prototype.onClearButton=function(){this.setModel(null),this.onFilterChanged()},t.prototype.floatingFilter=function(e){if(""!==e){var t=this.modelFromFloatingFilter(e);this.setModel(t)}else this.resetState();this.onFilterChanged()},t.prototype.onNewRowsLoaded=function(){this.newRowsActionKeep||this.resetState()},t.prototype.getModel=function(){return this.isFilterActive()?this.serialize():null},t.prototype.getNullableModel=function(){return this.serialize()},t.prototype.setModel=function(e){e?this.parse(e):this.resetState(),this.refreshFilterBodyUi()},t.prototype.doOnFilterChanged=function(e){void 0===e&&(e=!1),this.filterParams.filterModifiedCallback();var t=this.applyActive&&e,o=!this.applyActive,i=o||t;return i&&this.filterParams.filterChangedCallback(),this.refreshFilterBodyUi(),i},t.prototype.onFilterChanged=function(){this.doOnFilterChanged()},t.prototype.onFloatingFilterChanged=function(e){var t=e;return this.setModel(t?t.model:null),this.doOnFilterChanged(!!t&&t.apply)},t.prototype.generateFilterHeader=function(){return""},t.prototype.generateTemplate=function(){var e=this.translate.bind(this),t=this.bodyTemplate();return"
    \n "+this.generateFilterHeader()+"\n "+t+'\n
    \n \n \n
    \n
    "},t.prototype.translate=function(e){return this.gridOptionsWrapper.getLocaleTextFunc()(e,d[e])},t.EQUALS="equals",t.NOT_EQUAL="notEqual",t.LESS_THAN="lessThan",t.LESS_THAN_OR_EQUAL="lessThanOrEqual",t.GREATER_THAN="greaterThan",t.GREATER_THAN_OR_EQUAL="greaterThanOrEqual",t.IN_RANGE="inRange",t.CONTAINS="contains",t.NOT_CONTAINS="notContains",t.STARTS_WITH="startsWith",t.ENDS_WITH="endsWith",n([a.QuerySelector("#applyPanel"),r("design:type",HTMLElement)],t.prototype,"eButtonsPanel",void 0),n([a.QuerySelector("#applyButton"),r("design:type",HTMLElement)],t.prototype,"eApplyButton",void 0),n([a.QuerySelector("#clearButton"),r("design:type",HTMLElement)],t.prototype,"eClearButton",void 0),n([l.Autowired("context"),r("design:type",l.Context)],t.prototype,"context",void 0),n([l.Autowired("gridOptionsWrapper"),r("design:type",p.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),t}(s.Component);t.BaseFilter=c;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.init=function(t){e.prototype.init.call(this,t),this.addDestroyableEventListener(this.eTypeSelector,"change",this.onFilterTypeChanged.bind(this))},t.prototype.customInit=function(){this.defaultFilter||(this.defaultFilter=this.getDefaultType())},t.prototype.generateFilterHeader=function(){var e=this,t=this.getApplicableFilterTypes(),o=this.filterParams.filterOptions,i=o||t,n=i.map(function(t){return'"}),r=1==n.length?"disabled":"";return n.length<=0?"":'
    \n \n
    "},t.prototype.initialiseFilterBodyUi=function(){this.setFilterType(this.filter)},t.prototype.onFilterTypeChanged=function(){this.filter=this.eTypeSelector.value,this.refreshFilterBodyUi(),this.onFilterChanged()},t.prototype.isFilterActive=function(){var e=this.filterValues();if(this.filter===c.IN_RANGE){var t=e;return null!=t[0]&&null!=t[1]}return null!=e},t.prototype.setFilterType=function(e){this.filter=e,this.eTypeSelector.value=e},n([a.QuerySelector("#filterType"),r("design:type",HTMLSelectElement)],t.prototype,"eTypeSelector",void 0),t}(c);t.ComparableBaseFilter=h;var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.nullComparator=function(e){var t=this;return function(o,i){if(null==i){var n=t.translateNull(e);if(t.filter===c.EQUALS)return n?0:1;if(t.filter===c.GREATER_THAN)return n?1:-1;if(t.filter===c.GREATER_THAN_OR_EQUAL)return n?1:-1;if(t.filter===c.LESS_THAN_OR_EQUAL)return n?-1:1;if(t.filter===c.LESS_THAN)return n?-1:1;if(t.filter===c.NOT_EQUAL)return n?1:0}return t.comparator()(o,i)}},t.prototype.getDefaultType=function(){return c.EQUALS},t.prototype.translateNull=function(e){var o=e.indexOf("greater")>-1?"greaterThan":e.indexOf("lessThan")>-1?"lessThan":"equals";return this.filterParams.nullComparator&&this.filterParams.nullComparator[o]?this.filterParams.nullComparator[o]:t.DEFAULT_NULL_COMPARATOR[o]},t.prototype.doesFilterPass=function(e){var t=this.filterParams.valueGetter(e.node),o=this.nullComparator(this.filter),i=this.filterValues(),n=Array.isArray(i)?i[0]:i;if(null==n)return!0;var r=o(n,t);if(this.filter===c.EQUALS)return 0===r;if(this.filter===c.GREATER_THAN)return r>0;if(this.filter===c.GREATER_THAN_OR_EQUAL)return r>=0;if(this.filter===c.LESS_THAN_OR_EQUAL)return r<=0;if(this.filter===c.LESS_THAN)return r<0;if(this.filter===c.NOT_EQUAL)return 0!=r;var s=o(i[1],t);if(this.filter===c.IN_RANGE)return this.filterParams.inRangeInclusive?r>=0&&s<=0:r>0&&s<0;throw new Error("Unexpected type of date filter!: "+this.filter)},t.DEFAULT_NULL_COMPARATOR={equals:!1,lessThan:!1,greaterThan:!1},t}(h);t.ScalarBaseFilter=f},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(12),l=o(1),p=o(48),u=o(0),d=o(26),c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.modelFromFloatingFilter=function(e){return{dateFrom:e,dateTo:this.getDateTo(),type:this.filter,filterType:"date"}},t.prototype.getApplicableFilterTypes=function(){return[p.BaseFilter.EQUALS,p.BaseFilter.GREATER_THAN,p.BaseFilter.LESS_THAN,p.BaseFilter.NOT_EQUAL,p.BaseFilter.IN_RANGE]},t.prototype.bodyTemplate=function(){return'
    \n
    \n
    \n
    \n
    \n
    '},t.prototype.initialiseFilterBodyUi=function(){var e={onDateChanged:this.onDateChanged.bind(this)};this.dateToComponent=this.componentRecipes.newDateComponent(e),this.dateFromComponent=this.componentRecipes.newDateComponent(e);var t=l._.ensureElement(this.dateFromComponent.getGui());this.eDateFromPanel.appendChild(t);var o=l._.ensureElement(this.dateToComponent.getGui());this.eDateToPanel.appendChild(o),this.dateFromComponent.afterGuiAttached&&this.dateFromComponent.afterGuiAttached({eComponent:t}),this.dateToComponent.afterGuiAttached&&this.dateToComponent.afterGuiAttached({eComponent:o})},t.prototype.onDateChanged=function(){this.dateFrom=t.removeTimezone(this.dateFromComponent.getDate()),this.dateTo=t.removeTimezone(this.dateToComponent.getDate()),this.onFilterChanged()},t.prototype.refreshFilterBodyUi=function(){var e=this.filter===p.BaseFilter.IN_RANGE;l.Utils.setVisible(this.eDateToPanel,e)},t.prototype.comparator=function(){return this.filterParams.comparator?this.filterParams.comparator:this.defaultComparator.bind(this)},t.prototype.defaultComparator=function(e,t){var o=t;return oe?1:null!=t?0:-1},t.prototype.serialize=function(){return{dateTo:l.Utils.serializeDateToYyyyMmDd(this.dateToComponent.getDate(),"-"),dateFrom:l.Utils.serializeDateToYyyyMmDd(this.dateFromComponent.getDate(),"-"),type:this.filter?this.filter:this.defaultFilter,filterType:"date"}},t.prototype.filterValues=function(){return this.filter!==p.BaseFilter.IN_RANGE?this.dateFromComponent.getDate():[this.dateFromComponent.getDate(),this.dateToComponent.getDate()]},t.prototype.getDateFrom=function(){return l.Utils.serializeDateToYyyyMmDd(this.dateFromComponent.getDate(),"-")},t.prototype.getDateTo=function(){return l.Utils.serializeDateToYyyyMmDd(this.dateToComponent.getDate(),"-")},t.prototype.getFilterType=function(){return this.filter},t.prototype.setDateFrom=function(e){this.dateFrom=l.Utils.parseYyyyMmDdToDate(e,"-"),this.dateFromComponent.setDate(this.dateFrom)},t.prototype.setDateTo=function(e){this.dateTo=l.Utils.parseYyyyMmDdToDate(e,"-"),this.dateToComponent.setDate(this.dateTo)},t.prototype.resetState=function(){this.setDateFrom(null),this.setDateTo(null),this.setFilterType("equals")},t.prototype.parse=function(e){this.setDateFrom(e.dateFrom),this.setDateTo(e.dateTo),this.setFilterType(e.type)},t.prototype.setType=function(e){this.setFilterType(e)},t.removeTimezone=function(e){return e?new Date(e.getFullYear(),e.getMonth(),e.getDate()):null},n([u.Autowired("componentRecipes"),r("design:type",d.ComponentRecipes)],t.prototype,"componentRecipes",void 0),n([a.QuerySelector("#filterDateFromPanel"),r("design:type",HTMLElement)],t.prototype,"eDateFromPanel",void 0),n([a.QuerySelector("#filterDateToPanel"),r("design:type",HTMLElement)],t.prototype,"eDateToPanel",void 0),t}(p.ScalarBaseFilter);t.DateFilter=c;var h=function(e){function t(){return e.call(this,'')||this}return i(t,e),t.prototype.init=function(e){this.eDateInput=this.getGui(),l.Utils.isBrowserChrome()&&(this.eDateInput.type="date"),this.listener=e.onDateChanged,this.addGuiEventListener("input",this.listener)},t.prototype.getDate=function(){return l.Utils.parseYyyyMmDdToDate(this.eDateInput.value,"-")},t.prototype.setDate=function(e){this.eDateInput.value=l.Utils.serializeDateToYyyyMmDd(e,"-")},t}(s.Component);t.DefaultDateComponent=h},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(4),n=o(1),r=function(){function e(e){var t=this;this.destroyFuncs=[],this.touching=!1,this.eventService=new i.EventService,this.eElement=e;var o=this.onTouchStart.bind(this),n=this.onTouchMove.bind(this),r=this.onTouchEnd.bind(this);this.eElement.addEventListener("touchstart",o,{passive:!0}),this.eElement.addEventListener("touchmove",n,{passive:!0}),this.eElement.addEventListener("touchend",r,{passive:!0}),this.destroyFuncs.push(function(){t.eElement.addEventListener("touchstart",o,{passive:!0}),t.eElement.addEventListener("touchmove",n,{passive:!0}),t.eElement.addEventListener("touchend",r,{passive:!0})})}return e.prototype.getActiveTouch=function(e){for(var t=0;t=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(1),a=o(69),l=o(70),p=o(67),u=o(90),d=o(91),c=o(2),h=o(92),f=function(){function e(){this.cellEditorMap={}}return t=e,e.prototype.init=function(){this.cellEditorMap[t.TEXT]=a.TextCellEditor,this.cellEditorMap[t.SELECT]=l.SelectCellEditor,this.cellEditorMap[t.POPUP_TEXT]=u.PopupTextCellEditor,this.cellEditorMap[t.POPUP_SELECT]=d.PopupSelectCellEditor,this.cellEditorMap[t.LARGE_TEXT]=h.LargeTextCellEditor},e.prototype.addCellEditor=function(e,t){this.cellEditorMap[e]=t},e.prototype.createCellEditor=function(e,o){var i;s.Utils.missing(e)?i=this.cellEditorMap[t.TEXT]:"string"==typeof e?(i=this.cellEditorMap[e],s.Utils.missing(i)&&(console.warn("ag-Grid: unable to find cellEditor for key "+e),i=this.cellEditorMap[t.TEXT])):i=e;var n=new i;return this.context.wireBean(n),n.init&&n.init(o),n.isPopup&&n.isPopup()&&(this.gridOptionsWrapper.isFullRowEdit()&&console.warn("ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both - either turn off fullRowEdit, or stop using popup editors."),n=new p.PopupEditorWrapper(n),this.context.wireBean(n),n.init(o)),n},e.TEXT="text",e.SELECT="select",e.POPUP_TEXT="popupText",e.POPUP_SELECT="popupSelect",e.LARGE_TEXT="largeText",i([r.Autowired("context"),n("design:type",r.Context)],e.prototype,"context",void 0),i([r.Autowired("gridOptionsWrapper"),n("design:type",c.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=t=i([r.Bean("cellEditorFactory")],e);var t}();t.CellEditorFactory=f},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(1),a=o(2),l=o(4),p=o(17),u=o(71),d=o(72),c=o(73),h=function(){function e(){this.cellRendererMap={}}return t=e,e.prototype.init=function(){this.cellRendererMap[t.ANIMATE_SLIDE]=u.AnimateSlideCellRenderer,this.cellRendererMap[t.ANIMATE_SHOW_CHANGE]=d.AnimateShowChangeCellRenderer,this.cellRendererMap[t.GROUP]=c.GroupCellRenderer},e.prototype.addCellRenderer=function(e,t){this.cellRendererMap[e]=t},e.prototype.getCellRenderer=function(e){var t=this.cellRendererMap[e];return s.Utils.missing(t)?(console.warn("ag-Grid: unable to find cellRenderer for key "+e),null):t},e.ANIMATE_SLIDE="animateSlide",e.ANIMATE_SHOW_CHANGE="animateShowChange",e.GROUP="group",i([r.Autowired("gridOptionsWrapper"),n("design:type",a.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.Autowired("expressionService"),n("design:type",p.ExpressionService)],e.prototype,"expressionService",void 0),i([r.Autowired("eventService"),n("design:type",l.EventService)],e.prototype,"eventService",void 0),i([r.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),e=t=i([r.Bean("cellRendererFactory")],e);var t}();t.CellRendererFactory=h},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(26),a=o(34),l=o(1),p=function(){function e(){}return e.prototype.useCellRenderer=function(e,t,o){var i=this.componentRecipes.newCellRenderer(e,o);return null!=i?this.bindToHtml(i,t):t.innerText=null!=o.valueFormatted?o.valueFormatted:o.value,i},e.prototype.useFilterCellRenderer=function(e,t,o){var i=this.componentRecipes.newCellRenderer(e.filterParams,o);return null!=i?this.bindToHtml(i,t):t.innerText=null!=o.valueFormatted?o.valueFormatted:o.value,i},e.prototype.useInnerCellRenderer=function(e,t,o,i){var n=null,r=this.componentResolver.getComponentToUse(e,"innerRenderer");if(r&&null!=r.component&&r.source!=a.ComponentSource.DEFAULT)n=this.componentRecipes.newInnerCellRenderer(e,i);else{var s=this.componentResolver.getComponentToUse(t,"cellRenderer");n=s&&s.source!=a.ComponentSource.DEFAULT?this.componentRecipes.newCellRenderer(t,i):s&&s.source==a.ComponentSource.DEFAULT&&l._.get(t,"cellRendererParams.innerRenderer",null)?this.componentRecipes.newInnerCellRenderer(t.cellRendererParams,i):this.componentRecipes.newCellRenderer({},i)}return null!=n?this.bindToHtml(n,o):o.innerText=null!=i.valueFormatted?i.valueFormatted:i.value,n},e.prototype.useFullWidthGroupRowInnerCellRenderer=function(e,t){var o=this.componentRecipes.newFullWidthGroupRowInnerCellRenderer(t);return null!=o?this.bindToHtml(o,e):e.innerText=null!=t.valueFormatted?t.valueFormatted:t.value,o},e.prototype.bindToHtml=function(e,t){var o=e.getGui();return null!=o&&("object"==typeof o?t.appendChild(o):t.innerHTML=o),e},i([r.Autowired("componentRecipes"),n("design:type",s.ComponentRecipes)],e.prototype,"componentRecipes",void 0),i([r.Autowired("componentResolver"),n("design:type",a.ComponentResolver)],e.prototype,"componentResolver",void 0),e=i([r.Bean("cellRendererService")],e)}();t.CellRendererService=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(76),a=function(){function e(){}return e.prototype.init=function(e){this.params=e},e.prototype.refresh=function(e){return this.params=e,!1},e.prototype.getGui=function(){var e=null!=this.params.valueFormatted?this.params.valueFormatted:this.params.value;return null==e?"":""+e+""},e}();t.DefaultCellRenderer=a;var l=function(){function e(){}return e.prototype.adaptFunction=function(e,t,o,i){if(null==t)return{component:null,type:o,source:i};var n=this.componentMetadataProvider.retrieve(e);return n&&n.functionAdapter?{type:o,component:n.functionAdapter(t),source:i}:(console.error("It seems like you are providing a function as a component: "+t+", but this component: ["+e+"] doesnt accept functions"),null)},e.prototype.adaptCellRendererFunction=function(e){return function(){function t(){}return t.prototype.refresh=function(e){return!1},t.prototype.getGui=function(){var t=e(this.params);return null==t?"":t},t.prototype.init=function(e){this.params=e},t}()},e.prototype.doesImplementIComponent=function(e){return!!e&&(e.prototype&&"getGui"in e.prototype)},i([r.Autowired("componentMetadataProvider"),n("design:type",s.ComponentMetadataProvider)],e.prototype,"componentMetadataProvider",void 0),e=i([r.Bean("agComponentUtils")],e)}();t.AgComponentUtils=l},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(2),s=o(3),a=o(11),l=o(9),p=o(0),u=o(93),d=o(4),c=o(5),h=o(30),f=function(){function e(){}return e.prototype.init=function(){var e=this;this.eHeaderViewport=this.gridPanel.getHeaderViewport(),this.eRoot=this.gridPanel.getRoot(),this.eHeaderOverlay=this.gridPanel.getHeaderOverlay(),this.centerContainer=new u.HeaderContainer(this.gridPanel.getHeaderContainer(),this.gridPanel.getHeaderViewport(),this.eRoot,null),this.childContainers=[this.centerContainer],this.gridOptionsWrapper.isForPrint()||(this.pinnedLeftContainer=new u.HeaderContainer(this.gridPanel.getPinnedLeftHeader(),null,this.eRoot,l.Column.PINNED_LEFT),this.pinnedRightContainer=new u.HeaderContainer(this.gridPanel.getPinnedRightHeader(),null,this.eRoot,l.Column.PINNED_RIGHT),this.childContainers.push(this.pinnedLeftContainer),this.childContainers.push(this.pinnedRightContainer)),this.childContainers.forEach(function(t){return e.context.wireBean(t)}),this.eventService.addEventListener(c.Events.EVENT_GRID_COLUMNS_CHANGED,this.onGridColumnsChanged.bind(this)),this.eventService.addEventListener(c.Events.EVENT_COLUMN_VALUE_CHANGED,this.refreshHeader.bind(this)),this.eventService.addEventListener(c.Events.EVENT_COLUMN_RESIZED,this.setPinnedColContainerWidth.bind(this)),this.eventService.addEventListener(c.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.setPinnedColContainerWidth.bind(this)),this.eventService.addEventListener(c.Events.EVENT_SCROLL_VISIBILITY_CHANGED,this.onScrollVisibilityChanged.bind(this)),this.columnController.isReady()&&this.refreshHeader()},e.prototype.onScrollVisibilityChanged=function(){this.setPinnedColContainerWidth()},e.prototype.forEachHeaderElement=function(e){this.childContainers.forEach(function(t){return t.forEachHeaderElement(e)})},e.prototype.destroy=function(){this.childContainers.forEach(function(e){return e.destroy()})},e.prototype.onGridColumnsChanged=function(){this.setHeight()},e.prototype.refreshHeader=function(){this.setHeight(),this.childContainers.forEach(function(e){return e.refresh()}),this.setPinnedColContainerWidth()},e.prototype.setHeight=function(){if(this.eHeaderOverlay){var e=this.gridOptionsWrapper.getHeaderHeight(),t=this.columnController.getHeaderRowCount();this.eHeaderOverlay.style.height=e+"px",this.eHeaderOverlay.style.top=(t-1)*e+"px"}},e.prototype.setPinnedColContainerWidth=function(){if(!this.gridOptionsWrapper.isForPrint()){var e=this.scrollVisibleService.getPinnedLeftWithScrollWidth(),t=this.scrollVisibleService.getPinnedRightWithScrollWidth();this.eHeaderViewport.style.marginLeft=e+"px",this.eHeaderViewport.style.marginRight=t+"px"}},i([p.Autowired("gridOptionsWrapper"),n("design:type",r.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([p.Autowired("columnController"),n("design:type",s.ColumnController)],e.prototype,"columnController",void 0),i([p.Autowired("gridPanel"),n("design:type",a.GridPanel)],e.prototype,"gridPanel",void 0),i([p.Autowired("context"),n("design:type",p.Context)],e.prototype,"context",void 0),i([p.Autowired("eventService"),n("design:type",d.EventService)],e.prototype,"eventService",void 0),i([p.Autowired("scrollVisibleService"),n("design:type",h.ScrollVisibleService)],e.prototype,"scrollVisibleService",void 0),i([p.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"init",null),i([p.PreDestroy,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"destroy",null),e=i([p.Bean("headerRenderer")],e)}();t.HeaderRenderer=f},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=["fresh","dark","blue","bootstrap","material","theme-material"],a=new RegExp("ag-("+s.join("|")+")"),l=function(){function e(){}return e.prototype.getTheme=function(){for(var e,t=this.eGridDiv;t!=document.documentElement&&null==e&&(e=t.className.match(a),null!=(t=t.parentElement)););return e?e[0]:"ag-fresh"},i([r.Autowired("eGridDiv"),n("design:type",HTMLElement)],e.prototype,"eGridDiv",void 0),e=i([r.Bean("environment")],e)}();t.Environment=l},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(1),n=function(){function e(){}return e.addHeaderClassesFromColDef=function(e,t,o,n,r){i.Utils.missing(e)||this.addColumnClassesFromCollDef(e.headerClass,e,t,o,n,r)},e.addToolPanelClassesFromColDef=function(e,t,o,n,r){i.Utils.missing(e)||this.addColumnClassesFromCollDef(e.toolPanelClass,e,t,o,n,r)},e.addColumnClassesFromCollDef=function(e,t,o,n,r,s){if(!i.Utils.missing(e)){var a;if("function"==typeof e){a=e({colDef:t,column:r,columnGroup:s,context:n.getContext(),api:n.getApi()})}else a=e;"string"==typeof a?i.Utils.addCssClass(o,a):Array.isArray(a)&&a.forEach(function(e){i.Utils.addCssClass(o,e)})}},e}();t.CssClassApplier=n},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(12),l=o(1),p=o(0),u=o(2),d=function(e){function t(){var t=e.call(this)||this;return t.selected=!1,t.readOnly=!1,t.passive=!1,t}return i(t,e),t.prototype.postConstruct=function(){this.setTemplate(t.TEMPLATE),this.loadIcons(),this.updateIcons()},t.prototype.attributesSet=function(){e.prototype.attributesSet.call(this);var t=this.getAttribute("label");t&&(this.eLabel.innerText=t)},t.prototype.loadIcons=function(){l.Utils.removeAllChildren(this.eChecked),l.Utils.removeAllChildren(this.eUnchecked),l.Utils.removeAllChildren(this.eIndeterminate),this.readOnly?(this.eChecked.appendChild(l.Utils.createIconNoSpan("checkboxCheckedReadOnly",this.gridOptionsWrapper,null)),this.eUnchecked.appendChild(l.Utils.createIconNoSpan("checkboxUncheckedReadOnly",this.gridOptionsWrapper,null)),this.eIndeterminate.appendChild(l.Utils.createIconNoSpan("checkboxIndeterminateReadOnly",this.gridOptionsWrapper,null))):(this.eChecked.appendChild(l.Utils.createIconNoSpan("checkboxChecked",this.gridOptionsWrapper,null)),this.eUnchecked.appendChild(l.Utils.createIconNoSpan("checkboxUnchecked",this.gridOptionsWrapper,null)),this.eIndeterminate.appendChild(l.Utils.createIconNoSpan("checkboxIndeterminate",this.gridOptionsWrapper,null)))},t.prototype.onClick=function(){this.readOnly||this.toggle()},t.prototype.getNextValue=function(){return void 0===this.selected||!this.selected},t.prototype.setPassive=function(e){this.passive=e},t.prototype.setReadOnly=function(e){this.readOnly=e,this.loadIcons()},t.prototype.isReadOnly=function(){return this.readOnly},t.prototype.isSelected=function(){return this.selected},t.prototype.toggle=function(){var e=this.getNextValue();if(this.passive){var o={type:t.EVENT_CHANGED,selected:e};this.dispatchEvent(o)}else this.setSelected(e)},t.prototype.setSelected=function(e){if(this.selected!==e){this.selected=!0===e||!1!==e&&void 0,this.updateIcons();var o={type:t.EVENT_CHANGED,selected:this.selected};this.dispatchEvent(o)}},t.prototype.updateIcons=function(){l.Utils.setVisible(this.eChecked,!0===this.selected),l.Utils.setVisible(this.eUnchecked,!1===this.selected),l.Utils.setVisible(this.eIndeterminate,void 0===this.selected)},t.EVENT_CHANGED="change",t.TEMPLATE=' ',n([p.Autowired("gridOptionsWrapper"),r("design:type",u.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([a.QuerySelector(".ag-checkbox-checked"),r("design:type",HTMLElement)],t.prototype,"eChecked",void 0),n([a.QuerySelector(".ag-checkbox-unchecked"),r("design:type",HTMLElement)],t.prototype,"eUnchecked",void 0),n([a.QuerySelector(".ag-checkbox-indeterminate"),r("design:type",HTMLElement)],t.prototype,"eIndeterminate",void 0),n([a.QuerySelector(".ag-checkbox-label"),r("design:type",HTMLElement)],t.prototype,"eLabel",void 0),n([p.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"postConstruct",null),n([a.Listener("click"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onClick",null),t}(s.Component);t.AgCheckbox=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(1),r=o(15),s=o(13),a=function(e){function t(o,i){var n=e.call(this)||this;return n.version=0,n.state=t.STATE_DIRTY,n.rowNodeCacheParams=i,n.blockNumber=o,n.startRow=o*i.blockSize,n.endRow=n.startRow+i.blockSize,n}return i(t,e),t.prototype.isAnyNodeOpen=function(e){var t=!1;return this.forEachNodeCallback(function(e){e.expanded&&(t=!0)},e),t},t.prototype.forEachNodeCallback=function(e,t){for(var o=this.startRow;o0&&this.beans.rowRenderer.redrawRows(o)},t.prototype.destroy=function(){e.prototype.destroy.call(this),this.rowNodes.forEach(function(e){e.childrenCache&&(e.childrenCache.destroy(),e.childrenCache=null)})},t.prototype.pageLoaded=function(e,o,i){e===this.version&&(this.state=t.STATE_LOADED,this.populateWithRowData(o)),i=n.Utils.cleanNumber(i);var r={type:t.EVENT_LOAD_COMPLETE,success:!0,page:this,lastRow:i};this.dispatchEvent(r)},t.EVENT_LOAD_COMPLETE="loadComplete",t.STATE_DIRTY="dirty",t.STATE_LOADING="loading",t.STATE_LOADED="loaded",t.STATE_FAILED="failed",t}(s.BeanStub);t.RowNodeBlock=a},function(e,t,o){"use strict";function i(e){(e.rowDeselected||e.onRowDeselected)&&console.warn("ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.")}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var n=o(5),r=o(1),s=function(){function e(){}return e.getEventCallbacks=function(){return e.EVENT_CALLBACKS||(e.EVENT_CALLBACKS=[],e.EVENTS.forEach(function(t){e.EVENT_CALLBACKS.push(e.getCallbackForEvent(t))})),e.EVENT_CALLBACKS},e.copyAttributesToGridOptions=function(t,o){i(o),"object"!=typeof t&&(t={});var n=t;return e.ARRAY_PROPERTIES.concat(e.STRING_PROPERTIES).concat(e.OBJECT_PROPERTIES).concat(e.FUNCTION_PROPERTIES).forEach(function(e){void 0!==o[e]&&(n[e]=o[e])}),e.BOOLEAN_PROPERTIES.forEach(function(t){void 0!==o[t]&&(n[t]=e.toBoolean(o[t]))}),e.NUMBER_PROPERTIES.forEach(function(t){void 0!==o[t]&&(n[t]=e.toNumber(o[t]))}),e.getEventCallbacks().forEach(function(e){void 0!==o[e]&&(n[e]=o[e])}),t},e.getCallbackForEvent=function(e){return!e||e.length<2?e:"on"+e[0].toUpperCase()+e.substr(1)},e.processOnChange=function(t,o,s,a){if(t){i(t);var l=o;e.ARRAY_PROPERTIES.concat(e.OBJECT_PROPERTIES).concat(e.STRING_PROPERTIES).forEach(function(e){t[e]&&(l[e]=t[e].currentValue)}),e.BOOLEAN_PROPERTIES.forEach(function(o){t[o]&&(l[o]=e.toBoolean(t[o].currentValue))}),e.NUMBER_PROPERTIES.forEach(function(o){t[o]&&(l[o]=e.toNumber(t[o].currentValue))}),e.getEventCallbacks().forEach(function(e){t[e]&&(l[e]=t[e].currentValue)}),t.showToolPanel&&s.showToolPanel(e.toBoolean(t.showToolPanel.currentValue)),t.quickFilterText&&s.setQuickFilter(t.quickFilterText.currentValue),t.rowData&&s.setRowData(t.rowData.currentValue),t.floatingTopRowData&&s.setFloatingTopRowData(t.floatingTopRowData.currentValue),t.floatingBottomRowData&&s.setFloatingBottomRowData(t.floatingBottomRowData.currentValue),t.columnDefs&&s.setColumnDefs(t.columnDefs.currentValue),t.datasource&&s.setDatasource(t.datasource.currentValue),t.headerHeight&&s.setHeaderHeight(e.toNumber(t.headerHeight.currentValue)),t.paginationPageSize&&s.paginationSetPageSize(e.toNumber(t.paginationPageSize.currentValue)),t.pivotMode&&a.setPivotMode(e.toBoolean(t.pivotMode.currentValue)),t.groupRemoveSingleChildren&&s.setGroupRemoveSingleChildren(e.toBoolean(t.groupRemoveSingleChildren.currentValue));var p={type:n.Events.EVENT_COMPONENT_STATE_CHANGED,api:o.api,columnApi:o.columnApi};r.Utils.iterateObject(t,function(e,t){p[e]=t}),s.dispatchEvent(p)}},e.toBoolean=function(e){return"boolean"==typeof e?e:"string"==typeof e&&("TRUE"===e.toUpperCase()||""==e)},e.toNumber=function(e){return"number"==typeof e?e:"string"==typeof e?Number(e):void 0},e.EVENTS=[],e.STRING_PROPERTIES=["sortingOrder","rowClass","rowSelection","overlayLoadingTemplate","overlayNoRowsTemplate","headerCellTemplate","quickFilterText","rowModelType","editType","domLayout","clipboardDeliminator","rowGroupPanelShow"],e.OBJECT_PROPERTIES=["components","frameworkComponents","rowStyle","context","autoGroupColumnDef","groupColumnDef","localeText","icons","datasource","enterpriseDatasource","viewportDatasource","groupRowRendererParams","aggFuncs","fullWidthCellRendererParams","defaultColGroupDef","defaultColDef","defaultExportParams","columnTypes"],e.ARRAY_PROPERTIES=["slaveGrids","alignedGrids","rowData","columnDefs","excelStyles","pinnedTopRowData","pinnedBottomRowData"],e.NUMBER_PROPERTIES=["rowHeight","rowBuffer","colWidth","headerHeight","groupHeaderHeight","floatingFiltersHeight","pivotHeaderHeight","pivotGroupHeaderHeight","groupDefaultExpanded","minColWidth","maxColWidth","viewportRowModelPageSize","viewportRowModelBufferSize","layoutInterval","autoSizePadding","maxBlocksInCache","maxConcurrentDatasourceRequests","cacheOverflowSize","paginationPageSize","cacheBlockSize","infiniteInitialRowCount","scrollbarWidth","paginationStartPage","infiniteBlockSize"],e.BOOLEAN_PROPERTIES=["toolPanelSuppressRowGroups","toolPanelSuppressValues","toolPanelSuppressPivots","toolPanelSuppressPivotMode","suppressRowClickSelection","suppressCellSelection","suppressHorizontalScroll","debug","enableColResize","enableCellExpressions","enableSorting","enableServerSideSorting","enableFilter","enableServerSideFilter","angularCompileRows","angularCompileFilters","angularCompileHeaders","groupSuppressAutoColumn","groupSelectsChildren","groupIncludeFooter","groupUseEntireRow","groupSuppressRow","groupSuppressBlankHeader","forPrint","suppressMenuHide","rowDeselection","unSortIcon","suppressMultiSort","singleClickEdit","suppressLoadingOverlay","suppressNoRowsOverlay","suppressAutoSize","suppressParentsInRowNodes","showToolPanel","suppressColumnMoveAnimation","suppressMovableColumns","suppressFieldDotNotation","enableRangeSelection","pivotPanelShow","suppressTouch","suppressAsyncEvents","allowContextMenuWithControlKey","suppressContextMenu","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","enableStatusBar","alwaysShowStatusBar","rememberGroupStateWhenNewData","enableCellChangeFlash","suppressDragLeaveHidesColumns","suppressMiddleClickScrolls","suppressPreventDefaultOnMouseWheel","suppressUseColIdForGroups","suppressCopyRowsToClipboard","pivotMode","suppressAggFuncInHeader","suppressColumnVirtualisation","suppressAggAtRootLevel","suppressFocusAfterRefresh","functionsPassive","functionsReadOnly","animateRows","groupSelectsFiltered","groupRemoveSingleChildren","enableRtl","suppressClickEdit","enableGroupEdit","embedFullWidthRows","suppressTabbing","suppressPaginationPanel","floatingFilter","groupHideOpenParents","groupMultiAutoColumn","pagination","stopEditingWhenGridLosesFocus","paginationAutoPageSize","suppressScrollOnNewData","purgeClosedRowNodes","cacheQuickFilter","deltaRowDataMode","ensureDomOrder","accentedSort","pivotTotals","suppressChangeDetection","valueCache","valueCacheNeverExpires","aggregateOnlyChangedColumns","suppressAnimationFrame","suppressExcelExport","suppressCsvExport"],e.FUNCTION_PROPERTIES=["headerCellRenderer","localeTextFunc","groupRowInnerRenderer","groupRowInnerRendererFramework","dateComponent","dateComponentFramework","groupRowRenderer","groupRowRendererFramework","isExternalFilterPresent","getRowHeight","doesExternalFilterPass","getRowClass","getRowStyle","getHeaderCellTemplate","traverseNode","getContextMenuItems","getMainMenuItems","processRowPostCreate","processCellForClipboard","getNodeChildDetails","groupRowAggNodes","getRowNodeId","isFullWidthCell","fullWidthCellRenderer","fullWidthCellRendererFramework","doesDataFlower","processSecondaryColDef","processSecondaryColGroupDef","getBusinessKeyForNode","sendToClipboard","navigateToNextCell","tabToNextCell","processCellFromClipboard","getDocument","postProcessPopup"],e.ALL_PROPERTIES=e.ARRAY_PROPERTIES.concat(e.OBJECT_PROPERTIES).concat(e.STRING_PROPERTIES).concat(e.NUMBER_PROPERTIES).concat(e.FUNCTION_PROPERTIES).concat(e.BOOLEAN_PROPERTIES),e}();t.ComponentUtil=s,r.Utils.iterateObject(n.Events,function(e,t){s.EVENTS.push(t)})},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(3),a=o(7),l=o(1),p=o(14),u=o(2),d=o(42),c=o(40),h=o(80),f=o(22),g=o(25),y=function(){function e(e,t,o,i,n,r){this.columnController=e,this.valueService=t,this.gridOptionsWrapper=o,this.processCellCallback=i,this.processHeaderCallback=n,this.cellAndHeaderEscaper=r}return e.prototype.extractHeaderValue=function(e){var t=this.getHeaderName(this.processHeaderCallback,e);return null!==t&&void 0!==t||(t=""),this.cellAndHeaderEscaper?this.cellAndHeaderEscaper(t):t},e.prototype.extractRowCellValue=function(e,t,o,i){var n,r=this.columnController.getRowGroupColumns().length>0;return n=i.group&&r&&0===t?this.createValueForGroupNode(i):this.valueService.getValue(e,i),n=this.processCell(i,e,n,this.processCellCallback,o),null!==n&&void 0!==n||(n=""),this.cellAndHeaderEscaper?this.cellAndHeaderEscaper(n):n},e.prototype.getHeaderName=function(e,t){return e?e({column:t,api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext()}):this.columnController.getDisplayNameForColumn(t,"csv",!0)},e.prototype.createValueForGroupNode=function(e){for(var t=[e.key];e.parent;)e=e.parent,t.push(e.key);return t.reverse().join(" -> ")},e.prototype.processCell=function(e,t,o,i,n){return i?i({column:t,node:e,value:o,api:this.gridOptionsWrapper.getApi(),columnApi:this.gridOptionsWrapper.getColumnApi(),context:this.gridOptionsWrapper.getContext(),type:n}):o},e}();t.BaseGridSerializingSession=y;var v=function(){function e(){}return e.prototype.serialize=function(e,t){function o(t){if((!r||!t.group)&&(!u||!t.footer)&&(!v||t.isSelected())&&!(d&&"top"===t.rowPinned||c&&"bottom"===t.rowPinned)){if(!(-1===t.level)||t.leafGroup){if(!E({node:t,api:w,context:R})){var o=e.onNewBodyRow();i.forEach(function(e,i){o.onColumn(e,i,t)})}}}}var i,n=function(){return!1},r=t&&t.skipGroups,s=t&&t.skipHeader,p=t&&t.columnGroups,u=t&&t.skipFooters,d=t&&t.skipPinnedTop,c=t&&t.skipPinnedBottom,f=t&&t.customHeader,g=t&&t.customFooter,y=t&&t.allColumns,v=t&&t.onlySelected,m=t&&t.columnKeys,C=t&&t.onlySelectedAllPages,E=t&&t.shouldRowBeSkipped||n,w=this.gridOptionsWrapper.getApi(),R=this.gridOptionsWrapper.getContext(),O=this.columnController.isPivotMode(),_=this.rowModel.getType()===a.Constants.ROW_MODEL_TYPE_IN_MEMORY,S=!_&&v;if(!(i=l.Utils.existsAndNotEmpty(m)?this.columnController.getGridColumns(m):y&&!O?this.columnController.getAllPrimaryColumns():this.columnController.getAllDisplayedColumns())||0===i.length)return"";if(e.prepare(i),f&&e.addCustomHeader(t.customHeader),p){var A=new h.GroupInstanceIdCreator,P=this.displayedGroupCreator.createDisplayedGroups(i,this.columnController.getGridBalancedTree(),A);this.recursivelyAddHeaderGroups(P,e)}if(!s){var b=e.onNewHeaderRow();i.forEach(function(e,t){b.onColumn(e,t,null)})}if(this.pinnedRowModel.forEachPinnedTopRow(o),O)this.rowModel.forEachPivotNode(o);else if(C||S){var D=this.selectionController.getSelectedNodes();D.forEach(function(e){o(e)})}else _?this.rowModel.forEachNodeAfterFilterAndSort(o):this.rowModel.forEachNode(o);return this.pinnedRowModel.forEachPinnedBottomRow(o),g&&e.addCustomFooter(t.customFooter),e.parse()},e.prototype.recursivelyAddHeaderGroups=function(e,t){var o=[];e.forEach(function(e){var t=e;t.getChildren&&t.getChildren().forEach(function(e){return o.push(e)})}),e.length>0&&e[0]instanceof f.ColumnGroup&&this.doAddHeaderHeader(t,e),o&&o.length>0&&this.recursivelyAddHeaderGroups(o,t)},e.prototype.doAddHeaderHeader=function(e,t){var o=this,i=e.onNewHeaderGroupingRow(),n=0;t.forEach(function(e){var t=e,r=(t.getDefinition(),o.columnController.getDisplayNameForColumnGroup(t,"header"));i.onColumn(r,n++,t.getLeafColumns().length-1)})},i([r.Autowired("displayedGroupCreator"),n("design:type",d.DisplayedGroupCreator)],e.prototype,"displayedGroupCreator",void 0),i([r.Autowired("columnController"),n("design:type",s.ColumnController)],e.prototype,"columnController",void 0),i([r.Autowired("rowModel"),n("design:type",Object)],e.prototype,"rowModel",void 0),i([r.Autowired("pinnedRowModel"),n("design:type",g.PinnedRowModel)],e.prototype,"pinnedRowModel",void 0),i([r.Autowired("selectionController"),n("design:type",p.SelectionController)],e.prototype,"selectionController",void 0),i([r.Autowired("balancedColumnTreeBuilder"),n("design:type",c.BalancedColumnTreeBuilder)],e.prototype,"balancedColumnTreeBuilder",void 0),i([r.Autowired("gridOptionsWrapper"),n("design:type",u.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e=i([r.Bean("gridSerializer")],e)}();t.GridSerializer=v;!function(e){e[e.HEADER_GROUPING=0]="HEADER_GROUPING",e[e.HEADER=1]="HEADER",e[e.BODY=2]="BODY"}(t.RowType||(t.RowType={}))},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(18),s=o(11),a=o(0),l=o(0),p=o(55),u=o(78),d=o(2),c=o(95),h=function(){function e(){}return e.prototype.getPreferredWidthForColumn=function(e){var t=this.getHeaderCellForColumn(e);if(!t)return-1;var o=document.createElement("span");o.style.position="fixed";var i=this.gridPanel.getBodyContainer();i.appendChild(o),this.putRowCellsIntoDummyContainer(e,o),this.cloneItemIntoDummy(t,o);var n=o.offsetWidth;i.removeChild(o);var r=this.gridOptionsWrapper.getAutoSizePadding();return("number"!=typeof r||r<0)&&(r=4),n+r},e.prototype.getHeaderCellForColumn=function(e){var t=null;return this.headerRenderer.forEachHeaderElement(function(o){if(o instanceof u.RenderedHeaderCell){var i=o;i.getColumn()===e&&(t=i)}else if(o instanceof c.HeaderWrapperComp){var n=o;n.getColumn()===e&&(t=n)}}),t?t.getHtmlElement():null},e.prototype.putRowCellsIntoDummyContainer=function(e,t){var o=this;this.rowRenderer.getAllCellsForColumn(e).forEach(function(e){return o.cloneItemIntoDummy(e,t)})},e.prototype.cloneItemIntoDummy=function(e,t){var o=e.cloneNode(!0);o.style.width="",o.style.position="static",o.style.left="";var i=document.createElement("div");i.style.display="table-row",i.appendChild(o),t.appendChild(i)},i([l.Autowired("rowRenderer"),n("design:type",r.RowRenderer)],e.prototype,"rowRenderer",void 0),i([l.Autowired("headerRenderer"),n("design:type",p.HeaderRenderer)],e.prototype,"headerRenderer",void 0),i([l.Autowired("gridPanel"),n("design:type",s.GridPanel)],e.prototype,"gridPanel",void 0),i([l.Autowired("gridOptionsWrapper"),n("design:type",d.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e=i([a.Bean("autoWidthCalculator")],e)}();t.AutoWidthCalculator=h},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(1),n=function(){function e(t){this.centerHeightLastTime=-1,this.centerWidthLastTime=-1,this.centerLeftMarginLastTime=-1,this.visibleLastTime=!1,this.sizeChangeListeners=[],this.isLayoutPanel=!0,this.fullHeight=!t.north&&!t.south;var o;t.dontFill?(o=e.TEMPLATE_DONT_FILL,this.horizontalLayoutActive=!1,this.verticalLayoutActive=!1):t.fillHorizontalOnly?(o=e.TEMPLATE_DONT_FILL,this.horizontalLayoutActive=!0,this.verticalLayoutActive=!1):(o=this.fullHeight?e.TEMPLATE_FULL_HEIGHT:e.TEMPLATE_NORMAL,this.horizontalLayoutActive=!0,this.verticalLayoutActive=!0),this.eGui=i.Utils.loadTemplate(o),this.id="borderLayout",t.name&&(this.id+="_"+t.name),this.eGui.setAttribute("id",this.id),this.childPanels=[],t&&this.setupPanels(t),this.overlays=t.overlays,this.setupOverlays()}return e.prototype.addSizeChangeListener=function(e){this.sizeChangeListeners.push(e)},e.prototype.fireSizeChanged=function(){this.sizeChangeListeners.forEach(function(e){e()})},e.prototype.getRefElement=function(e){return this.eGui.querySelector('[ref="'+e+'"]')},e.prototype.setupPanels=function(e){this.eNorthWrapper=this.getRefElement("north"),this.eSouthWrapper=this.getRefElement("south"),this.eEastWrapper=this.getRefElement("east"),this.eWestWrapper=this.getRefElement("west"),this.eCenterWrapper=this.getRefElement("center"),this.eOverlayWrapper=this.getRefElement("overlay"),this.eCenterRow=this.getRefElement("centerRow"),this.eNorthChildLayout=this.setupPanel(e.north,this.eNorthWrapper),this.eSouthChildLayout=this.setupPanel(e.south,this.eSouthWrapper),this.eEastChildLayout=this.setupPanel(e.east,this.eEastWrapper),this.eWestChildLayout=this.setupPanel(e.west,this.eWestWrapper),this.eCenterChildLayout=this.setupPanel(e.center,this.eCenterWrapper)},e.prototype.setupPanel=function(e,t){if(t)return e?e.isLayoutPanel?(this.childPanels.push(e),t.appendChild(e.getGui()),e):(t.appendChild(e),null):(t.parentNode.removeChild(t),null)},e.prototype.getGui=function(){return this.eGui},e.prototype.doLayout=function(){var e=this,t=i.Utils.isVisible(this.eGui);if(!t)return this.visibleLastTime=!1,!1;var o=!1;(this.visibleLastTime!==t&&(o=!0),this.visibleLastTime=!0,[this.eNorthChildLayout,this.eSouthChildLayout,this.eEastChildLayout,this.eWestChildLayout].forEach(function(t){e.layoutChild(t)&&(o=!0)}),this.horizontalLayoutActive)&&(this.layoutWidth()&&(o=!0));if(this.verticalLayoutActive){this.layoutHeight()&&(o=!0)}return this.layoutChild(this.eCenterChildLayout)&&(o=!0),o&&this.fireSizeChanged(),o},e.prototype.layoutChild=function(e){return!!e&&e.doLayout()},e.prototype.layoutHeight=function(){return this.fullHeight?this.layoutHeightFullHeight():this.layoutHeightNormal()},e.prototype.layoutHeightFullHeight=function(){var e=i.Utils.offsetHeight(this.eGui);return e<0&&(e=0),this.centerHeightLastTime!==e&&(this.centerHeightLastTime=e,!0)},e.prototype.layoutHeightNormal=function(){var e=i.Utils.offsetHeight(this.eGui),t=i.Utils.offsetHeight(this.eNorthWrapper),o=i.Utils.offsetHeight(this.eSouthWrapper),n=e-t-o;return n<0&&(n=0),this.centerHeightLastTime!==n&&(this.eCenterRow.style.height=n+"px",this.centerHeightLastTime=n,!0)},e.prototype.getCentreHeight=function(){return this.centerHeightLastTime},e.prototype.layoutWidth=function(){var e=i.Utils.offsetWidth(this.eGui),t=i.Utils.offsetWidth(this.eEastWrapper),o=i.Utils.offsetWidth(this.eWestWrapper),n=e-t-o;n<0&&(n=0);var r=!1;return this.centerLeftMarginLastTime!==o&&(this.centerLeftMarginLastTime=o,this.eCenterWrapper.style.marginLeft=o+"px",r=!0),this.centerWidthLastTime!==n&&(this.centerWidthLastTime=n,this.eCenterWrapper.style.width=n+"px",r=!0),r},e.prototype.setEastVisible=function(e){this.eEastWrapper&&(this.eEastWrapper.style.display=e?"":"none"),this.doLayout()},e.prototype.setupOverlays=function(){if(!this.overlays)return void this.eOverlayWrapper.parentNode.removeChild(this.eOverlayWrapper);this.hideOverlay()},e.prototype.hideOverlay=function(){i.Utils.removeAllChildren(this.eOverlayWrapper),this.eOverlayWrapper.style.display="none"},e.prototype.showOverlay=function(e){var t=this.overlays?this.overlays[e]:null;t?(i.Utils.removeAllChildren(this.eOverlayWrapper),this.eOverlayWrapper.style.display="",this.eOverlayWrapper.appendChild(t)):(console.log("ag-Grid: unknown overlay"),this.hideOverlay())},e.TEMPLATE_FULL_HEIGHT='
    ',e.TEMPLATE_NORMAL='
    ',e.TEMPLATE_DONT_FILL='
    ',e}();t.BorderLayout=n},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(0),a=o(1),l=o(2),p=o(36),u=function(){function e(){}return e.prototype.getRenderedCellForEvent=function(e){for(var t=a.Utils.getTarget(e);t;){var o=this.gridOptionsWrapper.getDomData(t,p.CellComp.DOM_DATA_KEY_CELL_COMP);if(o)return o;t=t.parentElement}return null},e.prototype.getGridCellForEvent=function(e){var t=this.getRenderedCellForEvent(e);return t?t.getGridCell():null},i([s.Autowired("gridOptionsWrapper"),n("design:type",l.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),e=i([r.Bean("mouseEventService")],e)}();t.MouseEventService=u},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(7),n=o(1),r=o(23),s=function(){function e(e,t){this.rowIndex=e,this.floating=n.Utils.makeNull(t)}return e.prototype.isFloatingTop=function(){return this.floating===i.Constants.PINNED_TOP},e.prototype.isFloatingBottom=function(){return this.floating===i.Constants.PINNED_BOTTOM},e.prototype.isNotFloating=function(){return!this.isFloatingBottom()&&!this.isFloatingTop()},e.prototype.equals=function(e){return this.rowIndex===e.rowIndex&&this.floating===e.floating},e.prototype.toString=function(){return"rowIndex = "+this.rowIndex+", floating = "+this.floating},e.prototype.getGridCell=function(e){var t={rowIndex:this.rowIndex,floating:this.floating,column:e};return new r.GridCell(t)},e.prototype.before=function(e){var t=e.floating;switch(this.floating){case i.Constants.PINNED_TOP:if(t!==i.Constants.PINNED_TOP)return!0;break;case i.Constants.PINNED_BOTTOM:if(t!==i.Constants.PINNED_BOTTOM)return!1;break;default:if(n.Utils.exists(t))return t!==i.Constants.PINNED_TOP}return this.rowIndex=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(15),l=o(1),p=o(0),u=o(2),d=o(5),c=o(4),h=o(6),f=o(3),g=function(e){function t(){return e.call(this,'')||this}return i(t,e),t.prototype.createAndAddIcons=function(){this.eCheckedIcon=l.Utils.createIconNoSpan("checkboxChecked",this.gridOptionsWrapper,null),this.eUncheckedIcon=l.Utils.createIconNoSpan("checkboxUnchecked",this.gridOptionsWrapper,null),this.eIndeterminateIcon=l.Utils.createIconNoSpan("checkboxIndeterminate",this.gridOptionsWrapper,null);var e=this.getHtmlElement();e.appendChild(this.eCheckedIcon),e.appendChild(this.eUncheckedIcon),e.appendChild(this.eIndeterminateIcon)},t.prototype.onSelectionChanged=function(){var e=this.rowNode.isSelected();l.Utils.setVisible(this.eCheckedIcon,!0===e),l.Utils.setVisible(this.eUncheckedIcon,!1===e),l.Utils.setVisible(this.eIndeterminateIcon,"boolean"!=typeof e)},t.prototype.onCheckedClicked=function(){var e=this.gridOptionsWrapper.isGroupSelectsFiltered();return this.rowNode.setSelectedParams({newValue:!1,groupSelectsFiltered:e})},t.prototype.onUncheckedClicked=function(e){var t=this.gridOptionsWrapper.isGroupSelectsFiltered();return this.rowNode.setSelectedParams({newValue:!0,rangeSelect:e.shiftKey,groupSelectsFiltered:t})},t.prototype.onIndeterminateClicked=function(e){0===this.onUncheckedClicked(e)&&this.onCheckedClicked()},t.prototype.init=function(e){this.createAndAddIcons(),this.rowNode=e.rowNode,this.column=e.column,this.visibleFunc=e.visibleFunc,this.onSelectionChanged(),this.addGuiEventListener("click",function(e){return e.stopPropagation()}),this.addGuiEventListener("dblclick",function(e){return e.stopPropagation()}),this.addDestroyableEventListener(this.eCheckedIcon,"click",this.onCheckedClicked.bind(this)),this.addDestroyableEventListener(this.eUncheckedIcon,"click",this.onUncheckedClicked.bind(this)),this.addDestroyableEventListener(this.eIndeterminateIcon,"click",this.onIndeterminateClicked.bind(this)),this.addDestroyableEventListener(this.rowNode,a.RowNode.EVENT_ROW_SELECTED,this.onSelectionChanged.bind(this)),this.visibleFunc&&(this.addDestroyableEventListener(this.eventService,d.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.showOrHideSelect.bind(this)),this.showOrHideSelect())},t.prototype.showOrHideSelect=function(){var e=this.createParams(),t=this.visibleFunc(e);this.setVisible(t)},t.prototype.createParams=function(){return{node:this.rowNode,data:this.rowNode.data,column:this.column,colDef:this.column.getColDef(),context:this.gridOptionsWrapper.getContext(),api:this.gridApi,columnApi:this.columnApi}},n([p.Autowired("gridOptionsWrapper"),r("design:type",u.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([p.Autowired("eventService"),r("design:type",c.EventService)],t.prototype,"eventService",void 0),n([p.Autowired("gridApi"),r("design:type",h.GridApi)],t.prototype,"gridApi",void 0),n([p.Autowired("columnApi"),r("design:type",f.ColumnApi)],t.prototype,"columnApi",void 0),t}(s.Component);t.CheckboxSelectionComponent=g},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(0),l=o(2),p=o(1),u=function(e){function t(t){var o=e.call(this,'
    ')||this;return o.getGuiCalledOnChild=!1,o.cellEditor=t,o}return i(t,e),t.prototype.onKeyDown=function(e){this.params.onKeyDown(e)},t.prototype.getGui=function(){return this.getGuiCalledOnChild||(this.appendChild(p._.assertHtmlElement(this.cellEditor.getGui())),this.getGuiCalledOnChild=!0),e.prototype.getGui.call(this)},t.prototype.init=function(o){var i=this;this.params=o,this.gridOptionsWrapper.setDomData(this.getHtmlElement(),t.DOM_KEY_POPUP_EDITOR_WRAPPER,!0),this.addDestroyFunc(function(){i.cellEditor.destroy&&i.cellEditor.destroy()}),this.addDestroyableEventListener(e.prototype.getHtmlElement.call(this),"keydown",this.onKeyDown.bind(this))},t.prototype.afterGuiAttached=function(){this.cellEditor.afterGuiAttached&&this.cellEditor.afterGuiAttached({eComponent:p._.assertHtmlElement(this.cellEditor.getGui())})},t.prototype.getValue=function(){return this.cellEditor.getValue()},t.prototype.isPopup=function(){return!0},t.prototype.isCancelBeforeStart=function(){if(this.cellEditor.isCancelBeforeStart)return this.cellEditor.isCancelBeforeStart()},t.prototype.isCancelAfterEnd=function(){if(this.cellEditor.isCancelAfterEnd)return this.cellEditor.isCancelAfterEnd()},t.prototype.focusIn=function(){this.cellEditor.focusIn&&this.cellEditor.focusIn()},t.prototype.focusOut=function(){this.cellEditor.focusOut&&this.cellEditor.focusOut()},t.DOM_KEY_POPUP_EDITOR_WRAPPER="popupEditorWrapper",n([a.Autowired("gridOptionsWrapper"),r("design:type",l.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),t}(s.Component);t.PopupEditorWrapper=u},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(0),s=o(2),a=o(11),l=o(1),p=function(){function e(){this.executeNextFuncs=[],this.executeLaterFuncs=[],this.active=!1,this.animationThreadCount=0}return e.prototype.isActive=function(){return this.active},e.prototype.start=function(){this.active||this.gridOptionsWrapper.isSuppressColumnMoveAnimation()||this.gridOptionsWrapper.isEnableRtl()||(this.ensureAnimationCssClassPresent(),this.active=!0)},e.prototype.finish=function(){this.active&&(this.flush(),this.active=!1)},e.prototype.executeNextVMTurn=function(e){this.active?this.executeNextFuncs.push(e):e()},e.prototype.executeLaterVMTurn=function(e){this.active?this.executeLaterFuncs.push(e):e()},e.prototype.ensureAnimationCssClassPresent=function(){var e=this;this.animationThreadCount++;var t=this.animationThreadCount;l.Utils.addCssClass(this.gridPanel.getRoot(),"ag-column-moving"),this.executeLaterFuncs.push(function(){e.animationThreadCount===t&&l.Utils.removeCssClass(e.gridPanel.getRoot(),"ag-column-moving")})},e.prototype.flush=function(){var e=this.executeNextFuncs;this.executeNextFuncs=[];var t=this.executeLaterFuncs;this.executeLaterFuncs=[],0===e.length&&0===t.length||(setTimeout(function(){return e.forEach(function(e){return e()})},0),setTimeout(function(){return t.forEach(function(e){return e()})},300))},i([r.Autowired("gridOptionsWrapper"),n("design:type",s.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([r.Autowired("gridPanel"),n("design:type",a.GridPanel)],e.prototype,"gridPanel",void 0),e=i([r.Bean("columnAnimationService")],e)}();t.ColumnAnimationService=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(7),r=o(8),s=o(1),a=function(e){function t(){return e.call(this,t.TEMPLATE)||this}return i(t,e),t.prototype.init=function(e){this.params=e;var t,o=this.getGui();if(e.cellStartedEdit){this.focusAfterAttached=!0;e.keyPress===n.Constants.KEY_BACKSPACE||e.keyPress===n.Constants.KEY_DELETE?t="":e.charPress?t=e.charPress:(t=this.getStartValue(e),e.keyPress!==n.Constants.KEY_F2&&(this.highlightAllOnFocus=!0))}else this.focusAfterAttached=!1,t=this.getStartValue(e);s.Utils.exists(t)&&(o.value=t),this.addDestroyableEventListener(o,"keydown",function(e){(e.keyCode===n.Constants.KEY_LEFT||e.keyCode===n.Constants.KEY_RIGHT||e.keyCode===n.Constants.KEY_UP||e.keyCode===n.Constants.KEY_DOWN||e.keyCode===n.Constants.KEY_PAGE_DOWN||e.keyCode===n.Constants.KEY_PAGE_UP||e.keyCode===n.Constants.KEY_PAGE_HOME||e.keyCode===n.Constants.KEY_PAGE_END)&&(e.stopPropagation(),e.keyCode!==n.Constants.KEY_LEFT&&e.keyCode!==n.Constants.KEY_RIGHT&&e.preventDefault())})},t.prototype.afterGuiAttached=function(){if(this.focusAfterAttached){var e=this.getGui();if(e.focus(),this.highlightAllOnFocus)e.select();else{var t=e.value?e.value.length:0;t>0&&e.setSelectionRange(t,t)}}},t.prototype.focusIn=function(){var e=this.getGui();e.focus(),e.select()},t.prototype.getValue=function(){var e=this.getGui();return this.params.parseValue(e.value)},t.prototype.getStartValue=function(e){return e.useFormatter||e.column.getColDef().refData?e.formatValue(e.value):e.value},t.TEMPLATE='',t}(r.Component);t.TextCellEditor=a},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(8),a=o(1),l=o(7),p=o(0),u=o(2),d=o(38),c=function(e){function t(){var t=e.call(this,'
    \n
    '},t.prototype.initialiseFilterBodyUi=function(){e.prototype.initialiseFilterBodyUi.call(this);var t=null!=this.filterParams.debounceMs?this.filterParams.debounceMs:500,o=s.Utils.debounce(this.onFilterTextFieldChanged.bind(this),t);this.addDestroyableEventListener(this.eFilterTextField,"input",o)},t.prototype.refreshFilterBodyUi=function(){},t.prototype.afterGuiAttached=function(){this.eFilterTextField.focus()},t.prototype.filterValues=function(){return this.filterText},t.prototype.doesFilterPass=function(e){if(!this.filterText)return!0;var t=this.filterParams.valueGetter(e.node);if(!t)return this.filter===a.BaseFilter.NOT_EQUAL||this.filter===a.BaseFilter.NOT_CONTAINS;var o=this.formatter(t);return this.comparator(this.filter,o,this.filterText)},t.prototype.onFilterTextFieldChanged=function(){var e=s.Utils.makeNull(this.eFilterTextField.value);if(e&&""===e.trim()&&(e=null),this.filterText!==e){var t=e&&1!=this.filterParams.caseSensitive?e.toLowerCase():e,o=this.filterText&&1!=this.filterParams.caseSensitive?this.filterText.toLowerCase():this.filterText;this.filterText=this.formatter(e),o!==t&&this.onFilterChanged()}},t.prototype.setFilter=function(e){e=s.Utils.makeNull(e),e?(this.filterText=this.formatter(e),this.eFilterTextField.value=e):(this.filterText=null,this.eFilterTextField.value=null)},t.prototype.getFilter=function(){return this.filterText},t.prototype.resetState=function(){this.setFilter(null),this.setFilterType(a.BaseFilter.CONTAINS)},t.prototype.serialize=function(){return{type:this.filter?this.filter:this.defaultFilter,filter:this.filterText,filterType:"text"}},t.prototype.parse=function(e){this.setFilterType(e.type),this.setFilter(e.filter)},t.prototype.setType=function(e){this.setFilterType(e)},t.DEFAULT_FORMATTER=function(e){return e},t.DEFAULT_LOWERCASE_FORMATTER=function(e){return null==e?null:e.toString().toLowerCase()},t.DEFAULT_COMPARATOR=function(e,o,i){switch(e){case t.CONTAINS:return o.indexOf(i)>=0;case t.NOT_CONTAINS:return-1===o.indexOf(i);case t.EQUALS:return o===i;case t.NOT_EQUAL:return o!=i;case t.STARTS_WITH:return 0===o.indexOf(i);case t.ENDS_WITH:var n=o.lastIndexOf(i);return n>=0&&n===o.length-i.length;default:return console.warn("invalid filter type "+e),!1}},n([l.QuerySelector("#filterText"),r("design:type",HTMLInputElement)],t.prototype,"eFilterTextField",void 0),t}(a.ComparableBaseFilter);t.TextFilter=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(1),a=o(12),l=o(48),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.modelFromFloatingFilter=function(e){return{type:this.filter,filter:Number(e),filterTo:this.filterNumberTo,filterType:"number"}},t.prototype.getApplicableFilterTypes=function(){return[l.BaseFilter.EQUALS,l.BaseFilter.NOT_EQUAL,l.BaseFilter.LESS_THAN,l.BaseFilter.LESS_THAN_OR_EQUAL,l.BaseFilter.GREATER_THAN,l.BaseFilter.GREATER_THAN_OR_EQUAL,l.BaseFilter.IN_RANGE]},t.prototype.bodyTemplate=function(){var e=this.translate.bind(this);return'
    \n
    \n \n
    \n
    \n \n
    \n
    '},t.prototype.initialiseFilterBodyUi=function(){this.filterNumber=null,this.eFilterTextField=this.getHtmlElement().querySelector("#filterText");var e=null!=this.filterParams.debounceMs?this.filterParams.debounceMs:500,t=s.Utils.debounce(this.onTextFieldsChanged.bind(this),e);this.addDestroyableEventListener(this.eFilterTextField,"input",t),this.addDestroyableEventListener(this.eFilterToTextField,"input",t)},t.prototype.afterGuiAttached=function(){this.eFilterTextField.focus()},t.prototype.comparator=function(){return function(e,t){return e===t?0:et?-1:void 0}},t.prototype.onTextFieldsChanged=function(){var e=this.stringToFloat(this.eFilterTextField.value),t=this.stringToFloat(this.eFilterToTextField.value);this.filterNumber===e&&this.filterNumberTo===t||(this.filterNumber=e,this.filterNumberTo=t,this.onFilterChanged())},t.prototype.filterValues=function(){return this.filter!==l.BaseFilter.IN_RANGE?this.asNumber(this.filterNumber):[this.asNumber(this.filterNumber),this.asNumber(this.filterNumberTo)]},t.prototype.asNumber=function(e){return s.Utils.isNumeric(e)?e:null},t.prototype.stringToFloat=function(e){var t=s.Utils.makeNull(e);t&&""===t.trim()&&(t=null);return null!==t&&void 0!==t?parseFloat(t):null},t.prototype.setFilter=function(e){e=s.Utils.makeNull(e),null!==e&&"number"!=typeof e&&(e=parseFloat(e)),this.filterNumber=e,this.eFilterTextField.value=e},t.prototype.setFilterTo=function(e){e=s.Utils.makeNull(e),null!==e&&"number"!=typeof e&&(e=parseFloat(e)),this.filterNumberTo=e,this.eFilterToTextField.value=e},t.prototype.getFilter=function(){return this.filterNumber},t.prototype.serialize=function(){return{type:this.filter?this.filter:this.defaultFilter,filter:this.filterNumber,filterTo:this.filterNumberTo,filterType:"number"}},t.prototype.parse=function(e){this.setFilterType(e.type),this.setFilter(e.filter),this.setFilterTo(e.filterTo)},t.prototype.refreshFilterBodyUi=function(){var e=this.filter===t.IN_RANGE;s.Utils.setVisible(this.eNumberToPanel,e)},t.prototype.resetState=function(){this.setFilterType(l.BaseFilter.EQUALS),this.setFilter(null),this.setFilterTo(null)},t.prototype.setType=function(e){this.setFilterType(e)},t.LESS_THAN="lessThan",n([a.QuerySelector("#filterNumberToPanel"),r("design:type",HTMLElement)],t.prototype,"eNumberToPanel",void 0),n([a.QuerySelector("#filterToText"),r("design:type",HTMLInputElement)],t.prototype,"eFilterToTextField",void 0),t}(l.ScalarBaseFilter);t.NumberFilter=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(34),s=o(0),a=o(89),l=o(54),p=function(){function e(){}return e.prototype.resolve=function(e,t){var o=null!=t?t:e,i=this.componentProvider.retrieve(o);return null==i?null:i.type==r.ComponentType.FRAMEWORK?{component:i.component,type:r.ComponentType.FRAMEWORK,source:r.ComponentSource.REGISTERED_BY_NAME}:this.agComponentUtils.doesImplementIComponent(i.component)?{component:i.component,type:r.ComponentType.AG_GRID,source:i.source==a.RegisteredComponentSource.REGISTERED?r.ComponentSource.REGISTERED_BY_NAME:r.ComponentSource.DEFAULT}:this.agComponentUtils.adaptFunction(e,i.component,i.type,i.source==a.RegisteredComponentSource.REGISTERED?r.ComponentSource.REGISTERED_BY_NAME:r.ComponentSource.DEFAULT)},i([s.Autowired("componentProvider"),n("design:type",a.ComponentProvider)],e.prototype,"componentProvider",void 0),i([s.Autowired("agComponentUtils"),n("design:type",l.AgComponentUtils)],e.prototype,"agComponentUtils",void 0),e=i([s.Bean("namedComponentResolver")],e)}();t.NamedComponentResolver=p},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r,s=o(0),a=o(49),l=o(117),p=o(118),u=o(119),d=o(120),c=o(34),h=o(73),f=o(72),g=o(71),y=o(46);!function(e){e[e.DEFAULT=0]="DEFAULT",e[e.REGISTERED=1]="REGISTERED"}(r=t.RegisteredComponentSource||(t.RegisteredComponentSource={}));var v=function(){function e(){this.jsComponents={},this.frameworkComponents={}}return e.prototype.postConstruct=function(){this.agGridDefaults={filterComponent:null,customFloatingFilterComponent:null,dateComponent:a.DefaultDateComponent,headerComponent:l.HeaderComp,headerGroupComponent:p.HeaderGroupComp,setFloatingFilterComponent:u.SetFloatingFilterComp,textFloatingFilterComponent:u.TextFloatingFilterComp,numberFloatingFilterComponent:u.NumberFloatingFilterComp,dateFloatingFilterComponent:u.DateFloatingFilterComp,readModelAsStringFloatingFilterComponent:u.ReadModelAsStringFloatingFilterComp,floatingFilterWrapperComponent:d.FloatingFilterWrapperComp,emptyFloatingFilterWrapperComponent:d.EmptyFloatingFilterWrapperComp,cellRenderer:null,fullWidthCellRenderer:null,innerRenderer:null,groupRowInnerRenderer:null,animateShowChange:f.AnimateShowChangeCellRenderer,animateSlide:g.AnimateSlideCellRenderer,group:h.GroupCellRenderer,groupRowRenderer:h.GroupCellRenderer,loadingCellRenderer:y.LoadingCellRenderer,pinnedRowCellRenderer:null}},e.prototype.registerComponent=function(e,t){if(console.warn("ag-grid: registering components is a lab feature, is not intended to be used or supported yet."),this.frameworkComponents[e])return void console.error("Trying to register a component that you have already registered for frameworks: "+e);this.jsComponents[e]=t},e.prototype.registerFwComponent=function(e,t){if(console.warn("ag-grid: registering components is a lab feature, is not intended to be used or supported yet."),this.jsComponents[e])return void console.error("Trying to register a component that you have already registered for plain javascript: "+e);this.frameworkComponents[e]=t},e.prototype.retrieve=function(e){return this.frameworkComponents[e]?{type:c.ComponentType.FRAMEWORK,component:this.frameworkComponents[e],source:r.REGISTERED}:this.jsComponents[e]?{type:c.ComponentType.AG_GRID,component:this.jsComponents[e],source:r.REGISTERED}:this.agGridDefaults[e]?{type:c.ComponentType.AG_GRID,component:this.agGridDefaults[e],source:r.DEFAULT}:(Object.keys(this.agGridDefaults).indexOf(e)<0&&console.warn("ag-grid: Looking for component ["+e+"] but it wasn't found."),null)},i([s.PostConstruct,n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",void 0)],e.prototype,"postConstruct",null),e=i([s.Bean("componentProvider")],e)}();t.ComponentProvider=v},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(69),r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.isPopup=function(){return!0},t}(n.TextCellEditor);t.PopupTextCellEditor=r},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(70),r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.isPopup=function(){return!0},t}(n.SelectCellEditor);t.PopupSelectCellEditor=r},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var n=o(8),r=o(7),s=o(1),a=function(e){function t(){return e.call(this,t.TEMPLATE)||this}return i(t,e),t.prototype.init=function(e){this.params=e,this.focusAfterAttached=e.cellStartedEdit,this.textarea=document.createElement("textarea"),this.textarea.maxLength=e.maxLength?e.maxLength:"200",this.textarea.cols=e.cols?e.cols:"60",this.textarea.rows=e.rows?e.rows:"10",s.Utils.exists(e.value)&&(this.textarea.value=e.value.toString()),this.getHtmlElement().querySelector(".ag-large-textarea").appendChild(this.textarea),this.addGuiEventListener("keydown",this.onKeyDown.bind(this))},t.prototype.onKeyDown=function(e){var t=e.which||e.keyCode;(t==r.Constants.KEY_LEFT||t==r.Constants.KEY_UP||t==r.Constants.KEY_RIGHT||t==r.Constants.KEY_DOWN||e.shiftKey&&t==r.Constants.KEY_ENTER)&&e.stopPropagation()},t.prototype.afterGuiAttached=function(){this.focusAfterAttached&&this.textarea.focus()},t.prototype.getValue=function(){return this.textarea.value},t.prototype.isPopup=function(){return!0},t.TEMPLATE='
    ',t}(n.Component);t.LargeTextCellEditor=a},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),s=o(2),a=o(0),l=o(20),p=o(3),u=o(11),d=o(4),c=o(5),h=o(94),f=o(96),g=o(9),y=o(30),v=function(){function e(e,t,o,i){this.headerRowComps=[],this.eContainer=e,this.eRoot=o,this.pinned=i,this.eViewport=t}return e.prototype.forEachHeaderElement=function(e){this.headerRowComps.forEach(function(t){return t.forEachHeaderElement(e)})},e.prototype.init=function(){this.setupDragAndDrop(),this.eventService.addEventListener(c.Events.EVENT_COLUMN_VALUE_CHANGED,this.onColumnValueChanged.bind(this)),this.eventService.addEventListener(c.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,this.onColumnRowGroupChanged.bind(this)),this.eventService.addEventListener(c.Events.EVENT_GRID_COLUMNS_CHANGED,this.onGridColumnsChanged.bind(this)),this.eventService.addEventListener(c.Events.EVENT_SCROLL_VISIBILITY_CHANGED,this.onScrollVisibilityChanged.bind(this)),this.eventService.addEventListener(c.Events.EVENT_COLUMN_RESIZED,this.onColumnResized.bind(this)),this.eventService.addEventListener(c.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,this.onDisplayedColumnsChanged.bind(this))},e.prototype.onColumnRowGroupChanged=function(){this.onGridColumnsChanged()},e.prototype.onColumnValueChanged=function(){this.onGridColumnsChanged()},e.prototype.onColumnResized=function(){this.setWidthIfPinnedContainer()},e.prototype.onDisplayedColumnsChanged=function(){this.setWidthIfPinnedContainer()},e.prototype.onScrollVisibilityChanged=function(){this.setWidthIfPinnedContainer()},e.prototype.setWidthIfPinnedContainer=function(){if(this.pinned===g.Column.PINNED_LEFT){var e=this.scrollVisibleService.getPinnedLeftWithScrollWidth();this.eContainer.style.width=e+"px"}else if(this.pinned===g.Column.PINNED_RIGHT){var t=this.scrollVisibleService.getPinnedRightWithScrollWidth();this.eContainer.style.width=t+"px"}},e.prototype.destroy=function(){this.removeHeaderRowComps()},e.prototype.onGridColumnsChanged=function(){this.removeHeaderRowComps(),this.createHeaderRowComps()},e.prototype.refresh=function(){this.onGridColumnsChanged()},e.prototype.setupDragAndDrop=function(){var e=this.eViewport?this.eViewport:this.eContainer,t=new f.BodyDropTarget(this.pinned,e);this.context.wireBean(t)},e.prototype.removeHeaderRowComps=function(){this.headerRowComps.forEach(function(e){e.destroy()}),this.headerRowComps.length=0,r.Utils.removeAllChildren(this.eContainer)},e.prototype.createHeaderRowComps=function(){for(var e=this.columnController.getHeaderRowCount(),t=0;t=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s,a=o(8),l=o(0),p=o(2),u=o(3),d=o(9),c=o(78),h=o(4),f=o(5),g=o(1),y=o(95),v=o(123),m=o(16),C=o(26);!function(e){e[e.COLUMN_GROUP=0]="COLUMN_GROUP",e[e.COLUMN=1]="COLUMN",e[e.FLOATING_FILTER=2]="FLOATING_FILTER"}(s=t.HeaderRowType||(t.HeaderRowType={}));var E=function(e){function t(t,o,i,n,r){var s=e.call(this,'',n([h.Autowired("gridOptionsWrapper"),r("design:type",d.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([h.Autowired("columnController"),r("design:type",u.ColumnController)],t.prototype,"columnController",void 0),n([h.Autowired("horizontalDragService"),r("design:type",c.HorizontalDragService)],t.prototype,"dragService",void 0),n([h.Autowired("dragAndDropService"),r("design:type",g.DragAndDropService)],t.prototype,"dragAndDropService",void 0),n([h.Autowired("context"),r("design:type",h.Context)],t.prototype,"context",void 0),n([h.Autowired("componentRecipes"),r("design:type",m.ComponentRecipes)],t.prototype,"componentRecipes",void 0),n([h.Autowired("gridApi"),r("design:type",v.GridApi)],t.prototype,"gridApi",void 0),n([h.Autowired("columnApi"),r("design:type",u.ColumnApi)],t.prototype,"columnApi",void 0),n([h.Autowired("beans"),r("design:type",C.Beans)],t.prototype,"beans",void 0),n([h.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"postConstruct",null),t}(s.Component);t.HeaderGroupWrapperComp=E},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultColumnTypes={numericColumn:{headerClass:"ag-numeric-header",cellClass:"ag-numeric-cell"}}},function(e,t,o){"use strict";function i(e){e.module("agGrid",[]).directive("agGrid",function(){return{restrict:"A",controller:["$element","$scope","$compile","$attrs",n],scope:!0}})}function n(e,t,o,i){var n,s,a=i.agGrid;if(s=a+".quickFilterText",!(n=t.$eval(a)))return void console.warn("WARNING - grid options for ag-Grid not found. Please ensure the attribute ag-grid points to a valid object on the scope");var l=e[0],p={$scope:t,$compile:o,quickFilterOnScope:s},u=new r.Grid(l,n,p);t.$on("$destroy",function(){u.destroy()})}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var r=o(82);t.initialiseAgGridWithAngular1=i},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},s=this&&this.__param||function(e,t){return function(o,i){t(o,i,e)}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(0),l=o(4),p=o(5),u=o(10),d=o(127),c=o(83),h=o(6),f=o(3),g=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.setBeans=function(e){this.logger=e.create("InfiniteCache")},t.prototype.init=function(){e.prototype.init.call(this),this.getRow(0)},t.prototype.moveItemsDown=function(e,t,o){for(var i=e.getStartRow(),n=e.getEndRow(),r=t+o,s=n-1;s>=i;s--)if(!(s=i&&a=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(1),a=o(2),l=o(0),p=o(59),u=o(18),d=function(e){function t(t,o){var i=e.call(this,t,o)||this;return i.cacheParams=o,i}return i(t,e),t.prototype.createBlankRowNode=function(t){var o=e.prototype.createBlankRowNode.call(this,t);return o.uiLevel=0,this.setIndexAndTopOnRowNode(o,t),o},t.prototype.setDataAndId=function(e,t,o){s.Utils.exists(t)?e.setDataAndId(t,o.toString()):e.setDataAndId(void 0,void 0)},t.prototype.setRowNode=function(t,o){e.prototype.setRowNode.call(this,t,o),this.setIndexAndTopOnRowNode(o,t)},t.prototype.init=function(){e.prototype.init.call(this,{context:this.context,rowRenderer:this.rowRenderer})},t.prototype.getNodeIdPrefix=function(){return null},t.prototype.getRow=function(e){return this.getRowUsingLocalIndex(e)},t.prototype.setIndexAndTopOnRowNode=function(e,t){e.setRowIndex(t),e.rowTop=this.cacheParams.rowHeight*t},t.prototype.loadFromDatasource=function(){var e=this,t={startRow:this.getStartRow(),endRow:this.getEndRow(),successCallback:this.pageLoaded.bind(this,this.getVersion()),failCallback:this.pageLoadFailed.bind(this),sortModel:this.cacheParams.sortModel,filterModel:this.cacheParams.filterModel,context:this.gridOptionsWrapper.getContext()};if(s.Utils.missing(this.cacheParams.datasource.getRows))return void console.warn("ag-Grid: datasource is missing getRows method");s.Utils.getFunctionParameters(this.cacheParams.datasource.getRows).length>1&&(console.warn("ag-grid: It looks like your paging datasource is of the old type, taking more than one parameter."),console.warn("ag-grid: From ag-grid 1.9.0, now the getRows takes one parameter. See the documentation for details.")),setTimeout(function(){e.cacheParams.datasource.getRows(t)},0)},n([l.Autowired("gridOptionsWrapper"),r("design:type",a.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([l.Autowired("context"),r("design:type",l.Context)],t.prototype,"context",void 0),n([l.Autowired("rowRenderer"),r("design:type",u.RowRenderer)],t.prototype,"rowRenderer",void 0),n([l.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"init",null),t}(p.RowNodeBlock);t.InfiniteBlock=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var r=o(15),s=o(84),a=o(2),l=o(4),p=o(0),u=o(3),d=function(){function e(){}return e.prototype.create=function(e){var t=new r.RowNode,o=new s.InMemoryNodeManager(t,this.gridOptionsWrapper,this.context,this.eventService,this.columnController);return this.context.wireBean(t),o.setRowData(e),t},i([p.Autowired("gridOptionsWrapper"),n("design:type",a.GridOptionsWrapper)],e.prototype,"gridOptionsWrapper",void 0),i([p.Autowired("eventService"),n("design:type",l.EventService)],e.prototype,"eventService",void 0),i([p.Autowired("context"),n("design:type",p.Context)],e.prototype,"context",void 0),i([p.Autowired("columnController"),n("design:type",u.ColumnController)],e.prototype,"columnController",void 0),e=i([p.Bean("rowNodeFactory")],e)}();t.RowNodeFactory=d},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])};return function(t,o){function i(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(i.prototype=o.prototype,new i)}}(),n=this&&this.__decorate||function(e,t,o,i){var n,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(r<3?n(s):r>3?n(t,o,s):n(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0});var s=o(0),a=o(2),l=o(85),p=o(18),u=o(4),d=o(7),c=o(13),h=o(5),f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.init=function(){this.rowModel.getType()===d.Constants.ROW_MODEL_TYPE_IN_MEMORY&&(this.inMemoryRowModel=this.rowModel),this.addDestroyableEventListener(this.eventService,h.Events.EVENT_CELL_VALUE_CHANGED,this.onCellValueChanged.bind(this))},t.prototype.onCellValueChanged=function(e){this.doChangeDetection(e.node,e.column)},t.prototype.doChangeDetection=function(e,t){if(!this.gridOptionsWrapper.isSuppressChangeDetection()){if(this.inMemoryRowModel){var o=void 0;if(e.parent){var i=this.gridOptionsWrapper.isAggregateOnlyChangedColumns();o=new l.ChangedPath(i),o.addParentNode(e.parent,[t])}this.inMemoryRowModel.doAggregate(o)}this.rowRenderer.refreshCells()}},n([s.Autowired("gridOptionsWrapper"),r("design:type",a.GridOptionsWrapper)],t.prototype,"gridOptionsWrapper",void 0),n([s.Autowired("rowModel"),r("design:type",Object)],t.prototype,"rowModel",void 0),n([s.Autowired("rowRenderer"),r("design:type",p.RowRenderer)],t.prototype,"rowRenderer",void 0),n([s.Autowired("eventService"),r("design:type",u.EventService)],t.prototype,"eventService",void 0),n([s.PostConstruct,r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"init",null),t=n([s.Bean("changeDetectionService")],t)}(c.BeanStub);t.ChangeDetectionService=f},function(e,t,o){"use strict";function i(){if(console.warn("ag-grid: initialiseAgGridWithWebComponents is deprecated. Please use the ag-grid-webcomponent dependency instead. "),!a){a=!0,"undefined"!=typeof document&&document.registerElement||console.error("ag-Grid: unable to find document.registerElement() function, unable to initialise ag-Grid as a Web Component");var e=Object.create(HTMLElement.prototype);r.ComponentUtil.ALL_PROPERTIES.forEach(function(t){Object.defineProperty(e,t,{set:function(e){this.__agGridSetProperty(t,e)},get:function(){return this.__agGridGetProperty(t)},enumerable:!0,configurable:!0})});var t=e;t.__agGridSetProperty=function(e,t){this.__attributes||(this.__attributes={}),this.__attributes[e]=t;var o={};o[e]={currentValue:t},this.onChange(o)},t.onChange=function(e){this._initialised&&r.ComponentUtil.processOnChange(e,this._gridOptions,this.api,this.columnApi)},t.__agGridGetProperty=function(e){return this.__attributes||(this.__attributes={}),this.__attributes[e]},t.setGridOptions=function(e){var t=this.globalEventListener.bind(this);this._gridOptions=r.ComponentUtil.copyAttributesToGridOptions(e,this);var o={globalEventListener:t};this._agGrid=new s.Grid(this,this._gridOptions,o),this.api=e.api,this.columnApi=e.columnApi,this._initialised=!0},t.createdCallback=function(){for(var e=0;e=0&&(this[t]=o)},t.attachedCallback=function(e){},t.detachedCallback=function(e){},t.attributeChangedCallback=function(e){var t=this.attributes[e];this.setPropertyFromAttribute(t)},t.globalEventListener=function(e,t){var o=e.toLowerCase(),i=new Event(o);i.agGridDetails=t,this.dispatchEvent(i);var n="on"+o;"function"==typeof this[n]&&this[n](i)},document.registerElement("ag-grid",{prototype:e})}}function n(e){if("string"==typeof e){return e.replace(/-([a-z])/g,function(e){return e[1].toUpperCase()})}return e}/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var r=o(60),s=o(82),a=!1;t.initialiseAgGridWithWebComponents=i},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=o(1),n=function(){function e(t){var o=this;this.items=[],this.params=t,this.eGui=document.createElement("div"),this.eGui.innerHTML=e.TEMPLATE,this.eHeader=this.eGui.querySelector("#tabHeader"),this.eBody=this.eGui.querySelector("#tabBody"),i.Utils.addCssClass(this.eGui,t.cssClass),t.items&&t.items.forEach(function(e){return o.addItem(e)})}return e.prototype.setAfterAttachedParams=function(e){this.afterAttachedParams=e},e.prototype.getMinWidth=function(){var e=document.createElement("span");e.style.position="fixed",this.eGui.appendChild(e);var t=0;return this.items.forEach(function(o){i.Utils.removeAllChildren(e);var n=o.tabbedItem.body.cloneNode(!0);e.appendChild(n),t0&&this.showItemWrapper(this.items[0])},e.prototype.addItem=function(e){var t=document.createElement("span");t.appendChild(e.title),i.Utils.addCssClass(t,"ag-tab"),this.eHeader.appendChild(t);var o={tabbedItem:e,eHeaderButton:t};this.items.push(o),t.addEventListener("click",this.showItemWrapper.bind(this,o))},e.prototype.showItem=function(e){var t=i.Utils.find(this.items,function(t){return t.tabbedItem===e});t&&this.showItemWrapper(t)},e.prototype.showItemWrapper=function(e){if(this.params.onItemClicked&&this.params.onItemClicked({item:e.tabbedItem}),this.activeItem===e)return void i.Utils.callIfPresent(this.params.onActiveItemClicked);i.Utils.removeAllChildren(this.eBody),this.eBody.appendChild(e.tabbedItem.body),this.activeItem&&i.Utils.removeCssClass(this.activeItem.eHeaderButton,"ag-tab-selected"),i.Utils.addCssClass(e.eHeaderButton,"ag-tab-selected"),this.activeItem=e,e.tabbedItem.afterAttachedCallback&&e.tabbedItem.afterAttachedCallback(this.afterAttachedParams)},e.prototype.getGui=function(){return this.eGui},e.TEMPLATE='
    ',e}();t.TabbedLayout=n},function(e,t,o){"use strict";/** + * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components + * @version v13.1.2 + * @link http://www.ag-grid.com/ + * @license MIT + */ +Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(){this.isLayoutPanel=!0,this.childPanels=[],this.eGui=document.createElement("div"),this.eGui.style.height="100%"}return e.prototype.addPanel=function(e,t){var o;e.isLayoutPanel?(this.childPanels.push(e),o=e.getGui()):o=e,t&&(o.style.height=t),this.eGui.appendChild(o)},e.prototype.getGui=function(){return this.eGui},e.prototype.doLayout=function(){for(var e=0;e
    ';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var s=function(){e._reset(),t()};return r(a,"scroll",s.bind(a,"expand")),r(o,"scroll",s.bind(o,"shrink")),e}function c(t,e){var n=(t[v]||(t[v]={})).renderProxy=function(t){t.animationName===x&&e()};p.each(_,function(e){r(t,e,n)}),t.classList.add(b)}function h(t){var e=t[v]||{},n=e.renderProxy;n&&(p.each(_,function(e){o(t,e,n)}),delete e.renderProxy),t.classList.remove(b)}function f(t,e,n){var i=t[v]||(t[v]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(s("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[v]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function m(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var p=t(45),v="$chartjs",y="chartjs-",b=y+"render-monitor",x=y+"render-animation",_=["animationstart","webkitAnimationStart"],k={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},w=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";m(this,"@-webkit-keyframes "+x+"{"+t+"}@keyframes "+x+"{"+t+"}."+b+"{-webkit-animation:"+x+" 0.001s;animation:"+x+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[v]){var n=e[v].initial;["height","width"].forEach(function(t){var i=n[t];p.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),p.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[v]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[v]||(n[v]={});r(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(l(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[v]||{}).proxies||{})[t.id+"_"+e];a&&o(i,e,a)}else g(i)}},p.addEvent=r,p.removeEvent=o},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),r=t(47),o=r._enabled?r:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},o)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),r=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return"origin";if(i=parseFloat(r,10),isFinite(i)&&Math.floor(i)===i)return"-"!==r[0]&&"+"!==r[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?r=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?r=n.scaleZero:i.getBasePosition?r=i.getBasePosition():i.getBasePixel&&(r=i.getBasePixel()),void 0!==r&&null!==r){if(void 0!==r.x&&void 0!==r.y)return r;if("number"==typeof r&&isFinite(r))return e=i.isHorizontal(),{x:e?r:null,y:e?null:r}}return null}function n(t,e,n){var i,a=t[e].fill,r=[e];if(!n)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;r.push(a),a=i.fill}return!1}function o(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function s(t){return t&&!t.skip}function l(t,e,n,i,a){var o;if(i&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o0;--o)r.canvas.lineTo(t,n[o],n[o-1],!0)}}function u(t,e,n,i,a,r){var o,u,d,c,h,f,g,m=e.length,p=i.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,u=m+!!r;o');for(var n=0;n'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("");return e.push(""),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});o.configure(e,i,n),o.addBox(e,i),e.legend=i}var o=t.layoutService,s=r.noop;return t.Legend=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=r.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,n=t.options,a=n.labels,o=n.display,s=t.ctx,l=i.global,u=r.valueOrDefault,d=u(a.fontSize,l.defaultFontSize),c=u(a.fontStyle,l.defaultFontStyle),h=u(a.fontFamily,l.defaultFontFamily),f=r.fontString(d,c,h),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=o?10:0):(m.width=o?10:0,m.height=t.maxHeight),o)if(s.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+a.padding:0;s.textAlign="left",s.textBaseline="top",r.each(t.legendItems,function(n,i){var r=e(a,d)+d/2+s.measureText(n.text).width;v[v.length-1]+r+a.padding>=t.width&&(y+=d+a.padding,v[v.length]=t.left),g[i]={left:0,top:0,width:r,height:d},v[v.length-1]+=r+a.padding}),m.height+=y}else{var b=a.padding,x=t.columnWidths=[],_=a.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+s.measureText(t.text).width;w+M>m.height&&(_+=k+a.padding,x.push(k),k=0,w=0),k=Math.max(k,i),w+=M,g[n]={left:0,top:0,width:i,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,o=i.global,s=o.elements.line,l=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=r.valueOrDefault,f=h(a.fontColor,o.defaultFontColor),g=h(a.fontSize,o.defaultFontSize),m=h(a.fontStyle,o.defaultFontStyle),p=h(a.fontFamily,o.defaultFontFamily),v=r.fontString(g,m,p);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var y=e(a,g),b=t.legendHitBoxes,x=function(t,e,i){if(!(isNaN(y)||y<=0)){c.save(),c.fillStyle=h(i.fillStyle,o.defaultColor),c.lineCap=h(i.lineCap,s.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,s.borderDashOffset),c.lineJoin=h(i.lineJoin,s.borderJoinStyle),c.lineWidth=h(i.lineWidth,s.borderWidth),c.strokeStyle=h(i.strokeStyle,o.defaultColor);var a=0===h(i.lineWidth,s.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,s.borderDash)),n.labels&&n.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=e+u;r.canvas.drawPoint(c,i.pointStyle,l,d,f)}else a||c.strokeRect(t,e,y,g),c.fillRect(t,e,y,g);c.restore()}},_=function(t,e,n,i){var a=g/2,r=y+a+t,o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(r+i,o),c.stroke())},k=t.isHorizontal();d=k?{x:t.left+(l-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var w=g+a.padding;r.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,r=y+g/2+i,o=d.x,s=d.y;k?o+r>=l&&(s=d.y+=w,d.line++,o=d.x=t.left+(l-u[d.line])/2):s+w>t.bottom&&(o=d.x=o+t.columnWidths[d.line]+a.padding,s=d.y=t.top+a.padding,d.line++),x(o,s,e),b[n].left=o,b[n].top=s,_(o,s,e,i),k?d.x+=r+a.padding:d.y+=w})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(r.mergeIf(e,i.global.legend),a?(o.configure(t,a,e),a.options=e):n(t,e)):a&&(o.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),r=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,o=r.noop;return t.Title=a.extend({initialize:function(t){var e=this;r.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:o,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:o,afterBuildLabels:o,beforeFit:o,fit:function(){var t=this,e=r.valueOrDefault,n=t.options,a=n.display,o=e(n.fontSize,i.global.defaultFontSize),s=t.minSize,l=r.isArray(n.text)?n.text.length:1,u=r.options.toLineHeight(n.lineHeight,o),d=a?l*u+2*n.padding:0;t.isHorizontal()?(s.width=t.maxWidth,s.height=d):(s.width=d,s.height=t.maxHeight),t.width=s.width,t.height=s.height},afterFit:o,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=r.valueOrDefault,a=t.options,o=i.global;if(a.display){var s,l,u,d=n(a.fontSize,o.defaultFontSize),c=n(a.fontStyle,o.defaultFontStyle),h=n(a.fontFamily,o.defaultFontFamily),f=r.fontString(d,c,h),g=r.options.toLineHeight(a.lineHeight,d),m=g/2+a.padding,p=0,v=t.top,y=t.left,b=t.bottom,x=t.right;e.fillStyle=n(a.fontColor,o.defaultFontColor),e.font=f,t.isHorizontal()?(l=y+(x-y)/2,u=v+m,s=x-y):(l="left"===a.position?y+m:x-m,u=v+(b-v)/2,s=b-v,p=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(p),e.textAlign="center",e.textBaseline="middle";var _=a.text;if(r.isArray(_))for(var k=0,w=0;w<_.length;++w)e.fillText(_[w],0,k,s),k+=g;else e.fillText(_,0,0,s);e.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var o=a.options.title,s=a.titleBlock;o?(r.mergeIf(o,i.global.title),s?(n.configure(a,s,o),s.options=o):e(a,o)):s&&(t.layoutService.removeBox(a,s),delete a.titleBlock)}}}},{25:25,26:26,45:45}],52:[function(t,e,n){"use strict";e.exports=function(t){var e={position:"bottom"},n=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,e=t.getLabels();t.minIndex=0,t.maxIndex=e.length-1;var n;void 0!==t.options.ticks.min&&(n=e.indexOf(t.options.ticks.min),t.minIndex=-1!==n?n:t.minIndex),void 0!==t.options.ticks.max&&(n=e.indexOf(t.options.ticks.max),t.maxIndex=-1!==n?n:t.maxIndex),t.min=e[t.minIndex],t.max=e[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,r=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(void 0!==t&&null!==t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var o=i.getLabels();t=n||t;var s=o.indexOf(t);e=-1!==s?s:e}if(i.isHorizontal()){var l=i.width/r,u=l*(e-i.minIndex);return a&&(u+=l/2),i.left+Math.round(u)}var d=i.height/r,c=d*(e-i.minIndex);return a&&(c+=d/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),r=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=r/2),(t<=0?0:Math.round(t/r))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",n,e)}},{}],53:[function(t,e,n){"use strict";var i=t(25),a=t(45),r=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:r.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return o?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,i=e.chart,r=i.data.datasets,o=e.isHorizontal();e.min=null,e.max=null;var s=n.stacked;if(void 0===s&&a.each(r,function(e,n){if(!s){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&t(a)&&void 0!==a.stack&&(s=!0)}}),n.stacked||s){var l={};a.each(r,function(r,o){var s=i.getDatasetMeta(o),u=[s.type,void 0===n.stacked&&void 0===s.stack?o:"",s.stack].join(".");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,c=l[u].negativeValues;i.isDatasetVisible(o)&&t(s)&&a.each(r.data,function(t,i){var a=+e.getRightValue(t);isNaN(a)||s.data[i].hidden||(d[i]=d[i]||0,c[i]=c[i]||0,n.relativePoints?d[i]=100:a<0?c[i]+=a:d[i]+=a)})}),a.each(l,function(t){var n=t.positiveValues.concat(t.negativeValues),i=a.min(n),r=a.max(n);e.min=null===e.min?i:Math.min(e.min,i),e.max=null===e.max?r:Math.max(e.max,r)})}else a.each(r,function(n,r){var o=i.getDatasetMeta(r);i.isDatasetVisible(r)&&t(o)&&a.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||o.data[n].hidden||(null===e.min?e.min=i:ie.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var r=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*r)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),r=n.end-i;return n.isHorizontal()?(e=n.left+n.width/r*(a-i),Math.round(e)):(e=n.bottom-n.height/r*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),r!==o&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},o=t.ticks=a.generators.linear(r,t);t.handleDirectionalChanges(),t.max=i.max(o),t.min=i.min(o),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return l?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,r=e.chart,o=r.data.datasets,s=i.valueOrDefault,l=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(o,function(e,n){if(!u){var i=r.getDatasetMeta(n);r.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(o,function(a,o){var s=r.getDatasetMeta(o),l=[s.type,void 0===n.stacked&&void 0===s.stack?o:"",s.stack].join(".");r.isDatasetVisible(o)&&t(s)&&(void 0===d[l]&&(d[l]=[]),i.each(a.data,function(t,i){var a=d[l],r=+e.getRightValue(t);isNaN(r)||s.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=r)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(o,function(n,a){var o=r.getDatasetMeta(a);r.isDatasetVisible(a)&&t(o)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||o.data[n].hidden||(null===e.min?e.min=i:ie.max&&(e.max=i),0!==i&&(null===e.minNotZero||ia?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function l(t){var i,r,l,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;ic.r&&(c.r=p.end,h.r=g),v.startc.b&&(c.b=v.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var r=n.y,o=1.5*i,s=0;s270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,r=a.valueOrDefault,o=t.options,s=o.angleLines,l=o.pointLabels;i.lineWidth=s.lineWidth,i.strokeStyle=s.color;var u=t.getDistanceFromCenterForValue(o.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(s.display){var m=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(m.x,m.y),i.stroke(),i.closePath()}if(l.display){var v=t.getPointPosition(g,u+5),y=r(l.fontColor,p.defaultFontColor);i.font=f.font,i.fillStyle=y;var b=t.getIndexAngle(g),x=a.toDegrees(b);i.textAlign=d(x),h(x,t._pointLabelSizes[g],v),c(i,t.pointLabels[g]||"",v,f.size)}}}function g(t,n,i,r){var o=t.ctx;if(o.strokeStyle=a.valueAtIndexOrDefault(n.color,r-1),o.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,r-1),t.options.gridLines.circular)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var s=e(t);if(0===s)return;o.beginPath();var l=t.getPointPosition(0,i);o.moveTo(l.x,l.y);for(var u=1;u0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,r=a.valueOrDefault;if(e.display){var o=t.ctx,s=this.getIndexAngle(0),l=r(i.fontSize,p.defaultFontSize),u=r(i.fontStyle,p.defaultFontStyle),d=r(i.fontFamily,p.defaultFontFamily),c=a.fontString(l,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=r(i.fontColor,p.defaultFontColor);if(o.font=c,o.save(),o.translate(t.xCenter,t.yCenter),o.rotate(s),i.showLabelBackdrop){var h=o.measureText(e).width;o.fillStyle=i.backdropColor,o.fillRect(-h/2-i.backdropPaddingX,-u-l/2-i.backdropPaddingY,h+2*i.backdropPaddingX,l+2*i.backdropPaddingY)}o.textAlign="center",o.textBaseline="middle",o.fillStyle=d,o.fillText(e,0,-u),o.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",y,v)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},r=[];for(e=0,n=t.length;ee&&s=0&&o<=s;){if(i=o+s>>1,a=t[i-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}function s(t,e,n,i){var a=o(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],s=a.lo?a.hi?a.hi:t[t.length-1]:t[1],l=s[e]-r[e],u=l?(n-r[e])/l:0,d=(s[i]-r[i])*u;return r[i]+d}function l(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?p(t,i):(t instanceof p||(t=p(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(y.isNullOrUndef(t))return null;var n=e.options.time,i=l(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,r,o,s=e-t,l=_[n],u=l.size,d=l.steps;if(!d)return Math.ceil(s/((i||1)*u));for(a=0,r=d.length;a1?e[1]:i,o=e[0],l=(s(t,"time",r,"pos")-s(t,"time",o,"pos"))/2),a.time.max||(r=e[e.length-1],o=e.length>1?e[e.length-2]:n,u=(s(t,"time",r,"pos")-s(t,"time",o,"pos"))/2)),{left:l,right:u}}function m(t,e){var n,i,a,r,o=[];for(n=0,i=t.length;n=a&&n<=o&&x.push(n);return i.min=a,i.max=o,i._unit=v,i._majorUnit=y,i._minorFormat=d[v],i._majorFormat=d[y],i._table=r(i._timestamps.data,a,o,s.distribution),i._offsets=g(i._table,x,a,o,s),m(x,y)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,r=i.labels&&t=0&&t lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + + level: function (color2) { + var contrastRatio = this.contrast(color2); + if (contrastRatio >= 7.1) { + return 'AAA'; + } + + return (contrastRatio >= 4.5) ? 'AA' : ''; + }, + + dark: function () { + // YIQ equation from http://24ways.org/2010/calculating-color-contrast + var rgb = this.values.rgb; + var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; + return yiq < 128; + }, + + light: function () { + return !this.dark(); + }, + + negate: function () { + var rgb = []; + for (var i = 0; i < 3; i++) { + rgb[i] = 255 - this.values.rgb[i]; + } + this.setValues('rgb', rgb); + return this; + }, + + lighten: function (ratio) { + var hsl = this.values.hsl; + hsl[2] += hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + darken: function (ratio) { + var hsl = this.values.hsl; + hsl[2] -= hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + saturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] += hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + desaturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] -= hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + whiten: function (ratio) { + var hwb = this.values.hwb; + hwb[1] += hwb[1] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + blacken: function (ratio) { + var hwb = this.values.hwb; + hwb[2] += hwb[2] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + greyscale: function () { + var rgb = this.values.rgb; + // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale + var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + this.setValues('rgb', [val, val, val]); + return this; + }, + + clearer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha - (alpha * ratio)); + return this; + }, + + opaquer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha + (alpha * ratio)); + return this; + }, + + rotate: function (degrees) { + var hsl = this.values.hsl; + var hue = (hsl[0] + degrees) % 360; + hsl[0] = hue < 0 ? 360 + hue : hue; + this.setValues('hsl', hsl); + return this; + }, + + /** + * Ported from sass implementation in C + * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 + */ + mix: function (mixinColor, weight) { + var color1 = this; + var color2 = mixinColor; + var p = weight === undefined ? 0.5 : weight; + + var w = 2 * p - 1; + var a = color1.alpha() - color2.alpha(); + + var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + return this + .rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue() + ) + .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); + }, + + toJSON: function () { + return this.rgb(); + }, + + clone: function () { + // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, + // making the final build way to big to embed in Chart.js. So let's do it manually, + // assuming that values to clone are 1 dimension arrays containing only numbers, + // except 'alpha' which is a number. + var result = new Color(); + var source = this.values; + var target = result.values; + var value, type; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + value = source[prop]; + type = ({}).toString.call(value); + if (type === '[object Array]') { + target[prop] = value.slice(0); + } else if (type === '[object Number]') { + target[prop] = value; + } else { + console.error('unexpected color value:', value); + } + } + } + + return result; + } +}; + +Color.prototype.spaces = { + rgb: ['red', 'green', 'blue'], + hsl: ['hue', 'saturation', 'lightness'], + hsv: ['hue', 'saturation', 'value'], + hwb: ['hue', 'whiteness', 'blackness'], + cmyk: ['cyan', 'magenta', 'yellow', 'black'] +}; + +Color.prototype.maxes = { + rgb: [255, 255, 255], + hsl: [360, 100, 100], + hsv: [360, 100, 100], + hwb: [360, 100, 100], + cmyk: [100, 100, 100, 100] +}; + +Color.prototype.getValues = function (space) { + var values = this.values; + var vals = {}; + + for (var i = 0; i < space.length; i++) { + vals[space.charAt(i)] = values[space][i]; + } + + if (values.alpha !== 1) { + vals.a = values.alpha; + } + + // {r: 255, g: 255, b: 255, a: 0.4} + return vals; +}; + +Color.prototype.setValues = function (space, vals) { + var values = this.values; + var spaces = this.spaces; + var maxes = this.maxes; + var alpha = 1; + var i; + + this.valid = true; + + if (space === 'alpha') { + alpha = vals; + } else if (vals.length) { + // [10, 10, 10] + values[space] = vals.slice(0, space.length); + alpha = vals[space.length]; + } else if (vals[space.charAt(0)] !== undefined) { + // {r: 10, g: 10, b: 10} + for (i = 0; i < space.length; i++) { + values[space][i] = vals[space.charAt(i)]; + } + + alpha = vals.a; + } else if (vals[spaces[space][0]] !== undefined) { + // {red: 10, green: 10, blue: 10} + var chans = spaces[space]; + + for (i = 0; i < space.length; i++) { + values[space][i] = vals[chans[i]]; + } + + alpha = vals.alpha; + } + + values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + + if (space === 'alpha') { + return false; + } + + var capped; + + // cap values of the space prior converting all values + for (i = 0; i < space.length; i++) { + capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); + values[space][i] = Math.round(capped); + } + + // convert to all the other color spaces + for (var sname in spaces) { + if (sname !== space) { + values[sname] = convert[space][sname](values[space]); + } + } + + return true; +}; + +Color.prototype.setSpace = function (space, args) { + var vals = args[0]; + + if (vals === undefined) { + // color.rgb() + return this.getValues(space); + } + + // color.rgb(10, 10, 10) + if (typeof vals === 'number') { + vals = Array.prototype.slice.call(args); + } + + this.setValues(space, vals); + return this; +}; + +Color.prototype.setChannel = function (space, index, val) { + var svalues = this.values[space]; + if (val === undefined) { + // color.red() + return svalues[index]; + } else if (val === svalues[index]) { + // color.red(color.red()) + return this; + } + + // color.red(100) + svalues[index] = val; + this.setValues(space, svalues); + + return this; +}; + +if (typeof window !== 'undefined') { + window.Color = Color; +} + +module.exports = Color; + +},{"2":2,"5":5}],4:[function(require,module,exports){ +/* MIT license */ + +module.exports = { + rgb2hsl: rgb2hsl, + rgb2hsv: rgb2hsv, + rgb2hwb: rgb2hwb, + rgb2cmyk: rgb2cmyk, + rgb2keyword: rgb2keyword, + rgb2xyz: rgb2xyz, + rgb2lab: rgb2lab, + rgb2lch: rgb2lch, + + hsl2rgb: hsl2rgb, + hsl2hsv: hsl2hsv, + hsl2hwb: hsl2hwb, + hsl2cmyk: hsl2cmyk, + hsl2keyword: hsl2keyword, + + hsv2rgb: hsv2rgb, + hsv2hsl: hsv2hsl, + hsv2hwb: hsv2hwb, + hsv2cmyk: hsv2cmyk, + hsv2keyword: hsv2keyword, + + hwb2rgb: hwb2rgb, + hwb2hsl: hwb2hsl, + hwb2hsv: hwb2hsv, + hwb2cmyk: hwb2cmyk, + hwb2keyword: hwb2keyword, + + cmyk2rgb: cmyk2rgb, + cmyk2hsl: cmyk2hsl, + cmyk2hsv: cmyk2hsv, + cmyk2hwb: cmyk2hwb, + cmyk2keyword: cmyk2keyword, + + keyword2rgb: keyword2rgb, + keyword2hsl: keyword2hsl, + keyword2hsv: keyword2hsv, + keyword2hwb: keyword2hwb, + keyword2cmyk: keyword2cmyk, + keyword2lab: keyword2lab, + keyword2xyz: keyword2xyz, + + xyz2rgb: xyz2rgb, + xyz2lab: xyz2lab, + xyz2lch: xyz2lch, + + lab2xyz: lab2xyz, + lab2rgb: lab2rgb, + lab2lch: lab2lch, + + lch2lab: lch2lab, + lch2xyz: lch2xyz, + lch2rgb: lch2rgb +} + + +function rgb2hsl(rgb) { + var r = rgb[0]/255, + g = rgb[1]/255, + b = rgb[2]/255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, l; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g)/ delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + l = (min + max) / 2; + + if (max == min) + s = 0; + else if (l <= 0.5) + s = delta / (max + min); + else + s = delta / (2 - max - min); + + return [h, s * 100, l * 100]; +} + +function rgb2hsv(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, v; + + if (max == 0) + s = 0; + else + s = (delta/max * 1000)/10; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g) / delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + v = ((max / 255) * 1000) / 10; + + return [h, s, v]; +} + +function rgb2hwb(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + h = rgb2hsl(rgb)[0], + w = 1/255 * Math.min(r, Math.min(g, b)), + b = 1 - 1/255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +} + +function rgb2cmyk(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255, + c, m, y, k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; +} + +function rgb2keyword(rgb) { + return reverseKeywords[JSON.stringify(rgb)]; +} + +function rgb2xyz(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y *100, z * 100]; +} + +function rgb2lab(rgb) { + var xyz = rgb2xyz(rgb), + x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function rgb2lch(args) { + return lab2lch(rgb2lab(args)); +} + +function hsl2rgb(hsl) { + var h = hsl[0] / 360, + s = hsl[1] / 100, + l = hsl[2] / 100, + t1, t2, t3, rgb, val; + + if (s == 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) + t2 = l * (1 + s); + else + t2 = l + s - l * s; + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * - (i - 1); + t3 < 0 && t3++; + t3 > 1 && t3--; + + if (6 * t3 < 1) + val = t1 + (t2 - t1) * 6 * t3; + else if (2 * t3 < 1) + val = t2; + else if (3 * t3 < 2) + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + else + val = t1; + + rgb[i] = val * 255; + } + + return rgb; +} + +function hsl2hsv(hsl) { + var h = hsl[0], + s = hsl[1] / 100, + l = hsl[2] / 100, + sv, v; + + if(l === 0) { + // no need to do calc on black + // also avoids divide by 0 error + return [0, 0, 0]; + } + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + v = (l + s) / 2; + sv = (2 * s) / (l + s); + return [h, sv * 100, v * 100]; +} + +function hsl2hwb(args) { + return rgb2hwb(hsl2rgb(args)); +} + +function hsl2cmyk(args) { + return rgb2cmyk(hsl2rgb(args)); +} + +function hsl2keyword(args) { + return rgb2keyword(hsl2rgb(args)); +} + + +function hsv2rgb(hsv) { + var h = hsv[0] / 60, + s = hsv[1] / 100, + v = hsv[2] / 100, + hi = Math.floor(h) % 6; + + var f = h - Math.floor(h), + p = 255 * v * (1 - s), + q = 255 * v * (1 - (s * f)), + t = 255 * v * (1 - (s * (1 - f))), + v = 255 * v; + + switch(hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +} + +function hsv2hsl(hsv) { + var h = hsv[0], + s = hsv[1] / 100, + v = hsv[2] / 100, + sl, l; + + l = (2 - s) * v; + sl = s * v; + sl /= (l <= 1) ? l : 2 - l; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; +} + +function hsv2hwb(args) { + return rgb2hwb(hsv2rgb(args)) +} + +function hsv2cmyk(args) { + return rgb2cmyk(hsv2rgb(args)); +} + +function hsv2keyword(args) { + return rgb2keyword(hsv2rgb(args)); +} + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +function hwb2rgb(hwb) { + var h = hwb[0] / 360, + wh = hwb[1] / 100, + bl = hwb[2] / 100, + ratio = wh + bl, + i, v, f, n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + if ((i & 0x01) != 0) { + f = 1 - f; + } + n = wh + f * (v - wh); // linear interpolation + + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +} + +function hwb2hsl(args) { + return rgb2hsl(hwb2rgb(args)); +} + +function hwb2hsv(args) { + return rgb2hsv(hwb2rgb(args)); +} + +function hwb2cmyk(args) { + return rgb2cmyk(hwb2rgb(args)); +} + +function hwb2keyword(args) { + return rgb2keyword(hwb2rgb(args)); +} + +function cmyk2rgb(cmyk) { + var c = cmyk[0] / 100, + m = cmyk[1] / 100, + y = cmyk[2] / 100, + k = cmyk[3] / 100, + r, g, b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; +} + +function cmyk2hsl(args) { + return rgb2hsl(cmyk2rgb(args)); +} + +function cmyk2hsv(args) { + return rgb2hsv(cmyk2rgb(args)); +} + +function cmyk2hwb(args) { + return rgb2hwb(cmyk2rgb(args)); +} + +function cmyk2keyword(args) { + return rgb2keyword(cmyk2rgb(args)); +} + + +function xyz2rgb(xyz) { + var x = xyz[0] / 100, + y = xyz[1] / 100, + z = xyz[2] / 100, + r, g, b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r = (r * 12.92); + + g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g = (g * 12.92); + + b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b = (b * 12.92); + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +} + +function xyz2lab(xyz) { + var x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function xyz2lch(args) { + return lab2lch(xyz2lab(args)); +} + +function lab2xyz(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + x, y, z, y2; + + if (l <= 8) { + y = (l * 100) / 903.3; + y2 = (7.787 * (y / 100)) + (16 / 116); + } else { + y = 100 * Math.pow((l + 16) / 116, 3); + y2 = Math.pow(y / 100, 1/3); + } + + x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); + + z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); + + return [x, y, z]; +} + +function lab2lch(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + hr, h, c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + c = Math.sqrt(a * a + b * b); + return [l, c, h]; +} + +function lab2rgb(args) { + return xyz2rgb(lab2xyz(args)); +} + +function lch2lab(lch) { + var l = lch[0], + c = lch[1], + h = lch[2], + a, b, hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + return [l, a, b]; +} + +function lch2xyz(args) { + return lab2xyz(lch2lab(args)); +} + +function lch2rgb(args) { + return lab2rgb(lch2lab(args)); +} + +function keyword2rgb(keyword) { + return cssKeywords[keyword]; +} + +function keyword2hsl(args) { + return rgb2hsl(keyword2rgb(args)); +} + +function keyword2hsv(args) { + return rgb2hsv(keyword2rgb(args)); +} + +function keyword2hwb(args) { + return rgb2hwb(keyword2rgb(args)); +} + +function keyword2cmyk(args) { + return rgb2cmyk(keyword2rgb(args)); +} + +function keyword2lab(args) { + return rgb2lab(keyword2rgb(args)); +} + +function keyword2xyz(args) { + return rgb2xyz(keyword2rgb(args)); +} + +var cssKeywords = { + aliceblue: [240,248,255], + antiquewhite: [250,235,215], + aqua: [0,255,255], + aquamarine: [127,255,212], + azure: [240,255,255], + beige: [245,245,220], + bisque: [255,228,196], + black: [0,0,0], + blanchedalmond: [255,235,205], + blue: [0,0,255], + blueviolet: [138,43,226], + brown: [165,42,42], + burlywood: [222,184,135], + cadetblue: [95,158,160], + chartreuse: [127,255,0], + chocolate: [210,105,30], + coral: [255,127,80], + cornflowerblue: [100,149,237], + cornsilk: [255,248,220], + crimson: [220,20,60], + cyan: [0,255,255], + darkblue: [0,0,139], + darkcyan: [0,139,139], + darkgoldenrod: [184,134,11], + darkgray: [169,169,169], + darkgreen: [0,100,0], + darkgrey: [169,169,169], + darkkhaki: [189,183,107], + darkmagenta: [139,0,139], + darkolivegreen: [85,107,47], + darkorange: [255,140,0], + darkorchid: [153,50,204], + darkred: [139,0,0], + darksalmon: [233,150,122], + darkseagreen: [143,188,143], + darkslateblue: [72,61,139], + darkslategray: [47,79,79], + darkslategrey: [47,79,79], + darkturquoise: [0,206,209], + darkviolet: [148,0,211], + deeppink: [255,20,147], + deepskyblue: [0,191,255], + dimgray: [105,105,105], + dimgrey: [105,105,105], + dodgerblue: [30,144,255], + firebrick: [178,34,34], + floralwhite: [255,250,240], + forestgreen: [34,139,34], + fuchsia: [255,0,255], + gainsboro: [220,220,220], + ghostwhite: [248,248,255], + gold: [255,215,0], + goldenrod: [218,165,32], + gray: [128,128,128], + green: [0,128,0], + greenyellow: [173,255,47], + grey: [128,128,128], + honeydew: [240,255,240], + hotpink: [255,105,180], + indianred: [205,92,92], + indigo: [75,0,130], + ivory: [255,255,240], + khaki: [240,230,140], + lavender: [230,230,250], + lavenderblush: [255,240,245], + lawngreen: [124,252,0], + lemonchiffon: [255,250,205], + lightblue: [173,216,230], + lightcoral: [240,128,128], + lightcyan: [224,255,255], + lightgoldenrodyellow: [250,250,210], + lightgray: [211,211,211], + lightgreen: [144,238,144], + lightgrey: [211,211,211], + lightpink: [255,182,193], + lightsalmon: [255,160,122], + lightseagreen: [32,178,170], + lightskyblue: [135,206,250], + lightslategray: [119,136,153], + lightslategrey: [119,136,153], + lightsteelblue: [176,196,222], + lightyellow: [255,255,224], + lime: [0,255,0], + limegreen: [50,205,50], + linen: [250,240,230], + magenta: [255,0,255], + maroon: [128,0,0], + mediumaquamarine: [102,205,170], + mediumblue: [0,0,205], + mediumorchid: [186,85,211], + mediumpurple: [147,112,219], + mediumseagreen: [60,179,113], + mediumslateblue: [123,104,238], + mediumspringgreen: [0,250,154], + mediumturquoise: [72,209,204], + mediumvioletred: [199,21,133], + midnightblue: [25,25,112], + mintcream: [245,255,250], + mistyrose: [255,228,225], + moccasin: [255,228,181], + navajowhite: [255,222,173], + navy: [0,0,128], + oldlace: [253,245,230], + olive: [128,128,0], + olivedrab: [107,142,35], + orange: [255,165,0], + orangered: [255,69,0], + orchid: [218,112,214], + palegoldenrod: [238,232,170], + palegreen: [152,251,152], + paleturquoise: [175,238,238], + palevioletred: [219,112,147], + papayawhip: [255,239,213], + peachpuff: [255,218,185], + peru: [205,133,63], + pink: [255,192,203], + plum: [221,160,221], + powderblue: [176,224,230], + purple: [128,0,128], + rebeccapurple: [102, 51, 153], + red: [255,0,0], + rosybrown: [188,143,143], + royalblue: [65,105,225], + saddlebrown: [139,69,19], + salmon: [250,128,114], + sandybrown: [244,164,96], + seagreen: [46,139,87], + seashell: [255,245,238], + sienna: [160,82,45], + silver: [192,192,192], + skyblue: [135,206,235], + slateblue: [106,90,205], + slategray: [112,128,144], + slategrey: [112,128,144], + snow: [255,250,250], + springgreen: [0,255,127], + steelblue: [70,130,180], + tan: [210,180,140], + teal: [0,128,128], + thistle: [216,191,216], + tomato: [255,99,71], + turquoise: [64,224,208], + violet: [238,130,238], + wheat: [245,222,179], + white: [255,255,255], + whitesmoke: [245,245,245], + yellow: [255,255,0], + yellowgreen: [154,205,50] +}; + +var reverseKeywords = {}; +for (var key in cssKeywords) { + reverseKeywords[JSON.stringify(cssKeywords[key])] = key; +} + +},{}],5:[function(require,module,exports){ +var conversions = require(4); + +var convert = function() { + return new Converter(); +} + +for (var func in conversions) { + // export Raw versions + convert[func + "Raw"] = (function(func) { + // accept array or plain args + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + return conversions[func](arg); + } + })(func); + + var pair = /(\w+)2(\w+)/.exec(func), + from = pair[1], + to = pair[2]; + + // export rgb2hsl and ["rgb"]["hsl"] + convert[from] = convert[from] || {}; + + convert[from][to] = convert[func] = (function(func) { + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + + var val = conversions[func](arg); + if (typeof val == "string" || val === undefined) + return val; // keyword + + for (var i = 0; i < val.length; i++) + val[i] = Math.round(val[i]); + return val; + } + })(func); +} + + +/* Converter does lazy conversion and caching */ +var Converter = function() { + this.convs = {}; +}; + +/* Either get the values for a space or + set the values for a space, depending on args */ +Converter.prototype.routeSpace = function(space, args) { + var values = args[0]; + if (values === undefined) { + // color.rgb() + return this.getValues(space); + } + // color.rgb(10, 10, 10) + if (typeof values == "number") { + values = Array.prototype.slice.call(args); + } + + return this.setValues(space, values); +}; + +/* Set the values for a space, invalidating cache */ +Converter.prototype.setValues = function(space, values) { + this.space = space; + this.convs = {}; + this.convs[space] = values; + return this; +}; + +/* Get the values for a space. If there's already + a conversion for the space, fetch it, otherwise + compute it */ +Converter.prototype.getValues = function(space) { + var vals = this.convs[space]; + if (!vals) { + var fspace = this.space, + from = this.convs[fspace]; + vals = convert[fspace][space](from); + + this.convs[space] = vals; + } + return vals; +}; + +["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { + Converter.prototype[space] = function(vals) { + return this.routeSpace(space, arguments); + } +}); + +module.exports = convert; +},{"4":4}],6:[function(require,module,exports){ +'use strict' + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +},{}],7:[function(require,module,exports){ +/** + * @namespace Chart + */ +var Chart = require(29)(); + +Chart.helpers = require(45); + +// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! +require(27)(Chart); + +Chart.defaults = require(25); +Chart.Element = require(26); +Chart.elements = require(40); +Chart.Interaction = require(28); +Chart.platform = require(48); + +require(31)(Chart); +require(22)(Chart); +require(23)(Chart); +require(24)(Chart); +require(30)(Chart); +require(33)(Chart); +require(32)(Chart); +require(35)(Chart); + +require(54)(Chart); +require(52)(Chart); +require(53)(Chart); +require(55)(Chart); +require(56)(Chart); +require(57)(Chart); + +// Controllers must be loaded after elements +// See Chart.core.datasetController.dataElementType +require(15)(Chart); +require(16)(Chart); +require(17)(Chart); +require(18)(Chart); +require(19)(Chart); +require(20)(Chart); +require(21)(Chart); + +require(8)(Chart); +require(9)(Chart); +require(10)(Chart); +require(11)(Chart); +require(12)(Chart); +require(13)(Chart); +require(14)(Chart); + +// Loading built-it plugins +var plugins = []; + +plugins.push( + require(49)(Chart), + require(50)(Chart), + require(51)(Chart) +); + +Chart.plugins.register(plugins); + +Chart.platform.initialize(); + +module.exports = Chart; +if (typeof window !== 'undefined') { + window.Chart = Chart; +} + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas instead. + * @namespace Chart.canvasHelpers + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +Chart.canvasHelpers = Chart.helpers.canvas; + +},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"35":35,"40":40,"45":45,"48":48,"49":49,"50":50,"51":51,"52":52,"53":53,"54":54,"55":55,"56":56,"57":57,"8":8,"9":9}],8:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Bar = function(context, config) { + config.type = 'bar'; + + return new Chart(context, config); + }; + +}; + +},{}],9:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Bubble = function(context, config) { + config.type = 'bubble'; + return new Chart(context, config); + }; + +}; + +},{}],10:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Doughnut = function(context, config) { + config.type = 'doughnut'; + + return new Chart(context, config); + }; + +}; + +},{}],11:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Line = function(context, config) { + config.type = 'line'; + + return new Chart(context, config); + }; + +}; + +},{}],12:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.PolarArea = function(context, config) { + config.type = 'polarArea'; + + return new Chart(context, config); + }; + +}; + +},{}],13:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + Chart.Radar = function(context, config) { + config.type = 'radar'; + + return new Chart(context, config); + }; + +}; + +},{}],14:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + Chart.Scatter = function(context, config) { + config.type = 'scatter'; + return new Chart(context, config); + }; +}; + +},{}],15:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('bar', { + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + + // Specific to Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, + + // offset settings + offset: true, + + // grid line settings + gridLines: { + offsetGridLines: true + } + }], + + yAxes: [{ + type: 'linear' + }] + } +}); + +defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' + }, + + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], + + yAxes: [{ + position: 'left', + type: 'category', + + // Specific to Horizontal Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, + + // offset settings + offset: true, + + // grid line settings + gridLines: { + offsetGridLines: true + } + }] + }, + + elements: { + rectangle: { + borderSkipped: 'left' + } + }, + + tooltips: { + callbacks: { + title: function(item, data) { + // Pick first xLabel for now + var title = ''; + + if (item.length > 0) { + if (item[0].yLabel) { + title = item[0].yLabel; + } else if (data.labels.length > 0 && item[0].index < data.labels.length) { + title = data.labels[item[0].index]; + } + } + + return title; + }, + + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + return datasetLabel + ': ' + item.xLabel; + } + }, + mode: 'index', + axis: 'y' + } +}); + +module.exports = function(Chart) { + + Chart.controllers.bar = Chart.DatasetController.extend({ + + dataElementType: elements.Rectangle, + + initialize: function() { + var me = this; + var meta; + + Chart.DatasetController.prototype.initialize.apply(me, arguments); + + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; + }, + + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; + + me._ruler = me.getRuler(); + + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, + + updateElement: function(rectangle, index, reset) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var custom = rectangle.custom || {}; + var rectangleOptions = chart.options.elements.rectangle; + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + + rectangle._model = { + datasetLabel: dataset.label, + label: chart.data.labels[index], + borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) + }; + + me.updateElementGeometry(rectangle, index, reset); + + rectangle.pivot(); + }, + + /** + * @private + */ + updateElementGeometry: function(rectangle, index, reset) { + var me = this; + var model = rectangle._model; + var vscale = me.getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); + + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, + + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().yAxisID; + }, + + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getValueScale: function() { + return this.getScaleForId(this.getValueScaleId()); + }, + + /** + * @private + */ + getIndexScale: function() { + return this.getScaleForId(this.getIndexScaleId()); + }, + + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function(last) { + var me = this; + var chart = me.chart; + var scale = me.getIndexScale(); + var stacked = scale.options.stacked; + var ilen = last === undefined ? chart.data.datasets.length : last + 1; + var stacks = []; + var i, meta; + + for (i = 0; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + if (meta.bar && chart.isDatasetVisible(i) && + (stacked === false || + (stacked === true && stacks.indexOf(meta.stack) === -1) || + (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { + stacks.push(meta.stack); + } + } + + return stacks.length; + }, + + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @private + */ + getStackIndex: function(datasetIndex) { + return this.getStackCount(datasetIndex) - 1; + }, + + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me.getIndexScale(); + var stackCount = me.getStackCount(); + var datasetIndex = me.index; + var pixels = []; + var isHorizontal = scale.isHorizontal(); + var start = isHorizontal ? scale.left : scale.top; + var end = start + (isHorizontal ? scale.width : scale.height); + var i, ilen; + + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, datasetIndex)); + } + + return { + pixels: pixels, + start: start, + end: end, + stackCount: stackCount, + scale: scale + }; + }, + + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var scale = me.getValueScale(); + var datasets = chart.data.datasets; + var value = scale.getRightValue(datasets[datasetIndex].data[index]); + var stacked = scale.options.stacked; + var stack = meta.stack; + var start = 0; + var i, imeta, ivalue, base, head, size; + + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < datasetIndex; ++i) { + imeta = chart.getDatasetMeta(i); + + if (imeta.bar && + imeta.stack === stack && + imeta.controller.getValueScaleId() === scale.id && + chart.isDatasetVisible(i)) { + + ivalue = scale.getRightValue(datasets[i].data[index]); + if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { + start += ivalue; + } + } + } + } + + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + value); + size = (head - base) / 2; + + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; + }, + + /** + * @private + */ + calculateBarIndexPixels: function(datasetIndex, index, ruler) { + var me = this; + var options = ruler.scale.options; + var stackIndex = me.getStackIndex(datasetIndex); + var pixels = ruler.pixels; + var base = pixels[index]; + var length = pixels.length; + var start = ruler.start; + var end = ruler.end; + var leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size; + + if (length === 1) { + leftSampleSize = base > start ? base - start : end - base; + rightSampleSize = base < end ? end - base : base - start; + } else { + if (index > 0) { + leftSampleSize = (base - pixels[index - 1]) / 2; + if (index === length - 1) { + rightSampleSize = leftSampleSize; + } + } + if (index < length - 1) { + rightSampleSize = (pixels[index + 1] - base) / 2; + if (index === 0) { + leftSampleSize = rightSampleSize; + } + } + } + + leftCategorySize = leftSampleSize * options.categoryPercentage; + rightCategorySize = rightSampleSize * options.categoryPercentage; + fullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount; + size = fullBarSize * options.barPercentage; + + size = Math.min( + helpers.valueOrDefault(options.barThickness, size), + helpers.valueOrDefault(options.maxBarThickness, Infinity)); + + base -= leftCategorySize; + base += fullBarSize * stackIndex; + base += (fullBarSize - size) / 2; + + return { + size: size, + base: base, + head: base + size, + center: base + size / 2 + }; + }, + + draw: function() { + var me = this; + var chart = me.chart; + var scale = me.getValueScale(); + var rects = me.getMeta().data; + var dataset = me.getDataset(); + var ilen = rects.length; + var i = 0; + + helpers.canvas.clipArea(chart.ctx, chart.chartArea); + + for (; i < ilen; ++i) { + if (!isNaN(scale.getRightValue(dataset.data[i]))) { + rects[i].draw(); + } + } + + helpers.canvas.unclipArea(chart.ctx); + }, + + setHoverStyle: function(rectangle) { + var dataset = this.chart.data.datasets[rectangle._datasetIndex]; + var index = rectangle._index; + var custom = rectangle.custom || {}; + var model = rectangle._model; + + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); + }, + + removeHoverStyle: function(rectangle) { + var dataset = this.chart.data.datasets[rectangle._datasetIndex]; + var index = rectangle._index; + var custom = rectangle.custom || {}; + var model = rectangle._model; + var rectangleElementOptions = this.chart.options.elements.rectangle; + + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); + } + }); + + Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().yAxisID; + } + }); +}; + +},{"25":25,"40":40,"45":45}],16:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('bubble', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, + + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } + } + } +}); + + +module.exports = function(Chart) { + + Chart.controllers.bubble = Chart.DatasetController.extend({ + /** + * @protected + */ + dataElementType: elements.Point, + + /** + * @protected + */ + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var points = meta.data; + + // Update Points + helpers.each(points, function(point, index) { + me.updateElement(point, index, reset); + }); + }, + + /** + * @protected + */ + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; + + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; + + point.pivot(); + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + + model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); + model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); + model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; + }, + + /** + * @protected + */ + removeHoverStyle: function(point) { + var model = point._model; + var options = point._options; + + model.backgroundColor = options.backgroundColor; + model.borderColor = options.borderColor; + model.borderWidth = options.borderWidth; + model.radius = options.radius; + }, + + /** + * @private + */ + _resolveElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var datasets = chart.data.datasets; + var dataset = datasets[me.index]; + var custom = point.custom || {}; + var options = chart.options.elements.point; + var resolve = helpers.options.resolve; + var data = dataset.data[index]; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + // Custom radius resolution + values.radius = resolve([ + custom.radius, + data ? data.r : undefined, + dataset.radius, + options.radius + ], context, index); + + return values; + } + }); +}; + +},{"25":25,"40":40,"45":45}],17:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, + hover: { + mode: 'single' + }, + legendCallback: function(chart) { + var text = []; + text.push('
      '); + + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('
    • '); + if (labels[i]) { + text.push(labels[i]); + } + text.push('
    • '); + } + } + + text.push('
    '); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc && arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } + + chart.update(); + } + }, + + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, + + // The rotation of the chart, where the first data arc begins. + rotation: Math.PI * -0.5, + + // The total circumference of the chart. + circumference: Math.PI * 2.0, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + + if (helpers.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } + + return dataLabel; + } + } + } +}); + +defaults._set('pie', helpers.clone(defaults.doughnut)); +defaults._set('pie', { + cutoutPercentage: 0 +}); + +module.exports = function(Chart) { + + Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers.noop, + + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; + + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } + + return ringIndex; + }, + + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var arcOpts = opts.elements.arc; + var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; + var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; + var minSize = Math.min(availableWidth, availableHeight); + var offset = {x: 0, y: 0}; + var meta = me.getMeta(); + var cutoutPercentage = opts.cutoutPercentage; + var circumference = opts.circumference; + + // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc + if (circumference < Math.PI * 2.0) { + var startAngle = opts.rotation % (Math.PI * 2.0); + startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); + var endAngle = startAngle + circumference; + var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; + var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; + var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); + var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); + var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); + var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); + var cutout = cutoutPercentage / 100.0; + var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; + var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; + var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; + minSize = Math.min(availableWidth / size.width, availableHeight / size.height); + offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; + } + + chart.borderWidth = me.getMaxBorderWidth(meta.data); + chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); + chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + chart.offsetX = offset.x * chart.outerRadius; + chart.offsetY = offset.y * chart.outerRadius; + + meta.total = me.calculateTotal(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); + + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + + // Desired view properties + _model: { + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } + }); + + var model = arc._model; + // Resets the visual styles + this.removeHoverStyle(arc); + + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } + + model.endAngle = model.startAngle + model.circumference; + } + + arc.pivot(); + }, + + removeHoverStyle: function(arc) { + Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); + }, + + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; + + helpers.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); + + /* if (total === 0) { + total = NaN; + }*/ + + return total; + }, + + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return (Math.PI * 2.0) * (value / total); + } + return 0; + }, + + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var max = 0; + var index = this.index; + var length = arcs.length; + var borderWidth; + var hoverWidth; + + for (var i = 0; i < length; i++) { + borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; + hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; + + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } + return max; + } + }); +}; + +},{"25":25,"40":40,"45":45}],18:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('line', { + showLines: true, + spanGaps: false, + + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] + } +}); + +module.exports = function(Chart) { + + function lineEnabled(dataset, options) { + return helpers.valueOrDefault(dataset.showLine, options.showLines); + } + + Chart.controllers.line = Chart.DatasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var options = me.chart.options; + var lineElementOptions = options.elements.line; + var scale = me.getScaleForId(meta.yAxisID); + var i, ilen, custom; + var dataset = me.getDataset(); + var showLine = lineEnabled(dataset, options); + + // Update Line + if (showLine) { + custom = line.custom || {}; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = { + // Appearance + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), + cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), + }; + + line.pivot(); + } + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); + } + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + getPointBackgroundColor: function(point, index) { + var backgroundColor = this.chart.options.elements.point.backgroundColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (custom.backgroundColor) { + backgroundColor = custom.backgroundColor; + } else if (dataset.pointBackgroundColor) { + backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); + } else if (dataset.backgroundColor) { + backgroundColor = dataset.backgroundColor; + } + + return backgroundColor; + }, + + getPointBorderColor: function(point, index) { + var borderColor = this.chart.options.elements.point.borderColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (custom.borderColor) { + borderColor = custom.borderColor; + } else if (dataset.pointBorderColor) { + borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); + } else if (dataset.borderColor) { + borderColor = dataset.borderColor; + } + + return borderColor; + }, + + getPointBorderWidth: function(point, index) { + var borderWidth = this.chart.options.elements.point.borderWidth; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (!isNaN(custom.borderWidth)) { + borderWidth = custom.borderWidth; + } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { + borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); + } else if (!isNaN(dataset.borderWidth)) { + borderWidth = dataset.borderWidth; + } + + return borderWidth; + }, + + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var yScale = me.getScaleForId(meta.yAxisID); + var xScale = me.getScaleForId(meta.xAxisID); + var pointOptions = me.chart.options.elements.point; + var x, y; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; + } + + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); + + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._datasetIndex = datasetIndex; + point._index = index; + + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), + pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), + backgroundColor: me.getPointBackgroundColor(point, index), + borderColor: me.getPointBorderColor(point, index), + borderWidth: me.getPointBorderWidth(point, index), + tension: meta.dataset._model ? meta.dataset._model.tension : 0, + steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, + // Tooltip + hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) + }; + }, + + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var yScale = me.getScaleForId(meta.yAxisID); + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta; + + if (yScale.options.stacked) { + for (i = 0; i < datasetIndex; i++) { + ds = chart.data.datasets[i]; + dsMeta = chart.getDatasetMeta(i); + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { + var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } + } + + var rightValue = Number(yScale.getRightValue(value)); + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); + } + + return yScale.getPixelForValue(value); + }, + + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = (meta.data || []); + var i, ilen, point, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + if (meta.dataset._model.cubicInterpolationMode === 'monotone') { + helpers.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + model = point._model; + controlPoints = helpers.splineCurve( + helpers.previousItem(points, i)._model, + model, + helpers.nextItem(points, i)._model, + meta.dataset._model.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } + + if (me.chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } + } + }, + + draw: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var ilen = points.length; + var i = 0; + + helpers.canvas.clipArea(chart.ctx, area); + + if (lineEnabled(me.getDataset(), chart.options)) { + meta.dataset.draw(); + } + + helpers.canvas.unclipArea(chart.ctx); + + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, + + setHoverStyle: function(point) { + // Point + var dataset = this.chart.data.datasets[point._datasetIndex]; + var index = point._index; + var custom = point.custom || {}; + var model = point._model; + + model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); + model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + }, + + removeHoverStyle: function(point) { + var me = this; + var dataset = me.chart.data.datasets[point._datasetIndex]; + var index = point._index; + var custom = point.custom || {}; + var model = point._model; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + + model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius); + model.backgroundColor = me.getPointBackgroundColor(point, index); + model.borderColor = me.getPointBorderColor(point, index); + model.borderWidth = me.getPointBorderWidth(point, index); + } + }); +}; + +},{"25":25,"40":40,"45":45}],19:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false + }, + gridLines: { + circular: true + }, + pointLabels: { + display: false + }, + ticks: { + beginAtZero: true + } + }, + + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, + + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var text = []; + text.push('
      '); + + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('
    • '); + if (labels[i]) { + text.push(labels[i]); + } + text.push('
    • '); + } + } + + text.push('
    '); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } + + chart.update(); + } + }, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; + } + } + } +}); + +module.exports = function(Chart) { + + Chart.controllers.polarArea = Chart.DatasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers.noop, + + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var meta = me.getMeta(); + var opts = chart.options; + var arcOpts = opts.elements.arc; + var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; + + meta.count = me.countVisibleElements(); + + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; + + var circumference = me.calculateCircumference(dataset.data[index]); + var centerX = scale.xCenter; + var centerY = scale.yCenter; + + // If there is NaN data before us, we need to calculate the starting angle correctly. + // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data + var visibleCount = 0; + var meta = me.getMeta(); + for (var i = 0; i < index; ++i) { + if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { + ++visibleCount; + } + } + + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = datasetStartAngle + (circumference * visibleCount); + var endAngle = startAngle + (arc.hidden ? 0 : circumference); + + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); + + // Apply border and fill style + me.removeHoverStyle(arc); + + arc.pivot(); + }, + + removeHoverStyle: function(arc) { + Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); + }, + + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; + + helpers.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); + + return count; + }, + + calculateCircumference: function(value) { + var count = this.getMeta().count; + if (count > 0 && !isNaN(value)) { + return (2 * Math.PI) / count; + } + return 0; + } + }); +}; + +},{"25":25,"40":40,"45":45}],20:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('radar', { + scale: { + type: 'radialLinear' + }, + elements: { + line: { + tension: 0 // no bezier in radar + } + } +}); + +module.exports = function(Chart) { + + Chart.controllers.radar = Chart.DatasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + linkScales: helpers.noop, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data; + var custom = line.custom || {}; + var dataset = me.getDataset(); + var lineElementOptions = me.chart.options.elements.line; + var scale = me.chart.scale; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + helpers.extend(meta.dataset, { + // Utility + _datasetIndex: me.index, + _scale: scale, + // Data + _children: points, + _loop: true, + // Model + _model: { + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + } + }); + + meta.dataset.pivot(); + + // Update Points + helpers.each(points, function(point, index) { + me.updateElement(point, index, reset); + }, me); + + // Update bezier control points + me.updateBezierControlPoints(); + }, + updateElement: function(point, index, reset) { + var me = this; + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointElementOptions = me.chart.options.elements.point; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; + } + + helpers.extend(point, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales + y: reset ? scale.yCenter : pointPosition.y, + + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), + radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), + pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), + + // Tooltip + hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) + } + }); + + point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); + }, + updateBezierControlPoints: function() { + var chartArea = this.chart.chartArea; + var meta = this.getMeta(); + + helpers.each(meta.data, function(point, index) { + var model = point._model; + var controlPoints = helpers.splineCurve( + helpers.previousItem(meta.data, index, true)._model, + model, + helpers.nextItem(meta.data, index, true)._model, + model.tension + ); + + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); + model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); + + model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); + model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); + + // Now pivot the point for animation + point.pivot(); + }); + }, + + setHoverStyle: function(point) { + // Point + var dataset = this.chart.data.datasets[point._datasetIndex]; + var custom = point.custom || {}; + var index = point._index; + var model = point._model; + + model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + }, + + removeHoverStyle: function(point) { + var dataset = this.chart.data.datasets[point._datasetIndex]; + var custom = point.custom || {}; + var index = point._index; + var model = point._model; + var pointElementOptions = this.chart.options.elements.point; + + model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius); + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); + } + }); +}; + +},{"25":25,"40":40,"45":45}],21:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); + +defaults._set('scatter', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, + + showLines: false, + + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; + } + } + } +}); + +module.exports = function(Chart) { + + // Scatter charts use line controllers + Chart.controllers.scatter = Chart.controllers.line; + +}; + +},{"25":25}],22:[function(require,module,exports){ +/* global window: false */ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers.noop, + onComplete: helpers.noop + } +}); + +module.exports = function(Chart) { + + Chart.Animation = Element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service + + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes + }); + + Chart.animationService = { + frameDuration: 17, + animations: [], + dropFrames: 0, + request: null, + + /** + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {Number} duration - The animation duration in ms. + * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions + */ + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + + if (!lazy) { + chart.animating = true; + } + + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; + } + } + + animations.push(animation); + + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, + + cancelAnimation: function(chart) { + var index = helpers.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); + + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); + }); + } + }, + + /** + * @private + */ + startDigest: function() { + var me = this; + var startTime = Date.now(); + var framesToDrop = 0; + + if (me.dropFrames > 1) { + framesToDrop = Math.floor(me.dropFrames); + me.dropFrames = me.dropFrames % 1; + } + + me.advance(1 + framesToDrop); + + var endTime = Date.now(); + + me.dropFrames += (endTime - startTime) / me.frameDuration; + + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, + + /** + * @private + */ + advance: function(count) { + var animations = this.animations; + var animation, chart; + var i = 0; + + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; + + animation.currentStep = (animation.currentStep || 0) + count; + animation.currentStep = Math.min(animation.currentStep, animation.numSteps); + + helpers.callback(animation.render, [chart, animation], chart); + helpers.callback(animation.onAnimationProgress, [animation], chart); + + if (animation.currentStep >= animation.numSteps) { + helpers.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } + }; + + /** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ + Object.defineProperty(Chart.Animation.prototype, 'animationObject', { + get: function() { + return this; + } + }); + + /** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ + Object.defineProperty(Chart.Animation.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } + }); + +}; + +},{"25":25,"26":26,"45":45}],23:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var helpers = require(45); +var Interaction = require(28); +var platform = require(48); + +module.exports = function(Chart) { + var plugins = Chart.plugins; + + // Create a dictionary of chart types, to allow for extension of existing types + Chart.types = {}; + + // Store a reference to each instance - allowing us to globally resize chart instances on window resize. + // Destroy method on the chart will remove the instance of the chart from this reference. + Chart.instances = {}; + + // Controllers available for dataset visualization eg. bar, line, slice, etc. + Chart.controllers = {}; + + /** + * Initializes the given config with global and chart default values. + */ + function initConfig(config) { + config = config || {}; + + // Do NOT use configMerge() for the data object because this method merges arrays + // and so would change references to labels and datasets, preventing data updates. + var data = config.data = config.data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; + + config.options = helpers.configMerge( + defaults.global, + defaults[config.type], + config.options || {}); + + return config; + } + + /** + * Updates the config of the chart + * @param chart {Chart} chart to update the options for + */ + function updateConfig(chart) { + var newOptions = chart.options; + + // Update Scale(s) with options + if (newOptions.scale) { + chart.scale.options = newOptions.scale; + } else if (newOptions.scales) { + newOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) { + chart.scales[scaleOptions.id].options = scaleOptions; + }); + } + + // Tooltip + chart.tooltip._options = newOptions.tooltips; + } + + function positionIsHorizontal(position) { + return position === 'top' || position === 'bottom'; + } + + helpers.extend(Chart.prototype, /** @lends Chart */ { + /** + * @private + */ + construct: function(item, config) { + var me = this; + + config = initConfig(config); + + var context = platform.acquireContext(item, config); + var canvas = context && context.canvas; + var height = canvas && canvas.height; + var width = canvas && canvas.width; + + me.id = helpers.uid(); + me.ctx = context; + me.canvas = canvas; + me.config = config; + me.width = width; + me.height = height; + me.aspectRatio = height ? width / height : null; + me.options = config.options; + me._bufferedRender = false; + + /** + * Provided for backward compatibility, Chart and Chart.Controller have been merged, + * the "instance" still need to be defined since it might be called from plugins. + * @prop Chart#chart + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + me.chart = me; + me.controller = me; // chart.chart.controller #inception + + // Add the chart instance to the global namespace + Chart.instances[me.id] = me; + + // Define alias to the config data: `chart.data === chart.config.data` + Object.defineProperty(me, 'data', { + get: function() { + return me.config.data; + }, + set: function(value) { + me.config.data = value; + } + }); + + if (!context || !canvas) { + // The given item is not a compatible context2d element, let's return before finalizing + // the chart initialization but after setting basic chart / controller properties that + // can help to figure out that the chart is not valid (e.g chart.canvas !== null); + // https://github.com/chartjs/Chart.js/issues/2807 + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } + + me.initialize(); + me.update(); + }, + + /** + * @private + */ + initialize: function() { + var me = this; + + // Before init plugin notification + plugins.notify(me, 'beforeInit'); + + helpers.retinaScale(me, me.options.devicePixelRatio); + + me.bindEvents(); + + if (me.options.responsive) { + // Initial resize before chart draws (must be silent to preserve initial animations). + me.resize(true); + } + + // Make sure scales have IDs and are built before we build any controllers. + me.ensureScalesHaveIDs(); + me.buildScales(); + me.initToolTip(); + + // After init plugin notification + plugins.notify(me, 'afterInit'); + + return me; + }, + + clear: function() { + helpers.canvas.clear(this); + return this; + }, + + stop: function() { + // Stops any current animation loop occurring + Chart.animationService.cancelAnimation(this); + return this; + }, + + resize: function(silent) { + var me = this; + var options = me.options; + var canvas = me.canvas; + var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; + + // the canvas render width and height will be casted to integers so make sure that + // the canvas display style uses the same integer values to avoid blurring effect. + + // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased + var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); + var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); + + if (me.width === newWidth && me.height === newHeight) { + return; + } + + canvas.width = me.width = newWidth; + canvas.height = me.height = newHeight; + canvas.style.width = newWidth + 'px'; + canvas.style.height = newHeight + 'px'; + + helpers.retinaScale(me, options.devicePixelRatio); + + if (!silent) { + // Notify any plugins about the resize + var newSize = {width: newWidth, height: newHeight}; + plugins.notify(me, 'resize', [newSize]); + + // Notify of resize + if (me.options.onResize) { + me.options.onResize(me, newSize); + } + + me.stop(); + me.update(me.options.responsiveAnimationDuration); + } + }, + + ensureScalesHaveIDs: function() { + var options = this.options; + var scalesOptions = options.scales || {}; + var scaleOptions = options.scale; + + helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { + xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); + }); + + helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { + yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); + }); + + if (scaleOptions) { + scaleOptions.id = scaleOptions.id || 'scale'; + } + }, + + /** + * Builds a map of scale ID to scale object for future lookup. + */ + buildScales: function() { + var me = this; + var options = me.options; + var scales = me.scales = {}; + var items = []; + + if (options.scales) { + items = items.concat( + (options.scales.xAxes || []).map(function(xAxisOptions) { + return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; + }), + (options.scales.yAxes || []).map(function(yAxisOptions) { + return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; + }) + ); + } + + if (options.scale) { + items.push({ + options: options.scale, + dtype: 'radialLinear', + isDefault: true, + dposition: 'chartArea' + }); + } + + helpers.each(items, function(item) { + var scaleOptions = item.options; + var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); + var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); + if (!scaleClass) { + return; + } + + if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } + + var scale = new scaleClass({ + id: scaleOptions.id, + options: scaleOptions, + ctx: me.ctx, + chart: me + }); + + scales[scale.id] = scale; + scale.mergeTicksOptions(); + + // TODO(SB): I think we should be able to remove this custom case (options.scale) + // and consider it as a regular scale part of the "scales"" map only! This would + // make the logic easier and remove some useless? custom code. + if (item.isDefault) { + me.scale = scale; + } + }); + + Chart.scaleService.addScalesToLayout(this); + }, + + buildOrUpdateControllers: function() { + var me = this; + var types = []; + var newControllers = []; + + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + var meta = me.getDatasetMeta(datasetIndex); + var type = dataset.type || me.config.type; + + if (meta.type && meta.type !== type) { + me.destroyDatasetMeta(datasetIndex); + meta = me.getDatasetMeta(datasetIndex); + } + meta.type = type; + + types.push(meta.type); + + if (meta.controller) { + meta.controller.updateIndex(datasetIndex); + } else { + var ControllerClass = Chart.controllers[meta.type]; + if (ControllerClass === undefined) { + throw new Error('"' + meta.type + '" is not a chart type.'); + } + + meta.controller = new ControllerClass(me, datasetIndex); + newControllers.push(meta.controller); + } + }, me); + + return newControllers; + }, + + /** + * Reset the elements of all datasets + * @private + */ + resetElements: function() { + var me = this; + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.reset(); + }, me); + }, + + /** + * Resets the chart back to it's state before the initial animation + */ + reset: function() { + this.resetElements(); + this.tooltip.initialize(); + }, + + update: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + updateConfig(me); + + if (plugins.notify(me, 'beforeUpdate') === false) { + return; + } + + // In case the entire data object changed + me.tooltip._data = me.data; + + // Make sure dataset controllers are updated and new controllers are reset + var newControllers = me.buildOrUpdateControllers(); + + // Make sure all dataset controllers have correct meta data counts + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); + }, me); + + me.updateLayout(); + + // Can only reset the new controllers after the scales have been updated + helpers.each(newControllers, function(controller) { + controller.reset(); + }); + + me.updateDatasets(); + + // Do this before render so that any plugins that need final scale updates can use it + plugins.notify(me, 'afterUpdate'); + + if (me._bufferedRender) { + me._bufferedRequest = { + duration: config.duration, + easing: config.easing, + lazy: config.lazy + }; + } else { + me.render(config); + } + }, + + /** + * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` + * hook, in which case, plugins will not be called on `afterLayout`. + * @private + */ + updateLayout: function() { + var me = this; + + if (plugins.notify(me, 'beforeLayout') === false) { + return; + } + + Chart.layoutService.update(this, this.width, this.height); + + /** + * Provided for backward compatibility, use `afterLayout` instead. + * @method IPlugin#afterScaleUpdate + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + plugins.notify(me, 'afterScaleUpdate'); + plugins.notify(me, 'afterLayout'); + }, + + /** + * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` + * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. + * @private + */ + updateDatasets: function() { + var me = this; + + if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { + return; + } + + for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.updateDataset(i); + } + + plugins.notify(me, 'afterDatasetsUpdate'); + }, + + /** + * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` + * hook, in which case, plugins will not be called on `afterDatasetUpdate`. + * @private + */ + updateDataset: function(index) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index + }; + + if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { + return; + } + + meta.controller.update(); + + plugins.notify(me, 'afterDatasetUpdate', [args]); + }, + + render: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + var duration = config.duration; + var lazy = config.lazy; + + if (plugins.notify(me, 'beforeRender') === false) { + return; + } + + var animationOptions = me.options.animation; + var onComplete = function(animation) { + plugins.notify(me, 'afterRender'); + helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); + }; + + if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { + var animation = new Chart.Animation({ + numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps + easing: config.easing || animationOptions.easing, + + render: function(chart, animationObject) { + var easingFunction = helpers.easing.effects[animationObject.easing]; + var currentStep = animationObject.currentStep; + var stepDecimal = currentStep / animationObject.numSteps; + + chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); + }, + + onAnimationProgress: animationOptions.onProgress, + onAnimationComplete: onComplete + }); + + Chart.animationService.addAnimation(me, animation, duration, lazy); + } else { + me.draw(); + + // See https://github.com/chartjs/Chart.js/issues/3781 + onComplete(new Chart.Animation({numSteps: 0, chart: me})); + } + + return me; + }, + + draw: function(easingValue) { + var me = this; + + me.clear(); + + if (helpers.isNullOrUndef(easingValue)) { + easingValue = 1; + } + + me.transition(easingValue); + + if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { + return; + } + + // Draw all the scales + helpers.each(me.boxes, function(box) { + box.draw(me.chartArea); + }, me); + + if (me.scale) { + me.scale.draw(); + } + + me.drawDatasets(easingValue); + + // Finally draw the tooltip + me.tooltip.draw(); + + plugins.notify(me, 'afterDraw', [easingValue]); + }, + + /** + * @private + */ + transition: function(easingValue) { + var me = this; + + for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { + if (me.isDatasetVisible(i)) { + me.getDatasetMeta(i).controller.transition(easingValue); + } + } + + me.tooltip.transition(easingValue); + }, + + /** + * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` + * hook, in which case, plugins will not be called on `afterDatasetsDraw`. + * @private + */ + drawDatasets: function(easingValue) { + var me = this; + + if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { + return; + } + + // Draw datasets reversed to support proper line stacking + for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { + if (me.isDatasetVisible(i)) { + me.drawDataset(i, easingValue); + } + } + + plugins.notify(me, 'afterDatasetsDraw', [easingValue]); + }, + + /** + * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` + * hook, in which case, plugins will not be called on `afterDatasetDraw`. + * @private + */ + drawDataset: function(index, easingValue) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index, + easingValue: easingValue + }; + + if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { + return; + } + + meta.controller.draw(easingValue); + + plugins.notify(me, 'afterDatasetDraw', [args]); + }, + + // Get the single element that was clicked on + // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw + getElementAtEvent: function(e) { + return Interaction.modes.single(this, e); + }, + + getElementsAtEvent: function(e) { + return Interaction.modes.label(this, e, {intersect: true}); + }, + + getElementsAtXAxis: function(e) { + return Interaction.modes['x-axis'](this, e, {intersect: true}); + }, + + getElementsAtEventForMode: function(e, mode, options) { + var method = Interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options); + } + + return []; + }, + + getDatasetAtEvent: function(e) { + return Interaction.modes.dataset(this, e, {intersect: true}); + }, + + getDatasetMeta: function(datasetIndex) { + var me = this; + var dataset = me.data.datasets[datasetIndex]; + if (!dataset._meta) { + dataset._meta = {}; + } + + var meta = dataset._meta[me.id]; + if (!meta) { + meta = dataset._meta[me.id] = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, // See isDatasetVisible() comment + xAxisID: null, + yAxisID: null + }; + } + + return meta; + }, + + getVisibleDatasetCount: function() { + var count = 0; + for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + if (this.isDatasetVisible(i)) { + count++; + } + } + return count; + }, + + isDatasetVisible: function(datasetIndex) { + var meta = this.getDatasetMeta(datasetIndex); + + // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, + // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. + return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; + }, + + generateLegend: function() { + return this.options.legendCallback(this); + }, + + /** + * @private + */ + destroyDatasetMeta: function(datasetIndex) { + var id = this.id; + var dataset = this.data.datasets[datasetIndex]; + var meta = dataset._meta && dataset._meta[id]; + + if (meta) { + meta.controller.destroy(); + delete dataset._meta[id]; + } + }, + + destroy: function() { + var me = this; + var canvas = me.canvas; + var i, ilen; + + me.stop(); + + // dataset controllers need to cleanup associated data + for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.destroyDatasetMeta(i); + } + + if (canvas) { + me.unbindEvents(); + helpers.canvas.clear(me); + platform.releaseContext(me.ctx); + me.canvas = null; + me.ctx = null; + } + + plugins.notify(me, 'destroy'); + + delete Chart.instances[me.id]; + }, + + toBase64Image: function() { + return this.canvas.toDataURL.apply(this.canvas, arguments); + }, + + initToolTip: function() { + var me = this; + me.tooltip = new Chart.Tooltip({ + _chart: me, + _chartInstance: me, // deprecated, backward compatibility + _data: me.data, + _options: me.options.tooltips + }, me); + }, + + /** + * @private + */ + bindEvents: function() { + var me = this; + var listeners = me._listeners = {}; + var listener = function() { + me.eventHandler.apply(me, arguments); + }; + + helpers.each(me.options.events, function(type) { + platform.addEventListener(me, type, listener); + listeners[type] = listener; + }); + + // Elements used to detect size change should not be injected for non responsive charts. + // See https://github.com/chartjs/Chart.js/issues/2210 + if (me.options.responsive) { + listener = function() { + me.resize(); + }; + + platform.addEventListener(me, 'resize', listener); + listeners.resize = listener; + } + }, + + /** + * @private + */ + unbindEvents: function() { + var me = this; + var listeners = me._listeners; + if (!listeners) { + return; + } + + delete me._listeners; + helpers.each(listeners, function(listener, type) { + platform.removeEventListener(me, type, listener); + }); + }, + + updateHoverStyle: function(elements, mode, enabled) { + var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; + var element, i, ilen; + + for (i = 0, ilen = elements.length; i < ilen; ++i) { + element = elements[i]; + if (element) { + this.getDatasetMeta(element._datasetIndex).controller[method](element); + } + } + }, + + /** + * @private + */ + eventHandler: function(e) { + var me = this; + var tooltip = me.tooltip; + + if (plugins.notify(me, 'beforeEvent', [e]) === false) { + return; + } + + // Buffer any update calls so that renders do not occur + me._bufferedRender = true; + me._bufferedRequest = null; + + var changed = me.handleEvent(e); + changed |= tooltip && tooltip.handleEvent(e); + + plugins.notify(me, 'afterEvent', [e]); + + var bufferedRequest = me._bufferedRequest; + if (bufferedRequest) { + // If we have an update that was triggered, we need to do a normal render + me.render(bufferedRequest); + } else if (changed && !me.animating) { + // If entering, leaving, or changing elements, animate the change via pivot + me.stop(); + + // We only need to render at this point. Updating will cause scales to be + // recomputed generating flicker & using more memory than necessary. + me.render(me.options.hover.animationDuration, true); + } + + me._bufferedRender = false; + me._bufferedRequest = null; + + return me; + }, + + /** + * Handle an event + * @private + * @param {IEvent} event the event to handle + * @return {Boolean} true if the chart needs to re-render + */ + handleEvent: function(e) { + var me = this; + var options = me.options || {}; + var hoverOptions = options.hover; + var changed = false; + + me.lastActive = me.lastActive || []; + + // Find Active Elements for hover and tooltips + if (e.type === 'mouseout') { + me.active = []; + } else { + me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); + } + + // Invoke onHover hook + // Need to call with native event here to not break backwards compatibility + helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); + + if (e.type === 'mouseup' || e.type === 'click') { + if (options.onClick) { + // Use e.native here for backwards compatibility + options.onClick.call(me, e.native, me.active); + } + } + + // Remove styling for last active (even if it may still be active) + if (me.lastActive.length) { + me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); + } + + // Built in hover styling + if (me.active.length && hoverOptions.mode) { + me.updateHoverStyle(me.active, hoverOptions.mode, true); + } + + changed = !helpers.arrayEquals(me.active, me.lastActive); + + // Remember Last Actives + me.lastActive = me.active; + + return changed; + } + }); + + /** + * Provided for backward compatibility, use Chart instead. + * @class Chart.Controller + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + Chart.Controller = Chart; +}; + +},{"25":25,"28":28,"45":45,"48":48}],24:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); + +module.exports = function(Chart) { + + var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; + + /** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ + function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var base = array[key]; + + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value: function() { + var args = Array.prototype.slice.call(arguments); + var res = base.apply(this, args); + + helpers.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); + + return res; + } + }); + }); + } + + /** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ + function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { + return; + } + + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + + if (listeners.length > 0) { + return; + } + + arrayEvents.forEach(function(key) { + delete array[key]; + }); + + delete array._chartjs; + } + + // Base class for all dataset controllers (line, bar, etc) + Chart.DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); + }; + + helpers.extend(Chart.DatasetController.prototype, { + + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, + + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, + + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + }, + + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, + + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + + if (meta.xAxisID === null) { + meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; + } + if (meta.yAxisID === null) { + meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; + } + }, + + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, + + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + reset: function() { + this.update(true); + }, + + /** + * @private + */ + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, + + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, + + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, + + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; + + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); + } + + meta.dataset = meta.dataset || me.createMetaDataset(); + }, + + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); + }, + + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); + + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } + + listenArrayEvents(data, me); + me._data = data; + } + + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); + }, + + update: helpers.noop, + + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } + + if (meta.dataset) { + meta.dataset.transition(easingValue); + } + }, + + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + if (meta.dataset) { + meta.dataset.draw(); + } + + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, + + removeHoverStyle: function(element, elementOpts) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var model = element._model; + + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); + }, + + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var getHoverColor = helpers.getHoverColor; + var model = element._model; + + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); + }, + + /** + * @private + */ + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; + + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, + + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); + } + }, + + /** + * @private + */ + onDataPush: function() { + this.insertElements(this.getDataset().data.length - 1, arguments.length); + }, + + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, + + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, + + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, + + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); + } + }); + + Chart.DatasetController.extend = helpers.inherits; +}; + +},{"45":45}],25:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); + +module.exports = { + /** + * @private + */ + _set: function(scope, values) { + return helpers.merge(this[scope] || (this[scope] = {}), values); + } +}; + +},{"45":45}],26:[function(require,module,exports){ +'use strict'; + +var color = require(3); +var helpers = require(45); + +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + + target = model[key]; + + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; + } + + actual = view[key]; + + if (actual === target || key[0] === '_') { + continue; + } + + if (!start.hasOwnProperty(key)) { + start[key] = actual; + } + + origin = start[key]; + + type = typeof target; + + if (type === typeof origin) { + if (type === 'string') { + c0 = color(origin); + if (c0.valid) { + c1 = color(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (type === 'number' && isFinite(origin) && isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; + } + } + + view[key] = target; + } +} + +var Element = function(configuration) { + helpers.extend(this, configuration); + this.initialize.apply(this, arguments); +}; + +helpers.extend(Element.prototype, { + + initialize: function() { + this.hidden = false; + }, + + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers.clone(me._model); + } + me._start = {}; + return me; + }, + + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; + + // No animation -> No Transition + if (!model || ease === 1) { + me._view = model; + me._start = null; + return me; + } + + if (!view) { + view = me._view = {}; + } + + if (!start) { + start = me._start = {}; + } + + interpolate(start, view, model, ease); + + return me; + }, + + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, + + hasValue: function() { + return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); + } +}); + +Element.extend = helpers.inherits; + +module.exports = Element; + +},{"3":3,"45":45}],27:[function(require,module,exports){ +/* global window: false */ +/* global document: false */ +'use strict'; + +var color = require(3); +var defaults = require(25); +var helpers = require(45); + +module.exports = function(Chart) { + + // -- Basic js utility methods + + helpers.extend = function(base) { + var setFn = function(value, key) { + base[key] = value; + }; + for (var i = 1, ilen = arguments.length; i < ilen; i++) { + helpers.each(arguments[i], setFn); + } + return base; + }; + + helpers.configMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + var tval = target[key] || {}; + var sval = source[key]; + + if (key === 'scales') { + // scale config merging is complex. Add our own function here for that + target[key] = helpers.scaleMerge(tval, sval); + } else if (key === 'scale') { + // used in polar area & radar charts since there is only one scale + target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]); + } else { + helpers._merger(key, target, source, options); + } + } + }); + }; + + helpers.scaleMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + if (key === 'xAxes' || key === 'yAxes') { + var slen = source[key].length; + var i, type, scale; + + if (!target[key]) { + target[key] = []; + } + + for (i = 0; i < slen; ++i) { + scale = source[key][i]; + type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); + + if (i >= target[key].length) { + target[key].push({}); + } + + if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { + // new/untyped scale or type changed: let's apply the new defaults + // then merge source scale to correctly overwrite the defaults. + helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]); + } else { + // scales type are the same + helpers.merge(target[key][i], scale); + } + } + } else { + helpers._merger(key, target, source, options); + } + } + }); + }; + + helpers.where = function(collection, filterCallback) { + if (helpers.isArray(collection) && Array.prototype.filter) { + return collection.filter(filterCallback); + } + var filtered = []; + + helpers.each(collection, function(item) { + if (filterCallback(item)) { + filtered.push(item); + } + }); + + return filtered; + }; + helpers.findIndex = Array.prototype.findIndex ? + function(array, callback, scope) { + return array.findIndex(callback, scope); + } : + function(array, callback, scope) { + scope = scope === undefined ? array : scope; + for (var i = 0, ilen = array.length; i < ilen; ++i) { + if (callback.call(scope, array[i], i, array)) { + return i; + } + } + return -1; + }; + helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to start of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = -1; + } + for (var i = startIndex + 1; i < arrayToSearch.length; i++) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to end of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = arrayToSearch.length; + } + for (var i = startIndex - 1; i >= 0; i--) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers.inherits = function(extensions) { + // Basic javascript inheritance based on the model created in Backbone.js + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; + + var Surrogate = function() { + this.constructor = ChartElement; + }; + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); + } + + ChartElement.__super__ = me.prototype; + + return ChartElement; + }; + // -- Math methods + helpers.isNumber = function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }; + helpers.almostEquals = function(x, y, epsilon) { + return Math.abs(x - y) < epsilon; + }; + helpers.almostWhole = function(x, epsilon) { + var rounded = Math.round(x); + return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); + }; + helpers.max = function(array) { + return array.reduce(function(max, value) { + if (!isNaN(value)) { + return Math.max(max, value); + } + return max; + }, Number.NEGATIVE_INFINITY); + }; + helpers.min = function(array) { + return array.reduce(function(min, value) { + if (!isNaN(value)) { + return Math.min(min, value); + } + return min; + }, Number.POSITIVE_INFINITY); + }; + helpers.sign = Math.sign ? + function(x) { + return Math.sign(x); + } : + function(x) { + x = +x; // convert to a number + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; + }; + helpers.log10 = Math.log10 ? + function(x) { + return Math.log10(x); + } : + function(x) { + return Math.log(x) / Math.LN10; + }; + helpers.toRadians = function(degrees) { + return degrees * (Math.PI / 180); + }; + helpers.toDegrees = function(radians) { + return radians * (180 / Math.PI); + }; + // Gets the angle from vertical upright to the point about a centre. + helpers.getAngleFromPoint = function(centrePoint, anglePoint) { + var distanceFromXCenter = anglePoint.x - centrePoint.x; + var distanceFromYCenter = anglePoint.y - centrePoint.y; + var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + + var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + + if (angle < (-0.5 * Math.PI)) { + angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + } + + return { + angle: angle, + distance: radialDistanceFromCenter + }; + }; + helpers.distanceBetweenPoints = function(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); + }; + helpers.aliasPixel = function(pixelWidth) { + return (pixelWidth % 2 === 0) ? 0 : 0.5; + }; + helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { + // Props to Rob Spencer at scaled innovation for his post on splining between points + // http://scaledinnovation.com/analytics/splines/aboutSplines.html + + // This function must also respect "skipped" points + + var previous = firstPoint.skip ? middlePoint : firstPoint; + var current = middlePoint; + var next = afterPoint.skip ? middlePoint : afterPoint; + + var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); + var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); + + var s01 = d01 / (d01 + d12); + var s12 = d12 / (d01 + d12); + + // If all points are the same, s01 & s02 will be inf + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; + + var fa = t * s01; // scaling factor for triangle Ta + var fb = t * s12; + + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; + }; + helpers.EPSILON = Number.EPSILON || 1e-14; + helpers.splineCurveMonotone = function(points) { + // This function calculates Bézier control points in a similar way than |splineCurve|, + // but preserves monotonicity of the provided data and ensures no local extremums are added + // between the dataset discrete points due to the interpolation. + // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation + + var pointsWithTangents = (points || []).map(function(point) { + return { + model: point._model, + deltaK: 0, + mK: 0 + }; + }); + + // Calculate slopes (deltaK) and initialize tangents (mK) + var pointsLen = pointsWithTangents.length; + var i, pointBefore, pointCurrent, pointAfter; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointAfter && !pointAfter.model.skip) { + var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); + + // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 + pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + } + + if (!pointBefore || pointBefore.model.skip) { + pointCurrent.mK = pointCurrent.deltaK; + } else if (!pointAfter || pointAfter.model.skip) { + pointCurrent.mK = pointBefore.deltaK; + } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { + pointCurrent.mK = 0; + } else { + pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; + } + } + + // Adjust tangents to ensure monotonic properties + var alphaK, betaK, tauK, squaredMagnitude; + for (i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointsWithTangents[i]; + pointAfter = pointsWithTangents[i + 1]; + if (pointCurrent.model.skip || pointAfter.model.skip) { + continue; + } + + if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { + pointCurrent.mK = pointAfter.mK = 0; + continue; + } + + alphaK = pointCurrent.mK / pointCurrent.deltaK; + betaK = pointAfter.mK / pointCurrent.deltaK; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } + + tauK = 3 / Math.sqrt(squaredMagnitude); + pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; + pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + } + + // Compute control points + var deltaX; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointBefore && !pointBefore.model.skip) { + deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; + pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; + pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; + } + if (pointAfter && !pointAfter.model.skip) { + deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; + pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; + pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + } + } + }; + helpers.nextItem = function(collection, index, loop) { + if (loop) { + return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + } + return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; + }; + helpers.previousItem = function(collection, index, loop) { + if (loop) { + return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + } + return index <= 0 ? collection[0] : collection[index - 1]; + }; + // Implementation of the nice number algorithm used in determining where axis labels will go + helpers.niceNum = function(range, round) { + var exponent = Math.floor(helpers.log10(range)); + var fraction = range / Math.pow(10, exponent); + var niceFraction; + + if (round) { + if (fraction < 1.5) { + niceFraction = 1; + } else if (fraction < 3) { + niceFraction = 2; + } else if (fraction < 7) { + niceFraction = 5; + } else { + niceFraction = 10; + } + } else if (fraction <= 1.0) { + niceFraction = 1; + } else if (fraction <= 2) { + niceFraction = 2; + } else if (fraction <= 5) { + niceFraction = 5; + } else { + niceFraction = 10; + } + + return niceFraction * Math.pow(10, exponent); + }; + // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + helpers.requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + callback(); + }; + } + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + return window.setTimeout(callback, 1000 / 60); + }; + }()); + // -- DOM methods + helpers.getRelativePosition = function(evt, chart) { + var mouseX, mouseY; + var e = evt.originalEvent || evt; + var canvas = evt.currentTarget || evt.srcElement; + var boundingRect = canvas.getBoundingClientRect(); + + var touches = e.touches; + if (touches && touches.length > 0) { + mouseX = touches[0].clientX; + mouseY = touches[0].clientY; + + } else { + mouseX = e.clientX; + mouseY = e.clientY; + } + + // Scale mouse coordinates into canvas coordinates + // by following the pattern laid out by 'jerryj' in the comments of + // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ + var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); + var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); + var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); + var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); + var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; + var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; + + // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However + // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here + mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); + mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); + + return { + x: mouseX, + y: mouseY + }; + + }; + + // Private helper function to convert max-width/max-height values that may be percentages into a number + function parseMaxStyle(styleValue, node, parentProperty) { + var valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); + + if (styleValue.indexOf('%') !== -1) { + // percentage * size in dimension + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } + + return valueInPixels; + } + + /** + * Returns if the given value contains an effective constraint. + * @private + */ + function isConstrainedValue(value) { + return value !== undefined && value !== null && value !== 'none'; + } + + // Private helper to get a constraint dimension + // @param domNode : the node to check the constraint on + // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) + // @param percentageProperty : property of parent to use when calculating width as a percentage + // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser + function getConstraintDimension(domNode, maxStyle, percentageProperty) { + var view = document.defaultView; + var parentNode = domNode.parentNode; + var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; + var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; + var hasCNode = isConstrainedValue(constrainedNode); + var hasCContainer = isConstrainedValue(constrainedContainer); + var infinity = Number.POSITIVE_INFINITY; + + if (hasCNode || hasCContainer) { + return Math.min( + hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, + hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); + } + + return 'none'; + } + // returns Number or undefined if no constraint + helpers.getConstraintWidth = function(domNode) { + return getConstraintDimension(domNode, 'max-width', 'clientWidth'); + }; + // returns Number or undefined if no constraint + helpers.getConstraintHeight = function(domNode) { + return getConstraintDimension(domNode, 'max-height', 'clientHeight'); + }; + helpers.getMaximumWidth = function(domNode) { + var container = domNode.parentNode; + if (!container) { + return domNode.clientWidth; + } + + var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10); + var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10); + var w = container.clientWidth - paddingLeft - paddingRight; + var cw = helpers.getConstraintWidth(domNode); + return isNaN(cw) ? w : Math.min(w, cw); + }; + helpers.getMaximumHeight = function(domNode) { + var container = domNode.parentNode; + if (!container) { + return domNode.clientHeight; + } + + var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10); + var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10); + var h = container.clientHeight - paddingTop - paddingBottom; + var ch = helpers.getConstraintHeight(domNode); + return isNaN(ch) ? h : Math.min(h, ch); + }; + helpers.getStyle = function(el, property) { + return el.currentStyle ? + el.currentStyle[property] : + document.defaultView.getComputedStyle(el, null).getPropertyValue(property); + }; + helpers.retinaScale = function(chart, forceRatio) { + var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1; + if (pixelRatio === 1) { + return; + } + + var canvas = chart.canvas; + var height = chart.height; + var width = chart.width; + + canvas.height = height * pixelRatio; + canvas.width = width * pixelRatio; + chart.ctx.scale(pixelRatio, pixelRatio); + + // If no style has been set on the canvas, the render size is used as display size, + // making the chart visually bigger, so let's enforce it to the "correct" values. + // See https://github.com/chartjs/Chart.js/issues/3575 + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + }; + // -- Canvas methods + helpers.fontString = function(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; + }; + helpers.longestText = function(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + var data = cache.data = cache.data || {}; + var gc = cache.garbageCollect = cache.garbageCollect || []; + + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + + ctx.font = font; + var longest = 0; + helpers.each(arrayOfThings, function(thing) { + // Undefined strings and arrays should not be measured + if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { + longest = helpers.measureText(ctx, data, gc, longest, thing); + } else if (helpers.isArray(thing)) { + // if it is an array lets measure each element + // to do maybe simplify this function a bit so we can do this more recursively? + helpers.each(thing, function(nestedThing) { + // Undefined strings and arrays should not be measured + if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { + longest = helpers.measureText(ctx, data, gc, longest, nestedThing); + } + }); + } + }); + + var gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (var i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; + }; + helpers.measureText = function(ctx, data, gc, longest, string) { + var textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; + }; + helpers.numberOfLabelLines = function(arrayOfThings) { + var numberOfLines = 1; + helpers.each(arrayOfThings, function(thing) { + if (helpers.isArray(thing)) { + if (thing.length > numberOfLines) { + numberOfLines = thing.length; + } + } + }); + return numberOfLines; + }; + + helpers.color = !color ? + function(value) { + console.error('Color.js not found!'); + return value; + } : + function(value) { + /* global CanvasGradient */ + if (value instanceof CanvasGradient) { + value = defaults.global.defaultColor; + } + + return color(value); + }; + + helpers.getHoverColor = function(colorValue) { + /* global CanvasPattern */ + return (colorValue instanceof CanvasPattern) ? + colorValue : + helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); + }; +}; + +},{"25":25,"3":3,"45":45}],28:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); + +/** + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {Point} the event position + */ +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } + + return helpers.getRelativePosition(e, chart); +} + +/** + * Helper function to traverse all of the visible elements in the chart + * @param chart {chart} the chart + * @param handler {Function} the callback to execute for each visible item + */ +function parseVisibleItems(chart, handler) { + var datasets = chart.data.datasets; + var meta, i, j, ilen, jlen; + + for (i = 0, ilen = datasets.length; i < ilen; ++i) { + if (!chart.isDatasetVisible(i)) { + continue; + } + + meta = chart.getDatasetMeta(i); + for (j = 0, jlen = meta.data.length; j < jlen; ++j) { + var element = meta.data[j]; + if (!element._view.skip) { + handler(element); + } + } + } +} + +/** + * Helper function to get the items that intersect the event position + * @param items {ChartElement[]} elements to filter + * @param position {Point} the point to be nearest to + * @return {ChartElement[]} the nearest items + */ +function getIntersectItems(chart, position) { + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); + + return elements; +} + +/** + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param chart {Chart} the chart to look at elements from + * @param position {Point} the point to be nearest to + * @param intersect {Boolean} if true, only consider items that intersect the position + * @param distanceMetric {Function} function to provide the distance between points + * @return {ChartElement[]} the nearest items + */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; + + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } + + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); + + return nearestItems; +} + +/** + * Get a distance metric function for two points based on the + * axis mode setting + * @param {String} axis the axis mode. x|y|xy + */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; + + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} + +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; + + if (!items.length) { + return []; + } + + chart.data.datasets.forEach(function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + var element = meta.data[items[0]._index]; + + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + } + }); + + return elements; +} + +/** + * @interface IInteractionOptions + */ +/** + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean + */ + +/** + * Contains interaction related functions + * @namespace Chart.Interaction + */ +module.exports = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); + + return elements.slice(0, 1); + }, + + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, + + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, + + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } + + return items; + }, + + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: true}); + }, + + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, + + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); + + // We have multiple items at the same distance from the event. Now sort by smallest + if (nearestItems.length > 1) { + nearestItems.sort(function(a, b) { + var sizeA = a.getArea(); + var sizeB = b.getArea(); + var ret = sizeA - sizeB; + + if (ret === 0) { + // if equal sort by dataset index + ret = a._datasetIndex - b._datasetIndex; + } + + return ret; + }); + } + + // Return only 1 item + return nearestItems.slice(0, 1); + }, + + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, + + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + } + } +}; + +},{"45":45}],29:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); + +defaults._set('global', { + responsive: true, + responsiveAnimationDuration: 0, + maintainAspectRatio: true, + events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], + hover: { + onHover: null, + mode: 'nearest', + intersect: true, + animationDuration: 400 + }, + onClick: null, + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + showLines: true, + + // Element defaults defined in element extensions + elements: {}, + + // Layout options such as padding + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } +}); + +module.exports = function() { + + // Occupy the global variable of Chart, and create a simple base class + var Chart = function(item, config) { + this.construct(item, config); + return this; + }; + + Chart.Chart = Chart; + + return Chart; +}; + +},{"25":25}],30:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); + +module.exports = function(Chart) { + + function filterByPosition(array, position) { + return helpers.where(array, function(v) { + return v.position === position; + }); + } + + function sortByWeight(array, reverse) { + array.forEach(function(v, i) { + v._tmpIndex_ = i; + return v; + }); + array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0._tmpIndex_ - v1._tmpIndex_ : + v0.weight - v1.weight; + }); + array.forEach(function(v) { + delete v._tmpIndex_; + }); + } + + /** + * @interface ILayoutItem + * @prop {String} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {Function} update - Takes two parameters: width and height. Returns size of item + * @prop {Function} getPadding - Returns an object with padding on the edges + * @prop {Number} width - Width of item. Must be valid after update() + * @prop {Number} height - Height of item. Must be valid after update() + * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ + + // The layout service is very self explanatory. It's responsible for the layout within a chart. + // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need + // It is this service's responsibility of carrying out that layout. + Chart.layoutService = { + defaults: {}, + + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + + chart.boxes.push(item); + }, + + /** + * Remove a layoutItem from a chart + * @param {Chart} chart - the chart to remove the box from + * @param {Object} layoutItem - the item to remove from the layout + */ + removeBox: function(chart, layoutItem) { + var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, + + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @param {Object} item - the item to configure with the given options + * @param {Object} options - the new item options. + */ + configure: function(chart, item, options) { + var props = ['fullWidth', 'position', 'weight']; + var ilen = props.length; + var i = 0; + var prop; + + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; + } + } + }, + + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {Number} width - the width to fit into + * @param {Number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } + + var layoutOptions = chart.options.layout || {}; + var padding = helpers.options.toPadding(layoutOptions.padding); + var leftPadding = padding.left; + var rightPadding = padding.right; + var topPadding = padding.top; + var bottomPadding = padding.bottom; + + var leftBoxes = filterByPosition(chart.boxes, 'left'); + var rightBoxes = filterByPosition(chart.boxes, 'right'); + var topBoxes = filterByPosition(chart.boxes, 'top'); + var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); + var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); + + // Sort boxes by weight. A higher weight is further away from the chart area + sortByWeight(leftBoxes, true); + sortByWeight(rightBoxes, false); + sortByWeight(topBoxes, true); + sortByWeight(bottomBoxes, false); + + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // + // What we do to find the best sizing, we do the following + // 1. Determine the minimum size of the chart area. + // 2. Split the remaining width equally between each vertical axis + // 3. Split the remaining height equally between each horizontal axis + // 4. Give each layout the maximum size it can be. The layout will return it's minimum size + // 5. Adjust the sizes of each axis based on it's minimum reported size. + // 6. Refit each axis + // 7. Position each axis in the final location + // 8. Tell the chart the final location of the chart area + // 9. Tell any axes that overlay the chart area the positions of the chart area + + // Step 1 + var chartWidth = width - leftPadding - rightPadding; + var chartHeight = height - topPadding - bottomPadding; + var chartAreaWidth = chartWidth / 2; // min 50% + var chartAreaHeight = chartHeight / 2; // min 50% + + // Step 2 + var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); + + // Step 3 + var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); + + // Step 4 + var maxChartAreaWidth = chartWidth; + var maxChartAreaHeight = chartHeight; + var minBoxSizes = []; + + function getMinimumBoxSize(box) { + var minSize; + var isHorizontal = box.isHorizontal(); + + if (isHorizontal) { + minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); + maxChartAreaHeight -= minSize.height; + } else { + minSize = box.update(verticalBoxWidth, chartAreaHeight); + maxChartAreaWidth -= minSize.width; + } + + minBoxSizes.push({ + horizontal: isHorizontal, + minSize: minSize, + box: box, + }); + } + + helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); + + // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) + var maxHorizontalLeftPadding = 0; + var maxHorizontalRightPadding = 0; + var maxVerticalTopPadding = 0; + var maxVerticalBottomPadding = 0; + + helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { + if (horizontalBox.getPadding) { + var boxPadding = horizontalBox.getPadding(); + maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); + maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); + } + }); + + helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { + if (verticalBox.getPadding) { + var boxPadding = verticalBox.getPadding(); + maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); + maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); + } + }); + + // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could + // be if the axes are drawn at their minimum sizes. + // Steps 5 & 6 + var totalLeftBoxesWidth = leftPadding; + var totalRightBoxesWidth = rightPadding; + var totalTopBoxesHeight = topPadding; + var totalBottomBoxesHeight = bottomPadding; + + // Function to fit a box + function fitBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { + return minBox.box === box; + }); + + if (minBoxSize) { + if (box.isHorizontal()) { + var scaleMargin = { + left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), + right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), + top: 0, + bottom: 0 + }; + + // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends + // on the margin. Sometimes they need to increase in size slightly + box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); + } else { + box.update(minBoxSize.minSize.width, maxChartAreaHeight); + } + } + } + + // Update, and calculate the left and right margins for the horizontal boxes + helpers.each(leftBoxes.concat(rightBoxes), fitBox); + + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); + + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); + + // Set the Left and Right margins for the horizontal boxes + helpers.each(topBoxes.concat(bottomBoxes), fitBox); + + // Figure out how much margin is on the top and bottom of the vertical boxes + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); + + function finalFitVerticalBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { + return minSize.box === box; + }); + + var scaleMargin = { + left: 0, + right: 0, + top: totalTopBoxesHeight, + bottom: totalBottomBoxesHeight + }; + + if (minBoxSize) { + box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); + } + } + + // Let the left layout know the final margin + helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); + + // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) + totalLeftBoxesWidth = leftPadding; + totalRightBoxesWidth = rightPadding; + totalTopBoxesHeight = topPadding; + totalBottomBoxesHeight = bottomPadding; + + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); + + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); + + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); + + // We may be adding some padding to account for rotated x axis labels + var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); + totalLeftBoxesWidth += leftPaddingAddition; + totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); + + var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); + totalTopBoxesHeight += topPaddingAddition; + totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); + + // Figure out if our chart area changed. This would occur if the dataset layout label rotation + // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do + // without calling `fit` again + var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; + var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; + + if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { + helpers.each(leftBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(rightBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(topBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + helpers.each(bottomBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + maxChartAreaHeight = newMaxChartAreaHeight; + maxChartAreaWidth = newMaxChartAreaWidth; + } + + // Step 7 - Position the boxes + var left = leftPadding + leftPaddingAddition; + var top = topPadding + topPaddingAddition; + + function placeBox(box) { + if (box.isHorizontal()) { + box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; + box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; + box.top = top; + box.bottom = top + box.height; + + // Move to next point + top = box.bottom; + + } else { + + box.left = left; + box.right = left + box.width; + box.top = totalTopBoxesHeight; + box.bottom = totalTopBoxesHeight + maxChartAreaHeight; + + // Move to next point + left = box.right; + } + } + + helpers.each(leftBoxes.concat(topBoxes), placeBox); + + // Account for chart width and height + left += maxChartAreaWidth; + top += maxChartAreaHeight; + + helpers.each(rightBoxes, placeBox); + helpers.each(bottomBoxes, placeBox); + + // Step 8 + chart.chartArea = { + left: totalLeftBoxesWidth, + top: totalTopBoxesHeight, + right: totalLeftBoxesWidth + maxChartAreaWidth, + bottom: totalTopBoxesHeight + maxChartAreaHeight + }; + + // Step 9 + helpers.each(chartAreaBoxes, function(box) { + box.left = chart.chartArea.left; + box.top = chart.chartArea.top; + box.right = chart.chartArea.right; + box.bottom = chart.chartArea.bottom; + + box.update(maxChartAreaWidth, maxChartAreaHeight); + }); + } + }; +}; + +},{"45":45}],31:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + plugins: {} +}); + +module.exports = function(Chart) { + + /** + * The plugin service singleton + * @namespace Chart.plugins + * @since 2.1.0 + */ + Chart.plugins = { + /** + * Globally registered plugins. + * @private + */ + _plugins: [], + + /** + * This identifier is used to invalidate the descriptors cache attached to each chart + * when a global plugin is registered or unregistered. In this case, the cache ID is + * incremented and descriptors are regenerated during following API calls. + * @private + */ + _cacheId: 0, + + /** + * Registers the given plugin(s) if not already registered. + * @param {Array|Object} plugins plugin instance(s). + */ + register: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + if (p.indexOf(plugin) === -1) { + p.push(plugin); + } + }); + + this._cacheId++; + }, + + /** + * Unregisters the given plugin(s) only if registered. + * @param {Array|Object} plugins plugin instance(s). + */ + unregister: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + var idx = p.indexOf(plugin); + if (idx !== -1) { + p.splice(idx, 1); + } + }); + + this._cacheId++; + }, + + /** + * Remove all registered plugins. + * @since 2.1.5 + */ + clear: function() { + this._plugins = []; + this._cacheId++; + }, + + /** + * Returns the number of registered plugins? + * @returns {Number} + * @since 2.1.5 + */ + count: function() { + return this._plugins.length; + }, + + /** + * Returns all registered plugin instances. + * @returns {Array} array of plugin objects. + * @since 2.1.5 + */ + getAll: function() { + return this._plugins; + }, + + /** + * Calls enabled plugins for `chart` on the specified hook and with the given args. + * This method immediately returns as soon as a plugin explicitly returns false. The + * returned value can be used, for instance, to interrupt the current action. + * @param {Object} chart - The chart instance for which plugins should be called. + * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). + * @param {Array} [args] - Extra arguments to apply to the hook call. + * @returns {Boolean} false if any of the plugins return false, else returns true. + */ + notify: function(chart, hook, args) { + var descriptors = this.descriptors(chart); + var ilen = descriptors.length; + var i, descriptor, plugin, params, method; + + for (i = 0; i < ilen; ++i) { + descriptor = descriptors[i]; + plugin = descriptor.plugin; + method = plugin[hook]; + if (typeof method === 'function') { + params = [chart].concat(args || []); + params.push(descriptor.options); + if (method.apply(plugin, params) === false) { + return false; + } + } + } + + return true; + }, + + /** + * Returns descriptors of enabled plugins for the given chart. + * @returns {Array} [{ plugin, options }] + * @private + */ + descriptors: function(chart) { + var cache = chart._plugins || (chart._plugins = {}); + if (cache.id === this._cacheId) { + return cache.descriptors; + } + + var plugins = []; + var descriptors = []; + var config = (chart && chart.config) || {}; + var options = (config.options && config.options.plugins) || {}; + + this._plugins.concat(config.plugins || []).forEach(function(plugin) { + var idx = plugins.indexOf(plugin); + if (idx !== -1) { + return; + } + + var id = plugin.id; + var opts = options[id]; + if (opts === false) { + return; + } + + if (opts === true) { + opts = helpers.clone(defaults.global.plugins[id]); + } + + plugins.push(plugin); + descriptors.push({ + plugin: plugin, + options: opts || {} + }); + }); + + cache.descriptors = descriptors; + cache.id = this._cacheId; + return descriptors; + } + }; + + /** + * Plugin extension hooks. + * @interface IPlugin + * @since 2.1.0 + */ + /** + * @method IPlugin#beforeInit + * @desc Called before initializing `chart`. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#afterInit + * @desc Called after `chart` has been initialized and before the first update. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeUpdate + * @desc Called before updating `chart`. If any plugin returns `false`, the update + * is cancelled (and thus subsequent render(s)) until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart update. + */ + /** + * @method IPlugin#afterUpdate + * @desc Called after `chart` has been updated and before rendering. Note that this + * hook will not be called if the chart update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeDatasetsUpdate + * @desc Called before updating the `chart` datasets. If any plugin returns `false`, + * the datasets update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} false to cancel the datasets update. + * @since version 2.1.5 + */ + /** + * @method IPlugin#afterDatasetsUpdate + * @desc Called after the `chart` datasets have been updated. Note that this hook + * will not be called if the datasets update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @since version 2.1.5 + */ + /** + * @method IPlugin#beforeDatasetUpdate + * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin + * returns `false`, the datasets update is cancelled until another `update` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ + /** + * @method IPlugin#afterDatasetUpdate + * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note + * that this hook will not be called if the datasets update has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeLayout + * @desc Called before laying out `chart`. If any plugin returns `false`, + * the layout update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart layout. + */ + /** + * @method IPlugin#afterLayout + * @desc Called after the `chart` has been layed out. Note that this hook will not + * be called if the layout update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeRender + * @desc Called before rendering `chart`. If any plugin returns `false`, + * the rendering is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart rendering. + */ + /** + * @method IPlugin#afterRender + * @desc Called after the `chart` has been fully rendered (and animation completed). Note + * that this hook will not be called if the rendering has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeDraw + * @desc Called before drawing `chart` at every animation frame specified by the given + * easing value. If any plugin returns `false`, the frame drawing is cancelled until + * another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart drawing. + */ + /** + * @method IPlugin#afterDraw + * @desc Called after the `chart` has been drawn for the specific easing value. Note + * that this hook will not be called if the drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeDatasetsDraw + * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, + * the datasets drawing is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ + /** + * @method IPlugin#afterDatasetsDraw + * @desc Called after the `chart` datasets have been drawn. Note that this hook + * will not be called if the datasets drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeDatasetDraw + * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets + * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing + * is cancelled until another `render` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ + /** + * @method IPlugin#afterDatasetDraw + * @desc Called after the `chart` datasets at the given `args.index` have been drawn + * (datasets are drawn in the reverse order). Note that this hook will not be called + * if the datasets drawing has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#beforeEvent + * @desc Called before processing the specified `event`. If any plugin returns `false`, + * the event will be discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#afterEvent + * @desc Called after the `event` has been consumed. Note that this hook + * will not be called if the `event` has been previously discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#resize + * @desc Called after the chart as been resized. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} size - The new canvas display size (eq. canvas.style width & height). + * @param {Object} options - The plugin options. + */ + /** + * @method IPlugin#destroy + * @desc Called after the chart as been destroyed. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ + + /** + * Provided for backward compatibility, use Chart.plugins instead + * @namespace Chart.pluginService + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ + Chart.pluginService = Chart.plugins; + + /** + * Provided for backward compatibility, inheriting from Chart.PlugingBase has no + * effect, instead simply create/register plugins via plain JavaScript objects. + * @interface Chart.PluginBase + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + Chart.PluginBase = Element.extend({}); +}; + +},{"25":25,"26":26,"45":45}],32:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); +var Ticks = require(34); + +defaults._set('scale', { + display: true, + position: 'left', + offset: false, + + // grid line settings + gridLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickMarkLength: 10, + zeroLineWidth: 1, + zeroLineColor: 'rgba(0,0,0,0.25)', + zeroLineBorderDash: [], + zeroLineBorderDashOffset: 0.0, + offsetGridLines: false, + borderDash: [], + borderDashOffset: 0.0 + }, + + // scale label + scaleLabel: { + // display property + display: false, + + // actual label + labelString: '', + + // line height + lineHeight: 1.2, + + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }, + + // label settings + ticks: { + beginAtZero: false, + minRotation: 0, + maxRotation: 50, + mirror: false, + padding: 0, + reverse: false, + display: true, + autoSkip: true, + autoSkipPadding: 0, + labelOffset: 0, + // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. + callback: Ticks.formatters.values, + minor: {}, + major: {} + } +}); + +function labelsFromTicks(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(ticks[i].label); + } + + return labels; +} + +function getLineValue(scale, index, offsetGridLines) { + var lineValue = scale.getPixelForTick(index); + + if (offsetGridLines) { + if (index === 0) { + lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; + } else { + lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; + } + } + return lineValue; +} + +module.exports = function(Chart) { + + function computeTextSize(context, tick, font) { + return helpers.isArray(tick) ? + helpers.longestText(context, font, tick) : + context.measureText(tick).width; + } + + function parseFontOptions(options) { + var valueOrDefault = helpers.valueOrDefault; + var globalDefaults = defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); + var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); + + return { + size: size, + style: style, + family: family, + font: helpers.fontString(size, style, family) + }; + } + + function parseLineHeight(options) { + return helpers.options.toLineHeight( + helpers.valueOrDefault(options.lineHeight, 1.2), + helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); + } + + Chart.Scale = Element.extend({ + /** + * Get the padding needed for the scale + * @method getPadding + * @private + * @returns {Padding} the necessary padding + */ + getPadding: function() { + var me = this; + return { + left: me.paddingLeft || 0, + top: me.paddingTop || 0, + right: me.paddingRight || 0, + bottom: me.paddingBottom || 0 + }; + }, + + /** + * Returns the scale tick objects ({label, major}) + * @since 2.7 + */ + getTicks: function() { + return this._ticks; + }, + + // These methods are ordered by lifecyle. Utilities then follow. + // Any function defined here is inherited by all scale types. + // Any function can be extended by the scale type + + mergeTicksOptions: function() { + var ticks = this.options.ticks; + if (ticks.minor === false) { + ticks.minor = { + display: false + }; + } + if (ticks.major === false) { + ticks.major = { + display: false + }; + } + for (var key in ticks) { + if (key !== 'major' && key !== 'minor') { + if (typeof ticks.minor[key] === 'undefined') { + ticks.minor[key] = ticks[key]; + } + if (typeof ticks.major[key] === 'undefined') { + ticks.major[key] = ticks[key]; + } + } + } + }, + beforeUpdate: function() { + helpers.callback(this.options.beforeUpdate, [this]); + }, + update: function(maxWidth, maxHeight, margins) { + var me = this; + var i, ilen, labels, label, ticks, tick; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = helpers.extend({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + me.longestTextCache = me.longestTextCache || {}; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + + // Data min/max + me.beforeDataLimits(); + me.determineDataLimits(); + me.afterDataLimits(); + + // Ticks - `this.ticks` is now DEPRECATED! + // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member + // and must not be accessed directly from outside this class. `this.ticks` being + // around for long time and not marked as private, we can't change its structure + // without unexpected breaking changes. If you need to access the scale ticks, + // use scale.getTicks() instead. + + me.beforeBuildTicks(); + + // New implementations should return an array of objects but for BACKWARD COMPAT, + // we still support no return (`this.ticks` internally set by calling this method). + ticks = me.buildTicks() || []; + + me.afterBuildTicks(); + + me.beforeTickToLabelConversion(); + + // New implementations should return the formatted tick labels but for BACKWARD + // COMPAT, we still support no return (`this.ticks` internally changed by calling + // this method and supposed to contain only string values). + labels = me.convertTicksToLabels(ticks) || me.ticks; + + me.afterTickToLabelConversion(); + + me.ticks = labels; // BACKWARD COMPATIBILITY + + // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! + + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = labels.length; i < ilen; ++i) { + label = labels[i]; + tick = ticks[i]; + if (!tick) { + ticks.push(tick = { + label: label, + major: false + }); + } else { + tick.label = label; + } + } + + me._ticks = ticks; + + // Tick Rotation + me.beforeCalculateTickRotation(); + me.calculateTickRotation(); + me.afterCalculateTickRotation(); + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: function() { + helpers.callback(this.options.afterUpdate, [this]); + }, + + // + + beforeSetDimensions: function() { + helpers.callback(this.options.beforeSetDimensions, [this]); + }, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + }, + afterSetDimensions: function() { + helpers.callback(this.options.afterSetDimensions, [this]); + }, + + // Data limits + beforeDataLimits: function() { + helpers.callback(this.options.beforeDataLimits, [this]); + }, + determineDataLimits: helpers.noop, + afterDataLimits: function() { + helpers.callback(this.options.afterDataLimits, [this]); + }, + + // + beforeBuildTicks: function() { + helpers.callback(this.options.beforeBuildTicks, [this]); + }, + buildTicks: helpers.noop, + afterBuildTicks: function() { + helpers.callback(this.options.afterBuildTicks, [this]); + }, + + beforeTickToLabelConversion: function() { + helpers.callback(this.options.beforeTickToLabelConversion, [this]); + }, + convertTicksToLabels: function() { + var me = this; + // Convert ticks to strings + var tickOpts = me.options.ticks; + me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); + }, + afterTickToLabelConversion: function() { + helpers.callback(this.options.afterTickToLabelConversion, [this]); + }, + + // + + beforeCalculateTickRotation: function() { + helpers.callback(this.options.beforeCalculateTickRotation, [this]); + }, + calculateTickRotation: function() { + var me = this; + var context = me.ctx; + var tickOpts = me.options.ticks; + var labels = labelsFromTicks(me._ticks); + + // Get the width of each grid by calculating the difference + // between x offsets between 0 and 1. + var tickFont = parseFontOptions(tickOpts); + context.font = tickFont.font; + + var labelRotation = tickOpts.minRotation || 0; + + if (labels.length && me.options.display && me.isHorizontal()) { + var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); + var labelWidth = originalLabelWidth; + var cosRotation, sinRotation; + + // Allow 3 pixels x2 padding either side for label readability + var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; + + // Max label rotation can be set or default to 90 - also act as a loop counter + while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { + var angleRadians = helpers.toRadians(labelRotation); + cosRotation = Math.cos(angleRadians); + sinRotation = Math.sin(angleRadians); + + if (sinRotation * originalLabelWidth > me.maxHeight) { + // go back one step + labelRotation--; + break; + } + + labelRotation++; + labelWidth = cosRotation * originalLabelWidth; + } + } + + me.labelRotation = labelRotation; + }, + afterCalculateTickRotation: function() { + helpers.callback(this.options.afterCalculateTickRotation, [this]); + }, + + // + + beforeFit: function() { + helpers.callback(this.options.beforeFit, [this]); + }, + fit: function() { + var me = this; + // Reset + var minSize = me.minSize = { + width: 0, + height: 0 + }; + + var labels = labelsFromTicks(me._ticks); + + var opts = me.options; + var tickOpts = opts.ticks; + var scaleLabelOpts = opts.scaleLabel; + var gridLineOpts = opts.gridLines; + var display = opts.display; + var isHorizontal = me.isHorizontal(); + + var tickFont = parseFontOptions(tickOpts); + var tickMarkLength = opts.gridLines.tickMarkLength; + + // Width + if (isHorizontal) { + // subtract the margins to line up with the chartArea if we are a full width scale + minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; + } else { + minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } + + // height + if (isHorizontal) { + minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } else { + minSize.height = me.maxHeight; // fill all the height + } + + // Are we showing a title for the scale? + if (scaleLabelOpts.display && display) { + var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); + var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); + var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; + + if (isHorizontal) { + minSize.height += deltaHeight; + } else { + minSize.width += deltaHeight; + } + } + + // Don't bother fitting the ticks if we are not showing them + if (tickOpts.display && display) { + var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); + var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); + var lineSpace = tickFont.size * 0.5; + var tickPadding = me.options.ticks.padding; + + if (isHorizontal) { + // A horizontal axis is more constrained by the height. + me.longestLabelWidth = largestTextWidth; + + var angleRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(angleRadians); + var sinRotation = Math.sin(angleRadians); + + // TODO - improve this calculation + var labelHeight = (sinRotation * largestTextWidth) + + (tickFont.size * tallestLabelHeightInLines) + + (lineSpace * (tallestLabelHeightInLines - 1)) + + lineSpace; // padding + + minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + + me.ctx.font = tickFont.font; + var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); + var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); + + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height + if (me.labelRotation !== 0) { + me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges + me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; + } else { + me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges + me.paddingRight = lastLabelWidth / 2 + 3; + } + } else { + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding + if (tickOpts.mirror) { + largestTextWidth = 0; + } else { + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + largestTextWidth += tickPadding + lineSpace; + } + + minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + + me.paddingTop = tickFont.size / 2; + me.paddingBottom = tickFont.size / 2; + } + } + + me.handleMargins(); + + me.width = minSize.width; + me.height = minSize.height; + }, + + /** + * Handle margins and padding interactions + * @private + */ + handleMargins: function() { + var me = this; + if (me.margins) { + me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); + me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); + me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); + me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); + } + }, + + afterFit: function() { + helpers.callback(this.options.afterFit, [this]); + }, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + isFullWidth: function() { + return (this.options.fullWidth); + }, + + // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not + getRightValue: function(rawValue) { + // Null and undefined values first + if (helpers.isNullOrUndef(rawValue)) { + return NaN; + } + // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values + if (typeof rawValue === 'number' && !isFinite(rawValue)) { + return NaN; + } + // If it is in fact an object, dive in one more level + if (rawValue) { + if (this.isHorizontal()) { + if (rawValue.x !== undefined) { + return this.getRightValue(rawValue.x); + } + } else if (rawValue.y !== undefined) { + return this.getRightValue(rawValue.y); + } + } + + // Value is good, return it + return rawValue; + }, + + // Used to get the value to display in the tooltip for the data at the given index + // function getLabelForIndex(index, datasetIndex) + getLabelForIndex: helpers.noop, + + // Used to get data value locations. Value can either be an index or a numerical value + getPixelForValue: helpers.noop, + + // Used to get the data value from a given pixel. This is the inverse of getPixelForValue + getValueForPixel: helpers.noop, + + // Used for tick location, should + getPixelForTick: function(index) { + var me = this; + var offset = me.options.offset; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var pixel = (tickWidth * index) + me.paddingLeft; + + if (offset) { + pixel += tickWidth / 2; + } + + var finalVal = me.left + Math.round(pixel); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + var innerHeight = me.height - (me.paddingTop + me.paddingBottom); + return me.top + (index * (innerHeight / (me._ticks.length - 1))); + }, + + // Utility for getting the pixel location of a percentage of scale + getPixelForDecimal: function(decimal) { + var me = this; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var valueOffset = (innerWidth * decimal) + me.paddingLeft; + + var finalVal = me.left + Math.round(valueOffset); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + return me.top + (decimal * me.height); + }, + + getBasePixel: function() { + return this.getPixelForValue(this.getBaseValue()); + }, + + getBaseValue: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + }, + + /** + * Returns a subset of ticks to be plotted to avoid overlapping labels. + * @private + */ + _autoSkip: function(ticks) { + var skipRatio; + var me = this; + var isHorizontal = me.isHorizontal(); + var optionTicks = me.options.ticks.minor; + var tickCount = ticks.length; + var labelRotationRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(labelRotationRadians); + var longestRotatedLabel = me.longestLabelWidth * cosRotation; + var result = []; + var i, tick, shouldSkip; + + // figure out the maximum number of gridlines to show + var maxTicks; + if (optionTicks.maxTicksLimit) { + maxTicks = optionTicks.maxTicksLimit; + } + + if (isHorizontal) { + skipRatio = false; + + if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { + skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); + } + + // if they defined a max number of optionTicks, + // increase skipRatio until that number is met + if (maxTicks && tickCount > maxTicks) { + skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); + } + } + + for (i = 0; i < tickCount; i++) { + tick = ticks[i]; + + // Since we always show the last tick,we need may need to hide the last shown one before + shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); + if (shouldSkip && i !== tickCount - 1 || helpers.isNullOrUndef(tick.label)) { + // leave tick in place but make sure it's not displayed (#4635) + delete tick.label; + } + result.push(tick); + } + return result; + }, + + // Actually draw the scale on the canvas + // @param {rectangle} chartArea : the area of the chart to draw full grid lines on + draw: function(chartArea) { + var me = this; + var options = me.options; + if (!options.display) { + return; + } + + var context = me.ctx; + var globalDefaults = defaults.global; + var optionTicks = options.ticks.minor; + var optionMajorTicks = options.ticks.major || optionTicks; + var gridLines = options.gridLines; + var scaleLabel = options.scaleLabel; + + var isRotated = me.labelRotation !== 0; + var isHorizontal = me.isHorizontal(); + + var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); + var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); + var tickFont = parseFontOptions(optionTicks); + var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); + var majorTickFont = parseFontOptions(optionMajorTicks); + + var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; + + var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); + var scaleLabelFont = parseFontOptions(scaleLabel); + var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); + var labelRotationRadians = helpers.toRadians(me.labelRotation); + + var itemsToDraw = []; + + var xTickStart = options.position === 'right' ? me.left : me.right - tl; + var xTickEnd = options.position === 'right' ? me.left + tl : me.right; + var yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl; + var yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom; + + helpers.each(ticks, function(tick, index) { + // autoskipper skipped this tick (#4635) + if (tick.label === undefined) { + return; + } + + var label = tick.label; + var lineWidth, lineColor, borderDash, borderDashOffset; + if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { + // Draw the first index specially + lineWidth = gridLines.zeroLineWidth; + lineColor = gridLines.zeroLineColor; + borderDash = gridLines.zeroLineBorderDash; + borderDashOffset = gridLines.zeroLineBorderDashOffset; + } else { + lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); + lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); + borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); + borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); + } + + // Common properties + var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; + var textAlign = 'middle'; + var textBaseline = 'middle'; + var tickPadding = optionTicks.padding; + + if (isHorizontal) { + var labelYOffset = tl + tickPadding; + + if (options.position === 'bottom') { + // bottom + textBaseline = !isRotated ? 'top' : 'middle'; + textAlign = !isRotated ? 'center' : 'right'; + labelY = me.top + labelYOffset; + } else { + // top + textBaseline = !isRotated ? 'bottom' : 'middle'; + textAlign = !isRotated ? 'center' : 'left'; + labelY = me.bottom - labelYOffset; + } + + var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (xLineValue < me.left) { + lineColor = 'rgba(0,0,0,0)'; + } + xLineValue += helpers.aliasPixel(lineWidth); + + labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) + + tx1 = tx2 = x1 = x2 = xLineValue; + ty1 = yTickStart; + ty2 = yTickEnd; + y1 = chartArea.top; + y2 = chartArea.bottom; + } else { + var isLeft = options.position === 'left'; + var labelXOffset; + + if (optionTicks.mirror) { + textAlign = isLeft ? 'left' : 'right'; + labelXOffset = tickPadding; + } else { + textAlign = isLeft ? 'right' : 'left'; + labelXOffset = tl + tickPadding; + } + + labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; + + var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (yLineValue < me.top) { + lineColor = 'rgba(0,0,0,0)'; + } + yLineValue += helpers.aliasPixel(lineWidth); + + labelY = me.getPixelForTick(index) + optionTicks.labelOffset; + + tx1 = xTickStart; + tx2 = xTickEnd; + x1 = chartArea.left; + x2 = chartArea.right; + ty1 = ty2 = y1 = y2 = yLineValue; + } + + itemsToDraw.push({ + tx1: tx1, + ty1: ty1, + tx2: tx2, + ty2: ty2, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + labelX: labelX, + labelY: labelY, + glWidth: lineWidth, + glColor: lineColor, + glBorderDash: borderDash, + glBorderDashOffset: borderDashOffset, + rotation: -1 * labelRotationRadians, + label: label, + major: tick.major, + textBaseline: textBaseline, + textAlign: textAlign + }); + }); + + // Draw all of the tick labels, tick marks, and grid lines at the correct places + helpers.each(itemsToDraw, function(itemToDraw) { + if (gridLines.display) { + context.save(); + context.lineWidth = itemToDraw.glWidth; + context.strokeStyle = itemToDraw.glColor; + if (context.setLineDash) { + context.setLineDash(itemToDraw.glBorderDash); + context.lineDashOffset = itemToDraw.glBorderDashOffset; + } + + context.beginPath(); + + if (gridLines.drawTicks) { + context.moveTo(itemToDraw.tx1, itemToDraw.ty1); + context.lineTo(itemToDraw.tx2, itemToDraw.ty2); + } + + if (gridLines.drawOnChartArea) { + context.moveTo(itemToDraw.x1, itemToDraw.y1); + context.lineTo(itemToDraw.x2, itemToDraw.y2); + } + + context.stroke(); + context.restore(); + } + + if (optionTicks.display) { + // Make sure we draw text in the correct color and font + context.save(); + context.translate(itemToDraw.labelX, itemToDraw.labelY); + context.rotate(itemToDraw.rotation); + context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; + context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; + context.textBaseline = itemToDraw.textBaseline; + context.textAlign = itemToDraw.textAlign; + + var label = itemToDraw.label; + if (helpers.isArray(label)) { + for (var i = 0, y = 0; i < label.length; ++i) { + // We just make sure the multiline element is a string here.. + context.fillText('' + label[i], 0, y); + // apply same lineSpacing as calculated @ L#320 + y += (tickFont.size * 1.5); + } + } else { + context.fillText(label, 0, 0); + } + context.restore(); + } + }); + + if (scaleLabel.display) { + // Draw the scale label + var scaleLabelX; + var scaleLabelY; + var rotation = 0; + var halfLineHeight = parseLineHeight(scaleLabel) / 2; + + if (isHorizontal) { + scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width + scaleLabelY = options.position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; + } else { + var isLeft = options.position === 'left'; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; + scaleLabelY = me.top + ((me.bottom - me.top) / 2); + rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; + } + + context.save(); + context.translate(scaleLabelX, scaleLabelY); + context.rotate(rotation); + context.textAlign = 'center'; + context.textBaseline = 'middle'; + context.fillStyle = scaleLabelFontColor; // render in correct colour + context.font = scaleLabelFont.font; + context.fillText(scaleLabel.labelString, 0, 0); + context.restore(); + } + + if (gridLines.drawBorder) { + // Draw the line at the edge of the axis + context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); + context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); + var x1 = me.left; + var x2 = me.right; + var y1 = me.top; + var y2 = me.bottom; + + var aliasPixel = helpers.aliasPixel(context.lineWidth); + if (isHorizontal) { + y1 = y2 = options.position === 'top' ? me.bottom : me.top; + y1 += aliasPixel; + y2 += aliasPixel; + } else { + x1 = x2 = options.position === 'left' ? me.right : me.left; + x1 += aliasPixel; + x2 += aliasPixel; + } + + context.beginPath(); + context.moveTo(x1, y1); + context.lineTo(x2, y2); + context.stroke(); + } + } + }); +}; + +},{"25":25,"26":26,"34":34,"45":45}],33:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var helpers = require(45); + +module.exports = function(Chart) { + + Chart.scaleService = { + // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then + // use the new chart options to grab the correct scale + constructors: {}, + // Use a registration function so that we can move to an ES6 map when we no longer need to support + // old browsers + + // Scale config defaults + defaults: {}, + registerScaleType: function(type, scaleConstructor, scaleDefaults) { + this.constructors[type] = scaleConstructor; + this.defaults[type] = helpers.clone(scaleDefaults); + }, + getScaleConstructor: function(type) { + return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + }, + getScaleDefaults: function(type) { + // Return the scale defaults merged with the global settings so that we always use the latest ones + return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; + }, + updateScaleDefaults: function(type, additions) { + var me = this; + if (me.defaults.hasOwnProperty(type)) { + me.defaults[type] = helpers.extend(me.defaults[type], additions); + } + }, + addScalesToLayout: function(chart) { + // Adds each scale to the chart.boxes array to be sized accordingly + helpers.each(chart.scales, function(scale) { + // Set ILayoutItem parameters for backwards compatibility + scale.fullWidth = scale.options.fullWidth; + scale.position = scale.options.position; + scale.weight = scale.options.weight; + Chart.layoutService.addBox(chart, scale); + }); + } + }; +}; + +},{"25":25,"45":45}],34:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); + +/** + * Namespace to hold static tick generation functions + * @namespace Chart.Ticks + */ +module.exports = { + /** + * Namespace to hold generators for different types of ticks + * @namespace Chart.Ticks.generators + */ + generators: { + /** + * Interface for the options provided to the numeric tick generator + * @interface INumericTickGenerationOptions + */ + /** + * The maximum number of ticks to display + * @name INumericTickGenerationOptions#maxTicks + * @type Number + */ + /** + * The distance between each tick. + * @name INumericTickGenerationOptions#stepSize + * @type Number + * @optional + */ + /** + * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum + * @name INumericTickGenerationOptions#min + * @type Number + * @optional + */ + /** + * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum + * @name INumericTickGenerationOptions#max + * @type Number + * @optional + */ + + /** + * Generate a set of linear ticks + * @method Chart.Ticks.generators.linear + * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks + * @param dataRange {IRange} the range of the data + * @returns {Array} array of tick values + */ + linear: function(generationOptions, dataRange) { + var ticks = []; + // To get a "nice" value for the tick spacing, we will use the appropriately named + // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks + // for details. + + var spacing; + if (generationOptions.stepSize && generationOptions.stepSize > 0) { + spacing = generationOptions.stepSize; + } else { + var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false); + spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true); + } + var niceMin = Math.floor(dataRange.min / spacing) * spacing; + var niceMax = Math.ceil(dataRange.max / spacing) * spacing; + + // If min, max and stepSize is set and they make an evenly spaced scale use it. + if (generationOptions.min && generationOptions.max && generationOptions.stepSize) { + // If very close to our whole number, use it. + if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) { + niceMin = generationOptions.min; + niceMax = generationOptions.max; + } + } + + var numSpaces = (niceMax - niceMin) / spacing; + // If very close to our rounded value, use it. + if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + + // Put the values into the ticks array + ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin); + for (var j = 1; j < numSpaces; ++j) { + ticks.push(niceMin + (j * spacing)); + } + ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax); + + return ticks; + }, + + /** + * Generate a set of logarithmic ticks + * @method Chart.Ticks.generators.logarithmic + * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks + * @param dataRange {IRange} the range of the data + * @returns {Array} array of tick values + */ + logarithmic: function(generationOptions, dataRange) { + var ticks = []; + var valueOrDefault = helpers.valueOrDefault; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph + var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min)))); + + var endExp = Math.floor(helpers.log10(dataRange.max)); + var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); + var exp, significand; + + if (tickVal === 0) { + exp = Math.floor(helpers.log10(dataRange.minNotZero)); + significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); + + ticks.push(tickVal); + tickVal = significand * Math.pow(10, exp); + } else { + exp = Math.floor(helpers.log10(tickVal)); + significand = Math.floor(tickVal / Math.pow(10, exp)); + } + + do { + ticks.push(tickVal); + + ++significand; + if (significand === 10) { + significand = 1; + ++exp; + } + + tickVal = significand * Math.pow(10, exp); + } while (exp < endExp || (exp === endExp && significand < endSignificand)); + + var lastTick = valueOrDefault(generationOptions.max, tickVal); + ticks.push(lastTick); + + return ticks; + } + }, + + /** + * Namespace to hold formatters for different types of ticks + * @namespace Chart.Ticks.formatters + */ + formatters: { + /** + * Formatter for value labels + * @method Chart.Ticks.formatters.values + * @param value the value to display + * @return {String|Array} the label to display + */ + values: function(value) { + return helpers.isArray(value) ? value : '' + value; + }, + + /** + * Formatter for linear numeric ticks + * @method Chart.Ticks.formatters.linear + * @param tickValue {Number} the value to be formatted + * @param index {Number} the position of the tickValue parameter in the ticks array + * @param ticks {Array} the list of ticks being converted + * @return {String} string representation of the tickValue parameter + */ + linear: function(tickValue, index, ticks) { + // If we have lots of ticks, don't use the ones + var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; + + // If we have a number like 2.5 as the delta, figure out how many decimal places we need + if (Math.abs(delta) > 1) { + if (tickValue !== Math.floor(tickValue)) { + // not an integer + delta = tickValue - Math.floor(tickValue); + } + } + + var logDelta = helpers.log10(Math.abs(delta)); + var tickString = ''; + + if (tickValue !== 0) { + var numDecimal = -1 * Math.floor(logDelta); + numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places + tickString = tickValue.toFixed(numDecimal); + } else { + tickString = '0'; // never show decimal places for 0 + } + + return tickString; + }, + + logarithmic: function(tickValue, index, ticks) { + var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); + + if (tickValue === 0) { + return '0'; + } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { + return tickValue.toExponential(); + } + return ''; + } + } +}; + +},{"45":45}],35:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + tooltips: { + enabled: true, + custom: null, + mode: 'nearest', + position: 'average', + intersect: true, + backgroundColor: 'rgba(0,0,0,0.8)', + titleFontStyle: 'bold', + titleSpacing: 2, + titleMarginBottom: 6, + titleFontColor: '#fff', + titleAlign: 'left', + bodySpacing: 2, + bodyFontColor: '#fff', + bodyAlign: 'left', + footerFontStyle: 'bold', + footerSpacing: 2, + footerMarginTop: 6, + footerFontColor: '#fff', + footerAlign: 'left', + yPadding: 6, + xPadding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + multiKeyBackground: '#fff', + displayColors: true, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + callbacks: { + // Args are: (tooltipItems, data) + beforeTitle: helpers.noop, + title: function(tooltipItems, data) { + // Pick first xLabel for now + var title = ''; + var labels = data.labels; + var labelCount = labels ? labels.length : 0; + + if (tooltipItems.length > 0) { + var item = tooltipItems[0]; + + if (item.xLabel) { + title = item.xLabel; + } else if (labelCount > 0 && item.index < labelCount) { + title = labels[item.index]; + } + } + + return title; + }, + afterTitle: helpers.noop, + + // Args are: (tooltipItems, data) + beforeBody: helpers.noop, + + // Args are: (tooltipItem, data) + beforeLabel: helpers.noop, + label: function(tooltipItem, data) { + var label = data.datasets[tooltipItem.datasetIndex].label || ''; + + if (label) { + label += ': '; + } + label += tooltipItem.yLabel; + return label; + }, + labelColor: function(tooltipItem, chart) { + var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); + var activeElement = meta.data[tooltipItem.index]; + var view = activeElement._view; + return { + borderColor: view.borderColor, + backgroundColor: view.backgroundColor + }; + }, + labelTextColor: function() { + return this._options.bodyFontColor; + }, + afterLabel: helpers.noop, + + // Args are: (tooltipItems, data) + afterBody: helpers.noop, + + // Args are: (tooltipItems, data) + beforeFooter: helpers.noop, + footer: helpers.noop, + afterFooter: helpers.noop + } + } +}); + +module.exports = function(Chart) { + + /** + * Helper method to merge the opacity into a color + */ + function mergeOpacity(colorString, opacity) { + var color = helpers.color(colorString); + return color.alpha(opacity * color.alpha()).rgbaString(); + } + + // Helper to push or concat based on if the 2nd parameter is an array or not + function pushOrConcat(base, toPush) { + if (toPush) { + if (helpers.isArray(toPush)) { + // base = base.concat(toPush); + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } + + return base; + } + + // Private helper to create a tooltip item model + // @param element : the chart element (point, arc, bar) to create the tooltip item for + // @return : new tooltip item + function createTooltipItem(element) { + var xScale = element._xScale; + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + var index = element._index; + var datasetIndex = element._datasetIndex; + + return { + xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', + index: index, + datasetIndex: datasetIndex, + x: element._model.x, + y: element._model.y + }; + } + + /** + * Helper to get the reset model for the tooltip + * @param tooltipOpts {Object} the tooltip options + */ + function getBaseModel(tooltipOpts) { + var globalDefaults = defaults.global; + var valueOrDefault = helpers.valueOrDefault; + + return { + // Positioning + xPadding: tooltipOpts.xPadding, + yPadding: tooltipOpts.yPadding, + xAlign: tooltipOpts.xAlign, + yAlign: tooltipOpts.yAlign, + + // Body + bodyFontColor: tooltipOpts.bodyFontColor, + _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), + _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), + _bodyAlign: tooltipOpts.bodyAlign, + bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), + bodySpacing: tooltipOpts.bodySpacing, + + // Title + titleFontColor: tooltipOpts.titleFontColor, + _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), + _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), + titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), + _titleAlign: tooltipOpts.titleAlign, + titleSpacing: tooltipOpts.titleSpacing, + titleMarginBottom: tooltipOpts.titleMarginBottom, + + // Footer + footerFontColor: tooltipOpts.footerFontColor, + _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), + _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), + footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), + _footerAlign: tooltipOpts.footerAlign, + footerSpacing: tooltipOpts.footerSpacing, + footerMarginTop: tooltipOpts.footerMarginTop, + + // Appearance + caretSize: tooltipOpts.caretSize, + cornerRadius: tooltipOpts.cornerRadius, + backgroundColor: tooltipOpts.backgroundColor, + opacity: 0, + legendColorBackground: tooltipOpts.multiKeyBackground, + displayColors: tooltipOpts.displayColors, + borderColor: tooltipOpts.borderColor, + borderWidth: tooltipOpts.borderWidth + }; + } + + /** + * Get the size of the tooltip + */ + function getTooltipSize(tooltip, model) { + var ctx = tooltip._chart.ctx; + + var height = model.yPadding * 2; // Tooltip Padding + var width = 0; + + // Count of all lines in the body + var body = model.body; + var combinedBodyLength = body.reduce(function(count, bodyItem) { + return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; + }, 0); + combinedBodyLength += model.beforeBody.length + model.afterBody.length; + + var titleLineCount = model.title.length; + var footerLineCount = model.footer.length; + var titleFontSize = model.titleFontSize; + var bodyFontSize = model.bodyFontSize; + var footerFontSize = model.footerFontSize; + + height += titleLineCount * titleFontSize; // Title Lines + height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing + height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin + height += combinedBodyLength * bodyFontSize; // Body Lines + height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing + height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin + height += footerLineCount * (footerFontSize); // Footer Lines + height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing + + // Title width + var widthPadding = 0; + var maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; + + ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); + helpers.each(model.title, maxLineWidth); + + // Body width + ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); + helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); + + // Body lines may include some extra width due to the color box + widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; + helpers.each(body, function(bodyItem) { + helpers.each(bodyItem.before, maxLineWidth); + helpers.each(bodyItem.lines, maxLineWidth); + helpers.each(bodyItem.after, maxLineWidth); + }); + + // Reset back to 0 + widthPadding = 0; + + // Footer width + ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); + helpers.each(model.footer, maxLineWidth); + + // Add padding + width += 2 * model.xPadding; + + return { + width: width, + height: height + }; + } + + /** + * Helper to get the alignment of a tooltip given the size + */ + function determineAlignment(tooltip, size) { + var model = tooltip._model; + var chart = tooltip._chart; + var chartArea = tooltip._chart.chartArea; + var xAlign = 'center'; + var yAlign = 'center'; + + if (model.y < size.height) { + yAlign = 'top'; + } else if (model.y > (chart.height - size.height)) { + yAlign = 'bottom'; + } + + var lf, rf; // functions to determine left, right alignment + var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart + var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges + var midX = (chartArea.left + chartArea.right) / 2; + var midY = (chartArea.top + chartArea.bottom) / 2; + + if (yAlign === 'center') { + lf = function(x) { + return x <= midX; + }; + rf = function(x) { + return x > midX; + }; + } else { + lf = function(x) { + return x <= (size.width / 2); + }; + rf = function(x) { + return x >= (chart.width - (size.width / 2)); + }; + } + + olf = function(x) { + return x + size.width > chart.width; + }; + orf = function(x) { + return x - size.width < 0; + }; + yf = function(y) { + return y <= midY ? 'top' : 'bottom'; + }; + + if (lf(model.x)) { + xAlign = 'left'; + + // Is tooltip too wide and goes over the right side of the chart.? + if (olf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } else if (rf(model.x)) { + xAlign = 'right'; + + // Is tooltip too wide and goes outside left edge of canvas? + if (orf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } + + var opts = tooltip._options; + return { + xAlign: opts.xAlign ? opts.xAlign : xAlign, + yAlign: opts.yAlign ? opts.yAlign : yAlign + }; + } + + /** + * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment + */ + function getBackgroundPoint(vm, size, alignment) { + // Background Position + var x = vm.x; + var y = vm.y; + + var caretSize = vm.caretSize; + var caretPadding = vm.caretPadding; + var cornerRadius = vm.cornerRadius; + var xAlign = alignment.xAlign; + var yAlign = alignment.yAlign; + var paddingAndSize = caretSize + caretPadding; + var radiusAndPadding = cornerRadius + caretPadding; + + if (xAlign === 'right') { + x -= size.width; + } else if (xAlign === 'center') { + x -= (size.width / 2); + } + + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= size.height + paddingAndSize; + } else { + y -= (size.height / 2); + } + + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; + } + } else if (xAlign === 'left') { + x -= radiusAndPadding; + } else if (xAlign === 'right') { + x += radiusAndPadding; + } + + return { + x: x, + y: y + }; + } + + Chart.Tooltip = Element.extend({ + initialize: function() { + this._model = getBaseModel(this._options); + }, + + // Get the title + // Args are: (tooltipItem, data) + getTitle: function() { + var me = this; + var opts = me._options; + var callbacks = opts.callbacks; + + var beforeTitle = callbacks.beforeTitle.apply(me, arguments); + var title = callbacks.title.apply(me, arguments); + var afterTitle = callbacks.afterTitle.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, beforeTitle); + lines = pushOrConcat(lines, title); + lines = pushOrConcat(lines, afterTitle); + + return lines; + }, + + // Args are: (tooltipItem, data) + getBeforeBody: function() { + var lines = this._options.callbacks.beforeBody.apply(this, arguments); + return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; + }, + + // Args are: (tooltipItem, data) + getBody: function(tooltipItems, data) { + var me = this; + var callbacks = me._options.callbacks; + var bodyItems = []; + + helpers.each(tooltipItems, function(tooltipItem) { + var bodyItem = { + before: [], + lines: [], + after: [] + }; + pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data)); + + bodyItems.push(bodyItem); + }); + + return bodyItems; + }, + + // Args are: (tooltipItem, data) + getAfterBody: function() { + var lines = this._options.callbacks.afterBody.apply(this, arguments); + return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; + }, + + // Get the footer and beforeFooter and afterFooter lines + // Args are: (tooltipItem, data) + getFooter: function() { + var me = this; + var callbacks = me._options.callbacks; + + var beforeFooter = callbacks.beforeFooter.apply(me, arguments); + var footer = callbacks.footer.apply(me, arguments); + var afterFooter = callbacks.afterFooter.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, beforeFooter); + lines = pushOrConcat(lines, footer); + lines = pushOrConcat(lines, afterFooter); + + return lines; + }, + + update: function(changed) { + var me = this; + var opts = me._options; + + // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition + // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time + // which breaks any animations. + var existingModel = me._model; + var model = me._model = getBaseModel(opts); + var active = me._active; + + var data = me._data; + + // In the case where active.length === 0 we need to keep these at existing values for good animations + var alignment = { + xAlign: existingModel.xAlign, + yAlign: existingModel.yAlign + }; + var backgroundPoint = { + x: existingModel.x, + y: existingModel.y + }; + var tooltipSize = { + width: existingModel.width, + height: existingModel.height + }; + var tooltipPosition = { + x: existingModel.caretX, + y: existingModel.caretY + }; + + var i, len; + + if (active.length) { + model.opacity = 1; + + var labelColors = []; + var labelTextColors = []; + tooltipPosition = Chart.Tooltip.positioners[opts.position](active, me._eventPosition); + + var tooltipItems = []; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(active[i])); + } + + // If the user provided a filter function, use it to modify the tooltip items + if (opts.filter) { + tooltipItems = tooltipItems.filter(function(a) { + return opts.filter(a, data); + }); + } + + // If the user provided a sorting function, use it to modify the tooltip items + if (opts.itemSort) { + tooltipItems = tooltipItems.sort(function(a, b) { + return opts.itemSort(a, b, data); + }); + } + + // Determine colors for boxes + helpers.each(tooltipItems, function(tooltipItem) { + labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); + labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); + }); + + + // Build the Text Lines + model.title = me.getTitle(tooltipItems, data); + model.beforeBody = me.getBeforeBody(tooltipItems, data); + model.body = me.getBody(tooltipItems, data); + model.afterBody = me.getAfterBody(tooltipItems, data); + model.footer = me.getFooter(tooltipItems, data); + + // Initial positioning and colors + model.x = Math.round(tooltipPosition.x); + model.y = Math.round(tooltipPosition.y); + model.caretPadding = opts.caretPadding; + model.labelColors = labelColors; + model.labelTextColors = labelTextColors; + + // data points + model.dataPoints = tooltipItems; + + // We need to determine alignment of the tooltip + tooltipSize = getTooltipSize(this, model); + alignment = determineAlignment(this, tooltipSize); + // Final Size and Position + backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment); + } else { + model.opacity = 0; + } + + model.xAlign = alignment.xAlign; + model.yAlign = alignment.yAlign; + model.x = backgroundPoint.x; + model.y = backgroundPoint.y; + model.width = tooltipSize.width; + model.height = tooltipSize.height; + + // Point where the caret on the tooltip points to + model.caretX = tooltipPosition.x; + model.caretY = tooltipPosition.y; + + me._model = model; + + if (changed && opts.custom) { + opts.custom.call(me, model); + } + + return me; + }, + drawCaret: function(tooltipPoint, size) { + var ctx = this._chart.ctx; + var vm = this._view; + var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); + + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + }, + getCaretPosition: function(tooltipPoint, size, vm) { + var x1, x2, x3, y1, y2, y3; + var caretSize = vm.caretSize; + var cornerRadius = vm.cornerRadius; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var ptX = tooltipPoint.x; + var ptY = tooltipPoint.y; + var width = size.width; + var height = size.height; + + if (yAlign === 'center') { + y2 = ptY + (height / 2); + + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + x3 = x1; + + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + x3 = x1; + + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + } else { + if (xAlign === 'left') { + x2 = ptX + cornerRadius + (caretSize); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else if (xAlign === 'right') { + x2 = ptX + width - cornerRadius - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + x2 = ptX + (width / 2); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + y3 = y1; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + y3 = y1; + // invert drawing order + var tmp = x3; + x3 = x1; + x1 = tmp; + } + } + return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; + }, + drawTitle: function(pt, vm, ctx, opacity) { + var title = vm.title; + + if (title.length) { + ctx.textAlign = vm._titleAlign; + ctx.textBaseline = 'top'; + + var titleFontSize = vm.titleFontSize; + var titleSpacing = vm.titleSpacing; + + ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); + ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); + + var i, len; + for (i = 0, len = title.length; i < len; ++i) { + ctx.fillText(title[i], pt.x, pt.y); + pt.y += titleFontSize + titleSpacing; // Line Height and spacing + + if (i + 1 === title.length) { + pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing + } + } + } + }, + drawBody: function(pt, vm, ctx, opacity) { + var bodyFontSize = vm.bodyFontSize; + var bodySpacing = vm.bodySpacing; + var body = vm.body; + + ctx.textAlign = vm._bodyAlign; + ctx.textBaseline = 'top'; + ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); + + // Before Body + var xLinePadding = 0; + var fillLineOfText = function(line) { + ctx.fillText(line, pt.x + xLinePadding, pt.y); + pt.y += bodyFontSize + bodySpacing; + }; + + // Before body lines + helpers.each(vm.beforeBody, fillLineOfText); + + var drawColorBoxes = vm.displayColors; + xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; + + // Draw body lines now + helpers.each(body, function(bodyItem, i) { + helpers.each(bodyItem.before, fillLineOfText); + + helpers.each(bodyItem.lines, function(line) { + // Draw Legend-like boxes if needed + if (drawColorBoxes) { + // Fill a white rect so that colours merge nicely if the opacity is < 1 + ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); + ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + + // Border + ctx.lineWidth = 1; + ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); + ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + + // Inner square + ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); + ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); + var textColor = mergeOpacity(vm.labelTextColors[i], opacity); + ctx.fillStyle = textColor; + } + + fillLineOfText(line); + }); + + helpers.each(bodyItem.after, fillLineOfText); + }); + + // Reset back to 0 for after body + xLinePadding = 0; + + // After body lines + helpers.each(vm.afterBody, fillLineOfText); + pt.y -= bodySpacing; // Remove last body spacing + }, + drawFooter: function(pt, vm, ctx, opacity) { + var footer = vm.footer; + + if (footer.length) { + pt.y += vm.footerMarginTop; + + ctx.textAlign = vm._footerAlign; + ctx.textBaseline = 'top'; + + ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); + ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + + helpers.each(footer, function(line) { + ctx.fillText(line, pt.x, pt.y); + pt.y += vm.footerFontSize + vm.footerSpacing; + }); + } + }, + drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { + ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); + ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); + ctx.lineWidth = vm.borderWidth; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var x = pt.x; + var y = pt.y; + var width = tooltipSize.width; + var height = tooltipSize.height; + var radius = vm.cornerRadius; + + ctx.beginPath(); + ctx.moveTo(x + radius, y); + if (yAlign === 'top') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + + ctx.fill(); + + if (vm.borderWidth > 0) { + ctx.stroke(); + } + }, + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + + if (vm.opacity === 0) { + return; + } + + var tooltipSize = { + width: vm.width, + height: vm.height + }; + var pt = { + x: vm.x, + y: vm.y + }; + + // IE11/Edge does not like very small opacities, so snap to 0 + var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; + + // Truthy/falsey value for empty tooltip + var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; + + if (this._options.enabled && hasTooltipContent) { + // Draw Background + this.drawBackground(pt, vm, ctx, tooltipSize, opacity); + + // Draw Title, Body, and Footer + pt.x += vm.xPadding; + pt.y += vm.yPadding; + + // Titles + this.drawTitle(pt, vm, ctx, opacity); + + // Body + this.drawBody(pt, vm, ctx, opacity); + + // Footer + this.drawFooter(pt, vm, ctx, opacity); + } + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @returns {Boolean} true if the tooltip changed + */ + handleEvent: function(e) { + var me = this; + var options = me._options; + var changed = false; + + me._lastActive = me._lastActive || []; + + // Find Active Elements for tooltips + if (e.type === 'mouseout') { + me._active = []; + } else { + me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); + } + + // Remember Last Actives + changed = !helpers.arrayEquals(me._active, me._lastActive); + + // If tooltip didn't change, do not handle the target event + if (!changed) { + return false; + } + + me._lastActive = me._active; + + if (options.enabled || options.custom) { + me._eventPosition = { + x: e.x, + y: e.y + }; + + var model = me._model; + me.update(true); + me.pivot(); + + // See if our tooltip position changed + changed |= (model.x !== me._model.x) || (model.y !== me._model.y); + } + + return changed; + } + }); + + /** + * @namespace Chart.Tooltip.positioners + */ + Chart.Tooltip.positioners = { + /** + * Average mode places the tooltip at the average position of the elements shown + * @function Chart.Tooltip.positioners.average + * @param elements {ChartElement[]} the elements being displayed in the tooltip + * @returns {Point} tooltip position + */ + average: function(elements) { + if (!elements.length) { + return false; + } + + var i, len; + var x = 0; + var y = 0; + var count = 0; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; + } + } + + return { + x: Math.round(x / count), + y: Math.round(y / count) + }; + }, + + /** + * Gets the tooltip position nearest of the item nearest to the event position + * @function Chart.Tooltip.positioners.nearest + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {Point} the position of the event in canvas coordinates + * @returns {Point} the tooltip position + */ + nearest: function(elements, eventPosition) { + var x = eventPosition.x; + var y = eventPosition.y; + var minDistance = Number.POSITIVE_INFINITY; + var i, len, nearestElement; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var center = el.getCenterPoint(); + var d = helpers.distanceBetweenPoints(eventPosition, center); + + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } + + if (nearestElement) { + var tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + + return { + x: x, + y: y + }; + } + }; +}; + +},{"25":25,"26":26,"45":45}],36:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + elements: { + arc: { + backgroundColor: defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2 + } + } +}); + +module.exports = Element.extend({ + inLabelRange: function(mouseX) { + var vm = this._view; + + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, + + inRange: function(chartX, chartY) { + var vm = this._view; + + if (vm) { + var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; + + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += 2.0 * Math.PI; + } + while (angle > endAngle) { + angle -= 2.0 * Math.PI; + } + while (angle < startAngle) { + angle += 2.0 * Math.PI; + } + + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + + return (betweenAngles && withinRadius); + } + return false; + }, + + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, + + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, + + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var sA = vm.startAngle; + var eA = vm.endAngle; + + ctx.beginPath(); + + ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + + ctx.closePath(); + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = vm.borderWidth; + + ctx.fillStyle = vm.backgroundColor; + + ctx.fill(); + ctx.lineJoin = 'bevel'; + + if (vm.borderWidth) { + ctx.stroke(); + } + } +}); + +},{"25":25,"26":26,"45":45}],37:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +var globalDefaults = defaults.global; + +defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: globalDefaults.defaultColor, + borderWidth: 3, + borderColor: globalDefaults.defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); + +module.exports = Element.extend({ + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var index, current, previous, currentVM; + + // If we are looping, adding the first point again + if (me._loop && points.length) { + points.push(points[0]); + } + + ctx.save(); + + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); + } + + ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + + // Stroke Line + ctx.beginPath(); + lastDrawnIndex = -1; + + for (index = 0; index < points.length; ++index) { + current = points[index]; + previous = helpers.previousItem(points, index); + currentVM = current._view; + + // First point moves to it's starting position no matter what + if (index === 0) { + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = index; + } + } else { + previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers.canvas.lineTo(ctx, previous._view, current._view); + } + lastDrawnIndex = index; + } + } + } + + ctx.stroke(); + ctx.restore(); + } +}); + +},{"25":25,"26":26,"45":45}],38:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +var defaultColor = defaults.global.defaultColor; + +defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor, + borderColor: defaultColor, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 + } + } +}); + +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; +} + +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; +} + +module.exports = Element.extend({ + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; + }, + + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, + + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + }, + + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; + }, + + draw: function(chartArea) { + var vm = this._view; + var model = this._model; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var color = helpers.color; + var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) + var ratio = 0; + + if (vm.skip) { + return; + } + + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + + // Cliping for Points. + // going out from inner charArea? + if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) { + // Point fade out + if (model.x < chartArea.left) { + ratio = (x - model.x) / (chartArea.left - model.x); + } else if (chartArea.right * errMargin < model.x) { + ratio = (model.x - x) / (model.x - chartArea.right); + } else if (model.y < chartArea.top) { + ratio = (y - model.y) / (chartArea.top - model.y); + } else if (chartArea.bottom * errMargin < model.y) { + ratio = (model.y - y) / (model.y - chartArea.bottom); + } + ratio = Math.round(ratio * 100) / 100; + ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString(); + ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString(); + } + + helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y); + } +}); + +},{"25":25,"26":26,"45":45}],39:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); + +defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaults.global.defaultColor, + borderColor: defaults.global.defaultColor, + borderSkipped: 'bottom', + borderWidth: 0 + } + } +}); + +function isVertical(bar) { + return bar._view.width !== undefined; +} + +/** + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar + * @private + */ +function getBarBounds(bar) { + var vm = bar._view; + var x1, x2, y1, y2; + + if (isVertical(bar)) { + // vertical + var halfWidth = vm.width / 2; + x1 = vm.x - halfWidth; + x2 = vm.x + halfWidth; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + // horizontal bar + var halfHeight = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - halfHeight; + y2 = vm.y + halfHeight; + } + + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} + +module.exports = Element.extend({ + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var left, right, top, bottom, signX, signY, borderSkipped; + var borderWidth = vm.borderWidth; + + if (!vm.horizontal) { + // bar + left = vm.x - vm.width / 2; + right = vm.x + vm.width / 2; + top = vm.y; + bottom = vm.base; + signX = 1; + signY = bottom > top ? 1 : -1; + borderSkipped = vm.borderSkipped || 'bottom'; + } else { + // horizontal bar + left = vm.base; + right = vm.x; + top = vm.y - vm.height / 2; + bottom = vm.y + vm.height / 2; + signX = right > left ? 1 : -1; + signY = 1; + borderSkipped = vm.borderSkipped || 'left'; + } + + // Canvas doesn't allow us to stroke inside the width so we can + // adjust the sizes to fit if we're setting a stroke on the line + if (borderWidth) { + // borderWidth shold be less than bar width and bar height. + var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); + borderWidth = borderWidth > barSize ? barSize : borderWidth; + var halfStroke = borderWidth / 2; + // Adjust borderWidth when bar top position is near vm.base(zero). + var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); + var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); + var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); + var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); + // not become a vertical line? + if (borderLeft !== borderRight) { + top = borderTop; + bottom = borderBottom; + } + // not become a horizontal line? + if (borderTop !== borderBottom) { + left = borderLeft; + right = borderRight; + } + } + + ctx.beginPath(); + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = borderWidth; + + // Corner points, from bottom-left to bottom-right clockwise + // | 1 2 | + // | 0 3 | + var corners = [ + [left, bottom], + [left, top], + [right, top], + [right, bottom] + ]; + + // Find first (starting) corner with fallback to 'bottom' + var borders = ['bottom', 'left', 'top', 'right']; + var startCorner = borders.indexOf(borderSkipped, 0); + if (startCorner === -1) { + startCorner = 0; + } + + function cornerAt(index) { + return corners[(startCorner + index) % 4]; + } + + // Draw rectangle from 'startCorner' + var corner = cornerAt(0); + ctx.moveTo(corner[0], corner[1]); + + for (var i = 1; i < 4; i++) { + corner = cornerAt(i); + ctx.lineTo(corner[0], corner[1]); + } + + ctx.fill(); + if (borderWidth) { + ctx.stroke(); + } + }, + + height: function() { + var vm = this._view; + return vm.base - vm.y; + }, + + inRange: function(mouseX, mouseY) { + var inRange = false; + + if (this._view) { + var bounds = getBarBounds(this); + inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; + } + + return inRange; + }, + + inLabelRange: function(mouseX, mouseY) { + var me = this; + if (!me._view) { + return false; + } + + var inRange = false; + var bounds = getBarBounds(me); + + if (isVertical(me)) { + inRange = mouseX >= bounds.left && mouseX <= bounds.right; + } else { + inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; + } + + return inRange; + }, + + inXRange: function(mouseX) { + var bounds = getBarBounds(this); + return mouseX >= bounds.left && mouseX <= bounds.right; + }, + + inYRange: function(mouseY) { + var bounds = getBarBounds(this); + return mouseY >= bounds.top && mouseY <= bounds.bottom; + }, + + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(this)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; + } + + return {x: x, y: y}; + }, + + getArea: function() { + var vm = this._view; + return vm.width * Math.abs(vm.y - vm.base); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); + +},{"25":25,"26":26}],40:[function(require,module,exports){ +'use strict'; + +module.exports = {}; +module.exports.Arc = require(36); +module.exports.Line = require(37); +module.exports.Point = require(38); +module.exports.Rectangle = require(39); + +},{"36":36,"37":37,"38":38,"39":39}],41:[function(require,module,exports){ +'use strict'; + +var helpers = require(42); + +/** + * @namespace Chart.helpers.canvas + */ +var exports = module.exports = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {Number} x - The x axis of the coordinate for the rectangle starting point. + * @param {Number} y - The y axis of the coordinate for the rectangle starting point. + * @param {Number} width - The rectangle's width. + * @param {Number} height - The rectangle's height. + * @param {Number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + var rx = Math.min(radius, width / 2); + var ry = Math.min(radius, height / 2); + + ctx.moveTo(x + rx, y); + ctx.lineTo(x + width - rx, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + ry); + ctx.lineTo(x + width, y + height - ry); + ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); + ctx.lineTo(x + rx, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - ry); + ctx.lineTo(x, y + ry); + ctx.quadraticCurveTo(x, y, x + rx, y); + } else { + ctx.rect(x, y, width, height); + } + }, + + drawPoint: function(ctx, style, radius, x, y) { + var type, edgeLength, xOffset, yOffset, height, size; + + if (typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); + return; + } + } + + if (isNaN(radius) || radius <= 0) { + return; + } + + switch (style) { + // Default includes circle + default: + ctx.beginPath(); + ctx.arc(x, y, radius, 0, Math.PI * 2); + ctx.closePath(); + ctx.fill(); + break; + case 'triangle': + ctx.beginPath(); + edgeLength = 3 * radius / Math.sqrt(3); + height = edgeLength * Math.sqrt(3) / 2; + ctx.moveTo(x - edgeLength / 2, y + height / 3); + ctx.lineTo(x + edgeLength / 2, y + height / 3); + ctx.lineTo(x, y - 2 * height / 3); + ctx.closePath(); + ctx.fill(); + break; + case 'rect': + size = 1 / Math.SQRT2 * radius; + ctx.beginPath(); + ctx.fillRect(x - size, y - size, 2 * size, 2 * size); + ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); + break; + case 'rectRounded': + var offset = radius / Math.SQRT2; + var leftX = x - offset; + var topY = y - offset; + var sideSize = Math.SQRT2 * radius; + ctx.beginPath(); + this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2); + ctx.closePath(); + ctx.fill(); + break; + case 'rectRot': + size = 1 / Math.SQRT2 * radius; + ctx.beginPath(); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y - size); + ctx.closePath(); + ctx.fill(); + break; + case 'cross': + ctx.beginPath(); + ctx.moveTo(x, y + radius); + ctx.lineTo(x, y - radius); + ctx.moveTo(x - radius, y); + ctx.lineTo(x + radius, y); + ctx.closePath(); + break; + case 'crossRot': + ctx.beginPath(); + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x - xOffset, y + yOffset); + ctx.lineTo(x + xOffset, y - yOffset); + ctx.closePath(); + break; + case 'star': + ctx.beginPath(); + ctx.moveTo(x, y + radius); + ctx.lineTo(x, y - radius); + ctx.moveTo(x - radius, y); + ctx.lineTo(x + radius, y); + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x - xOffset, y + yOffset); + ctx.lineTo(x + xOffset, y - yOffset); + ctx.closePath(); + break; + case 'line': + ctx.beginPath(); + ctx.moveTo(x - radius, y); + ctx.lineTo(x + radius, y); + ctx.closePath(); + break; + case 'dash': + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + radius, y); + ctx.closePath(); + break; + } + + ctx.stroke(); + }, + + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); + }, + + unclipArea: function(ctx) { + ctx.restore(); + }, + + lineTo: function(ctx, previous, target, flip) { + if (target.steppedLine) { + if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; + } + + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; + } + + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.clear = exports.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports.roundedRect.apply(exports, arguments); + ctx.closePath(); +}; + +},{"42":42}],42:[function(require,module,exports){ +'use strict'; + +/** + * @namespace Chart.helpers + */ +var helpers = { + /** + * An empty function that can be used, for example, for optional callback. + */ + noop: function() {}, + + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {Number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), + + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, + + /** + * Returns true if `value` is an array, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @function + */ + isArray: Array.isArray ? Array.isArray : function(value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }, + + /** + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @since 2.7.0 + */ + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, + + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, + + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {Number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); + }, + + /** + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {Function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} + */ + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, + + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {Object|Array} loopable - The object or array to be iterated. + * @param {Function} fn - The function to call for each item. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {Boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } + }, + + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see http://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {Boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; + + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + + return true; + }, + + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } + + if (helpers.isObject(source)) { + var target = {}; + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; + + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } + + return target; + } + + return source; + }, + + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): this method is also used by configMerge and scaleMerge as fallback. + * @private + */ + _merger: function(key, target, source, options) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, + + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @param {Object} [options] - Merging options: + * @param {Function} [options.merger] - The merge method (key, target, source, options) + * @returns {Object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; + + if (!helpers.isObject(target)) { + return target; + } + + options = options || {}; + merge = options.merger || helpers._merger; + + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } + + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } + + return target; + }, + + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @returns {Object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + } +}; + +module.exports = helpers; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +helpers.callCallback = helpers.callback; + +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; + +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; + +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + +},{}],43:[function(require,module,exports){ +'use strict'; + +var helpers = require(42); + +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, + + easeInQuad: function(t) { + return t * t; + }, + + easeOutQuad: function(t) { + return -t * (t - 2); + }, + + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; + } + return -0.5 * ((--t) * (t - 2) - 1); + }, + + easeInCubic: function(t) { + return t * t * t; + }, + + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, + + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, + + easeInQuart: function(t) { + return t * t * t * t; + }, + + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, + + easeInOutQuart: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t; + } + return -0.5 * ((t -= 2) * t * t * t - 2); + }, + + easeInQuint: function(t) { + return t * t * t * t * t; + }, + + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, + + easeInOutQuint: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t * t; + } + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }, + + easeInSine: function(t) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, + + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, + + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, + + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, + + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, + + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, + + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, + + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, + + easeInOutCirc: function(t) { + if ((t /= 0.5) < 1) { + return -0.5 * (Math.sqrt(1 - t * t) - 1); + } + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, + + easeInElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + }, + + easeOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; + }, + + easeInOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + easeInBack: function(t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; + }, + + easeInOutBack: function(t) { + var s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, + + easeInBounce: function(t) { + return 1 - effects.easeOutBounce(1 - t); + }, + + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; + } + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; + } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, + + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; + } +}; + +module.exports = { + effects: effects +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.easingEffects = effects; + +},{"42":42}],44:[function(require,module,exports){ +'use strict'; + +var helpers = require(42); + +/** + * @alias Chart.helpers.options + * @namespace + */ +module.exports = { + /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {Number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height + * @since 2.7.0 + */ + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + + value = +matches[2]; + + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + default: + break; + } + + return size * value; + }, + + /** + * Converts the given value into a padding object with pre-computed width/height. + * @param {Number|Object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {Object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 + */ + toPadding: function(value) { + var t, r, b, l; + + if (helpers.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, + + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array[]} inputs - An array of values, falling back to the last value. + * @param {Object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {Number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @since 2.7.0 + */ + resolve: function(inputs, context, index) { + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + } + if (index !== undefined && helpers.isArray(value)) { + value = value[index]; + } + if (value !== undefined) { + return value; + } + } + } +}; + +},{"42":42}],45:[function(require,module,exports){ +'use strict'; + +module.exports = require(42); +module.exports.easing = require(43); +module.exports.canvas = require(41); +module.exports.options = require(44); + +},{"41":41,"42":42,"43":43,"44":44}],46:[function(require,module,exports){ +/** + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 + */ + +module.exports = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + return item && item.getContext('2d') || null; + } +}; + +},{}],47:[function(require,module,exports){ +/** + * Chart.Platform implementation for targeting a web browser + */ + +'use strict'; + +var helpers = require(45); + +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; + +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {Number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; +} + +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; + + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); + + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; + + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } + + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } + } + + return canvas; +} + +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error + } + return supports; +}()); + +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; + +function addEventListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} + +function removeEventListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); +} + +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} + +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); +} + +function throttled(fn, thisArg) { + var ticking = false; + var args = []; + + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; + + if (!ticking) { + ticking = true; + helpers.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} + +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var resizer = document.createElement('div'); + var cls = CSS_PREFIX + 'size-monitor'; + var maxSize = 1000000; + var style = + 'position:absolute;' + + 'left:0;' + + 'top:0;' + + 'right:0;' + + 'bottom:0;' + + 'overflow:hidden;' + + 'pointer-events:none;' + + 'visibility:hidden;' + + 'z-index:-1;'; + + resizer.style.cssText = style; + resizer.className = cls; + resizer.innerHTML = + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + + var expand = resizer.childNodes[0]; + var shrink = resizer.childNodes[1]; + + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; + var onScroll = function() { + resizer._reset(); + handler(); + }; + + addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + + return resizer; +} + +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; + + helpers.each(ANIMATION_START_EVENTS, function(type) { + addEventListener(node, type, proxy); + }); + + node.classList.add(CSS_RENDER_MONITOR); +} + +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; + + if (proxy) { + helpers.each(ANIMATION_START_EVENTS, function(type) { + removeEventListener(node, type, proxy); + }); + + delete expando.renderProxy; + } + + node.classList.remove(CSS_RENDER_MONITOR); +} + +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + return listener(createEvent('resize', chart)); + } + })); + + // The resizer needs to be attached to the node parent, so we first need to be + // sure that `node` is attached to the DOM before injecting the resizer element. + watchForRender(node, function() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); + } + + // The container size might have changed, let's reset the resizer state. + resizer._reset(); + } + }); +} + +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; + + delete expando.resizer; + unwatchForRender(node); + + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); + } +} + +function injectCSS(platform, css) { + // http://stackoverflow.com/q/3922139 + var style = platform._style || document.createElement('style'); + if (!platform._style) { + platform._style = style; + css = '/* Chart.js */\n' + css; + style.setAttribute('type', 'text/css'); + document.getElementsByTagName('head')[0].appendChild(style); + } + + style.appendChild(document.createTextNode(css)); +} + +module.exports = { + /** + * This property holds whether this platform is enabled for the current environment. + * Currently used by platform.js to select the proper implementation. + * @private + */ + _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', + + initialize: function() { + var keyframes = 'from{opacity:0.99}to{opacity:1}'; + + injectCSS(this, + // DOM rendering detection + // https://davidwalsh.name/detect-node-insertion + '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '.' + CSS_RENDER_MONITOR + '{' + + '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + '}' + ); + }, + + acquireContext: function(item, config) { + if (typeof item === 'string') { + item = document.getElementById(item); + } else if (item.length) { + // Support for array based queries (such as jQuery) + item = item[0]; + } + + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + // To prevent canvas fingerprinting, some add-ons undefine the getContext + // method, for example: https://github.com/kkapsner/CanvasBlocker + // https://github.com/chartjs/Chart.js/issues/2807 + var context = item && item.getContext && item.getContext('2d'); + + // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is + // inside an iframe or when running in a protected environment. We could guess the + // types from their toString() value but let's keep things flexible and assume it's + // a sufficient condition if the item has a context2D which has item as `canvas`. + // https://github.com/chartjs/Chart.js/issues/3887 + // https://github.com/chartjs/Chart.js/issues/4102 + // https://github.com/chartjs/Chart.js/issues/4152 + if (context && context.canvas === item) { + initCanvas(item, config); + return context; + } + + return null; + }, + + releaseContext: function(context) { + var canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return; + } + + var initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach(function(prop) { + var value = initial[prop]; + if (helpers.isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); + + helpers.each(initial.style || {}, function(value, key) { + canvas.style[key] = value; + }); + + // The canvas render size might have been changed (and thus the state stack discarded), + // we can't use save() and restore() to restore the initial state. So make sure that at + // least the canvas context is reset to the default state by setting the canvas width. + // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html + canvas.width = canvas.width; + + delete canvas[EXPANDO_KEY]; + }, + + addEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + addResizeListener(canvas, listener, chart); + return; + } + + var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); + var proxies = expando.proxies || (expando.proxies = {}); + var proxy = proxies[chart.id + '_' + type] = function(event) { + listener(fromNativeEvent(event, chart)); + }; + + addEventListener(canvas, type, proxy); + }, + + removeEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + removeResizeListener(canvas, listener); + return; + } + + var expando = listener[EXPANDO_KEY] || {}; + var proxies = expando.proxies || {}; + var proxy = proxies[chart.id + '_' + type]; + if (!proxy) { + return; + } + + removeEventListener(canvas, type, proxy); + } +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use EventTarget.addEventListener instead. + * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + * @function Chart.helpers.addEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.addEvent = addEventListener; + +/** + * Provided for backward compatibility, use EventTarget.removeEventListener instead. + * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + * @function Chart.helpers.removeEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.removeEvent = removeEventListener; + +},{"45":45}],48:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); +var basic = require(46); +var dom = require(47); + +// @TODO Make possible to select another platform at build time. +var implementation = dom._enabled ? dom : basic; + +/** + * @namespace Chart.platform + * @see https://chartjs.gitbooks.io/proposals/content/Platform.html + * @since 2.4.0 + */ +module.exports = helpers.extend({ + /** + * @since 2.7.0 + */ + initialize: function() {}, + + /** + * Called at chart construction time, returns a context2d instance implementing + * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. + * @param {*} item - The native item from which to acquire context (platform specific) + * @param {Object} options - The chart options + * @returns {CanvasRenderingContext2D} context2d instance + */ + acquireContext: function() {}, + + /** + * Called at chart destruction time, releases any resources associated to the context + * previously returned by the acquireContext() method. + * @param {CanvasRenderingContext2D} context - The context2d instance + * @returns {Boolean} true if the method succeeded, else false + */ + releaseContext: function() {}, + + /** + * Registers the specified listener on the given chart. + * @param {Chart} chart - Chart from which to listen for event + * @param {String} type - The ({@link IEvent}) type to listen for + * @param {Function} listener - Receives a notification (an object that implements + * the {@link IEvent} interface) when an event of the specified type occurs. + */ + addEventListener: function() {}, + + /** + * Removes the specified listener previously registered with addEventListener. + * @param {Chart} chart -Chart from which to remove the listener + * @param {String} type - The ({@link IEvent}) type to remove + * @param {Function} listener - The listener function to remove from the event target. + */ + removeEventListener: function() {} + +}, implementation); + +/** + * @interface IPlatform + * Allows abstracting platform dependencies away from the chart + * @borrows Chart.platform.acquireContext as acquireContext + * @borrows Chart.platform.releaseContext as releaseContext + * @borrows Chart.platform.addEventListener as addEventListener + * @borrows Chart.platform.removeEventListener as removeEventListener + */ + +/** + * @interface IEvent + * @prop {String} type - The event type name, possible values are: + * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', + * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' + * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') + * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) + * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) + */ + +},{"45":45,"46":46,"47":47}],49:[function(require,module,exports){ +/** + * Plugin based on discussion from the following Chart.js issues: + * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 + * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 + */ + +'use strict'; + +var defaults = require(25); +var elements = require(40); +var helpers = require(45); + +defaults._set('global', { + plugins: { + filler: { + propagate: true + } + } +}); + +module.exports = function() { + + var mappers = { + dataset: function(source) { + var index = source.fill; + var chart = source.chart; + var meta = chart.getDatasetMeta(index); + var visible = meta && chart.isDatasetVisible(index); + var points = (visible && meta.dataset._children) || []; + var length = points.length || 0; + + return !length ? null : function(point, i) { + return (i < length && points[i]._view) || null; + }; + }, + + boundary: function(source) { + var boundary = source.boundary; + var x = boundary ? boundary.x : null; + var y = boundary ? boundary.y : null; + + return function(point) { + return { + x: x === null ? point.x : x, + y: y === null ? point.y : y, + }; + }; + } + }; + + // @todo if (fill[0] === '#') + function decodeFill(el, index, count) { + var model = el._model || {}; + var fill = model.fill; + var target; + + if (fill === undefined) { + fill = !!model.backgroundColor; + } + + if (fill === false || fill === null) { + return false; + } + + if (fill === true) { + return 'origin'; + } + + target = parseFloat(fill, 10); + if (isFinite(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } + + if (target === index || target < 0 || target >= count) { + return false; + } + + return target; + } + + switch (fill) { + // compatibility + case 'bottom': + return 'start'; + case 'top': + return 'end'; + case 'zero': + return 'origin'; + // supported boundaries + case 'origin': + case 'start': + case 'end': + return fill; + // invalid fill values + default: + return false; + } + } + + function computeBoundary(source) { + var model = source.el._model || {}; + var scale = source.el._scale || {}; + var fill = source.fill; + var target = null; + var horizontal; + + if (isFinite(fill)) { + return null; + } + + // Backward compatibility: until v3, we still need to support boundary values set on + // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and + // controllers might still use it (e.g. the Smith chart). + + if (fill === 'start') { + target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; + } else if (fill === 'end') { + target = model.scaleTop === undefined ? scale.top : model.scaleTop; + } else if (model.scaleZero !== undefined) { + target = model.scaleZero; + } else if (scale.getBasePosition) { + target = scale.getBasePosition(); + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } + + if (target !== undefined && target !== null) { + if (target.x !== undefined && target.y !== undefined) { + return target; + } + + if (typeof target === 'number' && isFinite(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; + } + } + + return null; + } + + function resolveTarget(sources, index, propagate) { + var source = sources[index]; + var fill = source.fill; + var visited = [index]; + var target; + + if (!propagate) { + return fill; + } + + while (fill !== false && visited.indexOf(fill) === -1) { + if (!isFinite(fill)) { + return fill; + } + + target = sources[fill]; + if (!target) { + return false; + } + + if (target.visible) { + return fill; + } + + visited.push(fill); + fill = target.fill; + } + + return false; + } + + function createMapper(source) { + var fill = source.fill; + var type = 'dataset'; + + if (fill === false) { + return null; + } + + if (!isFinite(fill)) { + type = 'boundary'; + } + + return mappers[type](source); + } + + function isDrawable(point) { + return point && !point.skip; + } + + function drawArea(ctx, curve0, curve1, len0, len1) { + var i; + + if (!len0 || !len1) { + return; + } + + // building first area curve (normal) + ctx.moveTo(curve0[0].x, curve0[0].y); + for (i = 1; i < len0; ++i) { + helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); + } + + // joining the two area curves + ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); + + // building opposite area curve (reverse) + for (i = len1 - 1; i > 0; --i) { + helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + } + } + + function doFill(ctx, points, mapper, view, color, loop) { + var count = points.length; + var span = view.spanGaps; + var curve0 = []; + var curve1 = []; + var len0 = 0; + var len1 = 0; + var i, ilen, index, p0, p1, d0, d1; + + ctx.beginPath(); + + for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { + index = i % count; + p0 = points[index]._view; + p1 = mapper(p0, index, view); + d0 = isDrawable(p0); + d1 = isDrawable(p1); + + if (d0 && d1) { + len0 = curve0.push(p0); + len1 = curve1.push(p1); + } else if (len0 && len1) { + if (!span) { + drawArea(ctx, curve0, curve1, len0, len1); + len0 = len1 = 0; + curve0 = []; + curve1 = []; + } else { + if (d0) { + curve0.push(p0); + } + if (d1) { + curve1.push(p1); + } + } + } + } + + drawArea(ctx, curve0, curve1, len0, len1); + + ctx.closePath(); + ctx.fillStyle = color; + ctx.fill(); + } + + return { + id: 'filler', + + afterDatasetsUpdate: function(chart, options) { + var count = (chart.data.datasets || []).length; + var propagate = options.propagate; + var sources = []; + var meta, i, el, source; + + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + el = meta.dataset; + source = null; + + if (el && el._model && el instanceof elements.Line) { + source = { + visible: chart.isDatasetVisible(i), + fill: decodeFill(el, i, count), + chart: chart, + el: el + }; + } + + meta.$filler = source; + sources.push(source); + } + + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source) { + continue; + } + + source.fill = resolveTarget(sources, i, propagate); + source.boundary = computeBoundary(source); + source.mapper = createMapper(source); + } + }, + + beforeDatasetDraw: function(chart, args) { + var meta = args.meta.$filler; + if (!meta) { + return; + } + + var ctx = chart.ctx; + var el = meta.el; + var view = el._view; + var points = el._children || []; + var mapper = meta.mapper; + var color = view.backgroundColor || defaults.global.defaultColor; + + if (mapper && color && points.length) { + helpers.canvas.clipArea(ctx, chart.chartArea); + doFill(ctx, points, mapper, view, color, el._loop); + helpers.canvas.unclipArea(ctx); + } + } + }; +}; + +},{"25":25,"40":40,"45":45}],50:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + legend: { + display: true, + position: 'top', + fullWidth: true, + reverse: false, + weight: 1000, + + // a callback that will handle + onClick: function(e, legendItem) { + var index = legendItem.datasetIndex; + var ci = this.chart; + var meta = ci.getDatasetMeta(index); + + // See controller.isDatasetVisible comment + meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; + + // We hid a dataset ... rerender the chart + ci.update(); + }, + + onHover: null, + + labels: { + boxWidth: 40, + padding: 10, + // Generates labels shown in the legend + // Valid properties to return: + // text : text to display + // fillStyle : fill of coloured box + // strokeStyle: stroke of coloured box + // hidden : if this legend item refers to a hidden item + // lineCap : cap style for line + // lineDash + // lineDashOffset : + // lineJoin : + // lineWidth : + generateLabels: function(chart) { + var data = chart.data; + return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { + return { + text: dataset.label, + fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), + hidden: !chart.isDatasetVisible(i), + lineCap: dataset.borderCapStyle, + lineDash: dataset.borderDash, + lineDashOffset: dataset.borderDashOffset, + lineJoin: dataset.borderJoinStyle, + lineWidth: dataset.borderWidth, + strokeStyle: dataset.borderColor, + pointStyle: dataset.pointStyle, + + // Below is extra data used for toggling the datasets + datasetIndex: i + }; + }, this) : []; + } + } + }, + + legendCallback: function(chart) { + var text = []; + text.push('
      '); + for (var i = 0; i < chart.data.datasets.length; i++) { + text.push('
    • '); + if (chart.data.datasets[i].label) { + text.push(chart.data.datasets[i].label); + } + text.push('
    • '); + } + text.push('
    '); + return text.join(''); + } +}); + +module.exports = function(Chart) { + + var layout = Chart.layoutService; + var noop = helpers.noop; + + /** + * Helper function to get the box width based on the usePointStyle option + * @param labelopts {Object} the label options on the legend + * @param fontSize {Number} the label font size + * @return {Number} width of the color box area + */ + function getBoxWidth(labelOpts, fontSize) { + return labelOpts.usePointStyle ? + fontSize * Math.SQRT2 : + labelOpts.boxWidth; + } + + Chart.Legend = Element.extend({ + + initialize: function(config) { + helpers.extend(this, config); + + // Contains hit boxes for each dataset (in dataset order) + this.legendHitBoxes = []; + + // Are we in doughnut mode which has a different data type + this.doughnutMode = false; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + // Any function defined here is inherited by all legend types. + // Any function can be extended by the legend type + + beforeUpdate: noop, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + }, + afterUpdate: noop, + + // + + beforeSetDimensions: noop, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop, + + // + + beforeBuildLabels: noop, + buildLabels: function() { + var me = this; + var labelOpts = me.options.labels || {}; + var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || []; + + if (labelOpts.filter) { + legendItems = legendItems.filter(function(item) { + return labelOpts.filter(item, me.chart.data); + }); + } + + if (me.options.reverse) { + legendItems.reverse(); + } + + me.legendItems = legendItems; + }, + afterBuildLabels: noop, + + // + + beforeFit: noop, + fit: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var display = opts.display; + + var ctx = me.ctx; + + var globalDefault = defaults.global; + var valueOrDefault = helpers.valueOrDefault; + var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); + var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); + var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); + var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); + + // Reset hit boxes + var hitboxes = me.legendHitBoxes = []; + + var minSize = me.minSize; + var isHorizontal = me.isHorizontal(); + + if (isHorizontal) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = display ? 10 : 0; + } else { + minSize.width = display ? 10 : 0; + minSize.height = me.maxHeight; // fill all the height + } + + // Increase sizes here + if (display) { + ctx.font = labelFont; + + if (isHorizontal) { + // Labels + + // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one + var lineWidths = me.lineWidths = [0]; + var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0; + + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; + + helpers.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) { + totalHeight += fontSize + (labelOpts.padding); + lineWidths[lineWidths.length] = me.left; + } + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: width, + height: fontSize + }; + + lineWidths[lineWidths.length - 1] += width + labelOpts.padding; + }); + + minSize.height += totalHeight; + + } else { + var vPadding = labelOpts.padding; + var columnWidths = me.columnWidths = []; + var totalWidth = labelOpts.padding; + var currentColWidth = 0; + var currentColHeight = 0; + var itemHeight = fontSize + vPadding; + + helpers.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + // If too tall, go to new column + if (currentColHeight + itemHeight > minSize.height) { + totalWidth += currentColWidth + labelOpts.padding; + columnWidths.push(currentColWidth); // previous column width + + currentColWidth = 0; + currentColHeight = 0; + } + + // Get max width + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += itemHeight; + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: itemWidth, + height: fontSize + }; + }); + + totalWidth += currentColWidth; + columnWidths.push(currentColWidth); + minSize.width += totalWidth; + } + } + + me.width = minSize.width; + me.height = minSize.height; + }, + afterFit: noop, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + + // Actually draw the legend on the canvas + draw: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var globalDefault = defaults.global; + var lineDefault = globalDefault.elements.line; + var legendWidth = me.width; + var lineWidths = me.lineWidths; + + if (opts.display) { + var ctx = me.ctx; + var valueOrDefault = helpers.valueOrDefault; + var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor); + var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); + var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); + var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); + var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); + var cursor; + + // Canvas setup + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + ctx.lineWidth = 0.5; + ctx.strokeStyle = fontColor; // for strikethrough effect + ctx.fillStyle = fontColor; // render in correct colour + ctx.font = labelFont; + + var boxWidth = getBoxWidth(labelOpts, fontSize); + var hitboxes = me.legendHitBoxes; + + // current position + var drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0) { + return; + } + + // Set the ctx for the box + ctx.save(); + + ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor); + ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle); + ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset); + ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle); + ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth); + ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor); + var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0); + + if (ctx.setLineDash) { + // IE 9 and 10 do not support line dash + ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash)); + } + + if (opts.labels && opts.labels.usePointStyle) { + // Recalculate x and y for drawPoint() because its expecting + // x and y to be center of figure (instead of top left) + var radius = fontSize * Math.SQRT2 / 2; + var offSet = radius / Math.SQRT2; + var centerX = x + offSet; + var centerY = y + offSet; + + // Draw pointStyle as legend symbol + helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); + } else { + // Draw box as legend symbol + if (!isLineWidthZero) { + ctx.strokeRect(x, y, boxWidth, fontSize); + } + ctx.fillRect(x, y, boxWidth, fontSize); + } + + ctx.restore(); + }; + var fillText = function(x, y, legendItem, textWidth) { + var halfFontSize = fontSize / 2; + var xLeft = boxWidth + halfFontSize + x; + var yMiddle = y + halfFontSize; + + ctx.fillText(legendItem.text, xLeft, yMiddle); + + if (legendItem.hidden) { + // Strikethrough the text if hidden + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.moveTo(xLeft, yMiddle); + ctx.lineTo(xLeft + textWidth, yMiddle); + ctx.stroke(); + } + }; + + // Horizontal + var isHorizontal = me.isHorizontal(); + if (isHorizontal) { + cursor = { + x: me.left + ((legendWidth - lineWidths[0]) / 2), + y: me.top + labelOpts.padding, + line: 0 + }; + } else { + cursor = { + x: me.left + labelOpts.padding, + y: me.top + labelOpts.padding, + line: 0 + }; + } + + var itemHeight = fontSize + labelOpts.padding; + helpers.each(me.legendItems, function(legendItem, i) { + var textWidth = ctx.measureText(legendItem.text).width; + var width = boxWidth + (fontSize / 2) + textWidth; + var x = cursor.x; + var y = cursor.y; + + if (isHorizontal) { + if (x + width >= legendWidth) { + y = cursor.y += itemHeight; + cursor.line++; + x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2); + } + } else if (y + itemHeight > me.bottom) { + x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; + y = cursor.y = me.top + labelOpts.padding; + cursor.line++; + } + + drawLegendBox(x, y, legendItem); + + hitboxes[i].left = x; + hitboxes[i].top = y; + + // Fill the actual label + fillText(x, y, legendItem, textWidth); + + if (isHorizontal) { + cursor.x += width + (labelOpts.padding); + } else { + cursor.y += itemHeight; + } + + }); + } + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @return {Boolean} true if a change occured + */ + handleEvent: function(e) { + var me = this; + var opts = me.options; + var type = e.type === 'mouseup' ? 'click' : e.type; + var changed = false; + + if (type === 'mousemove') { + if (!opts.onHover) { + return; + } + } else if (type === 'click') { + if (!opts.onClick) { + return; + } + } else { + return; + } + + // Chart event already has relative position in it + var x = e.x; + var y = e.y; + + if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { + // See if we are touching one of the dataset boxes + var lh = me.legendHitBoxes; + for (var i = 0; i < lh.length; ++i) { + var hitBox = lh[i]; + + if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { + // Touching an element + if (type === 'click') { + // use e.native for backwards compatibility + opts.onClick.call(me, e.native, me.legendItems[i]); + changed = true; + break; + } else if (type === 'mousemove') { + // use e.native for backwards compatibility + opts.onHover.call(me, e.native, me.legendItems[i]); + changed = true; + break; + } + } + } + } + + return changed; + } + }); + + function createNewLegendAndAttach(chart, legendOpts) { + var legend = new Chart.Legend({ + ctx: chart.ctx, + options: legendOpts, + chart: chart + }); + + layout.configure(chart, legend, legendOpts); + layout.addBox(chart, legend); + chart.legend = legend; + } + + return { + id: 'legend', + + beforeInit: function(chart) { + var legendOpts = chart.options.legend; + + if (legendOpts) { + createNewLegendAndAttach(chart, legendOpts); + } + }, + + beforeUpdate: function(chart) { + var legendOpts = chart.options.legend; + var legend = chart.legend; + + if (legendOpts) { + helpers.mergeIf(legendOpts, defaults.global.legend); + + if (legend) { + layout.configure(chart, legend, legendOpts); + legend.options = legendOpts; + } else { + createNewLegendAndAttach(chart, legendOpts); + } + } else if (legend) { + layout.removeBox(chart, legend); + delete chart.legend; + } + }, + + afterEvent: function(chart, e) { + var legend = chart.legend; + if (legend) { + legend.handleEvent(e); + } + } + }; +}; + +},{"25":25,"26":26,"45":45}],51:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var Element = require(26); +var helpers = require(45); + +defaults._set('global', { + title: { + display: false, + fontStyle: 'bold', + fullWidth: true, + lineHeight: 1.2, + padding: 10, + position: 'top', + text: '', + weight: 2000 // by default greater than legend (1000) to be above + } +}); + +module.exports = function(Chart) { + + var layout = Chart.layoutService; + var noop = helpers.noop; + + Chart.Title = Element.extend({ + initialize: function(config) { + var me = this; + helpers.extend(me, config); + + // Contains hit boxes for each dataset (in dataset order) + me.legendHitBoxes = []; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + + beforeUpdate: noop, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: noop, + + // + + beforeSetDimensions: noop, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop, + + // + + beforeBuildLabels: noop, + buildLabels: noop, + afterBuildLabels: noop, + + // + + beforeFit: noop, + fit: function() { + var me = this; + var valueOrDefault = helpers.valueOrDefault; + var opts = me.options; + var display = opts.display; + var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize); + var minSize = me.minSize; + var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1; + var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); + var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0; + + if (me.isHorizontal()) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = textSize; + } else { + minSize.width = textSize; + minSize.height = me.maxHeight; // fill all the height + } + + me.width = minSize.width; + me.height = minSize.height; + + }, + afterFit: noop, + + // Shared Methods + isHorizontal: function() { + var pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + }, + + // Actually draw the title block on the canvas + draw: function() { + var me = this; + var ctx = me.ctx; + var valueOrDefault = helpers.valueOrDefault; + var opts = me.options; + var globalDefaults = defaults.global; + + if (opts.display) { + var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize); + var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle); + var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily); + var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily); + var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); + var offset = lineHeight / 2 + opts.padding; + var rotation = 0; + var top = me.top; + var left = me.left; + var bottom = me.bottom; + var right = me.right; + var maxWidth, titleX, titleY; + + ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour + ctx.font = titleFont; + + // Horizontal + if (me.isHorizontal()) { + titleX = left + ((right - left) / 2); // midpoint of the width + titleY = top + offset; + maxWidth = right - left; + } else { + titleX = opts.position === 'left' ? left + offset : right - offset; + titleY = top + ((bottom - top) / 2); + maxWidth = bottom - top; + rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); + } + + ctx.save(); + ctx.translate(titleX, titleY); + ctx.rotate(rotation); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + + var text = opts.text; + if (helpers.isArray(text)) { + var y = 0; + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], 0, y, maxWidth); + y += lineHeight; + } + } else { + ctx.fillText(text, 0, 0, maxWidth); + } + + ctx.restore(); + } + } + }); + + function createNewTitleBlockAndAttach(chart, titleOpts) { + var title = new Chart.Title({ + ctx: chart.ctx, + options: titleOpts, + chart: chart + }); + + layout.configure(chart, title, titleOpts); + layout.addBox(chart, title); + chart.titleBlock = title; + } + + return { + id: 'title', + + beforeInit: function(chart) { + var titleOpts = chart.options.title; + + if (titleOpts) { + createNewTitleBlockAndAttach(chart, titleOpts); + } + }, + + beforeUpdate: function(chart) { + var titleOpts = chart.options.title; + var titleBlock = chart.titleBlock; + + if (titleOpts) { + helpers.mergeIf(titleOpts, defaults.global.title); + + if (titleBlock) { + layout.configure(chart, titleBlock, titleOpts); + titleBlock.options = titleOpts; + } else { + createNewTitleBlockAndAttach(chart, titleOpts); + } + } else if (titleBlock) { + Chart.layoutService.removeBox(chart, titleBlock); + delete chart.titleBlock; + } + } + }; +}; + +},{"25":25,"26":26,"45":45}],52:[function(require,module,exports){ +'use strict'; + +module.exports = function(Chart) { + + // Default config for a category scale + var defaultConfig = { + position: 'bottom' + }; + + var DatasetScale = Chart.Scale.extend({ + /** + * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those + * else fall back to data.labels + * @private + */ + getLabels: function() { + var data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; + }, + + determineDataLimits: function() { + var me = this; + var labels = me.getLabels(); + me.minIndex = 0; + me.maxIndex = labels.length - 1; + var findIndex; + + if (me.options.ticks.min !== undefined) { + // user specified min value + findIndex = labels.indexOf(me.options.ticks.min); + me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; + } + + if (me.options.ticks.max !== undefined) { + // user specified max value + findIndex = labels.indexOf(me.options.ticks.max); + me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; + } + + me.min = labels[me.minIndex]; + me.max = labels[me.maxIndex]; + }, + + buildTicks: function() { + var me = this; + var labels = me.getLabels(); + // If we are viewing some subset of labels, slice the original array + me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var data = me.chart.data; + var isHorizontal = me.isHorizontal(); + + if (data.yLabels && !isHorizontal) { + return me.getRightValue(data.datasets[datasetIndex].data[index]); + } + return me.ticks[index - me.minIndex]; + }, + + // Used to get data value locations. Value can either be an index or a numerical value + getPixelForValue: function(value, index) { + var me = this; + var offset = me.options.offset; + // 1 is added because we need the length but we have the indexes + var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); + + // If value is a data object, then index is the index in the data array, + // not the index of the scale. We need to change that. + var valueCategory; + if (value !== undefined && value !== null) { + valueCategory = me.isHorizontal() ? value.x : value.y; + } + if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { + var labels = me.getLabels(); + value = valueCategory || value; + var idx = labels.indexOf(value); + index = idx !== -1 ? idx : index; + } + + if (me.isHorizontal()) { + var valueWidth = me.width / offsetAmt; + var widthOffset = (valueWidth * (index - me.minIndex)); + + if (offset) { + widthOffset += (valueWidth / 2); + } + + return me.left + Math.round(widthOffset); + } + var valueHeight = me.height / offsetAmt; + var heightOffset = (valueHeight * (index - me.minIndex)); + + if (offset) { + heightOffset += (valueHeight / 2); + } + + return me.top + Math.round(heightOffset); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); + }, + getValueForPixel: function(pixel) { + var me = this; + var offset = me.options.offset; + var value; + var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var horz = me.isHorizontal(); + var valueDimension = (horz ? me.width : me.height) / offsetAmt; + + pixel -= horz ? me.left : me.top; + + if (offset) { + pixel -= (valueDimension / 2); + } + + if (pixel <= 0) { + value = 0; + } else { + value = Math.round(pixel / valueDimension); + } + + return value + me.minIndex; + }, + getBasePixel: function() { + return this.bottom; + } + }); + + Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig); + +}; + +},{}],53:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var helpers = require(45); +var Ticks = require(34); + +module.exports = function(Chart) { + + var defaultConfig = { + position: 'left', + ticks: { + callback: Ticks.formatters.linear + } + }; + + var LinearScale = Chart.LinearScaleBase.extend({ + + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var isHorizontal = me.isHorizontal(); + var DEFAULT_MIN = 0; + var DEFAULT_MAX = 1; + + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // First Calculate the range + me.min = null; + me.max = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = { + positiveValues: [], + negativeValues: [] + }; + } + + // Store these per type + var positiveValues = valuesPerStack[key].positiveValues; + var negativeValues = valuesPerStack[key].negativeValues; + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + positiveValues[index] = positiveValues[index] || 0; + negativeValues[index] = negativeValues[index] || 0; + + if (opts.relativePoints) { + positiveValues[index] = 100; + } else if (value < 0) { + negativeValues[index] += value; + } else { + positiveValues[index] += value; + } + }); + } + }); + + helpers.each(valuesPerStack, function(valuesForType) { + var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); + var minVal = helpers.min(values); + var maxVal = helpers.max(values); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + }); + + } else { + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + }); + } + }); + } + + me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; + me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + this.handleTickRangeOptions(); + }, + getTickLimit: function() { + var maxTicks; + var me = this; + var tickOpts = me.options.ticks; + + if (me.isHorizontal()) { + maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50)); + } else { + // The factor of 2 used to scale the font size has been experimentally determined. + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize); + maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize))); + } + + return maxTicks; + }, + // Called after the ticks are built. We need + handleDirectionalChanges: function() { + if (!this.isHorizontal()) { + // We are in a vertical orientation. The top value is the highest. So reverse the array + this.ticks.reverse(); + } + }, + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + // Utils + getPixelForValue: function(value) { + // This must be called after fit has been run so that + // this.left, this.top, this.right, and this.bottom have been defined + var me = this; + var start = me.start; + + var rightValue = +me.getRightValue(value); + var pixel; + var range = me.end - start; + + if (me.isHorizontal()) { + pixel = me.left + (me.width / range * (rightValue - start)); + return Math.round(pixel); + } + + pixel = me.bottom - (me.height / range * (rightValue - start)); + return Math.round(pixel); + }, + getValueForPixel: function(pixel) { + var me = this; + var isHorizontal = me.isHorizontal(); + var innerDimension = isHorizontal ? me.width : me.height; + var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; + return me.start + ((me.end - me.start) * offset); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticksAsNumbers[index]); + } + }); + Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig); + +}; + +},{"25":25,"34":34,"45":45}],54:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); +var Ticks = require(34); + +module.exports = function(Chart) { + + var noop = helpers.noop; + + Chart.LinearScaleBase = Chart.Scale.extend({ + getRightValue: function(value) { + if (typeof value === 'string') { + return +value; + } + return Chart.Scale.prototype.getRightValue.call(this, value); + }, + + handleTickRangeOptions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, + // do nothing since that would make the chart weird. If the user really wants a weird chart + // axis, they can manually override it + if (tickOpts.beginAtZero) { + var minSign = helpers.sign(me.min); + var maxSign = helpers.sign(me.max); + + if (minSign < 0 && maxSign < 0) { + // move the top up to 0 + me.max = 0; + } else if (minSign > 0 && maxSign > 0) { + // move the bottom down to 0 + me.min = 0; + } + } + + var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; + var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; + + if (tickOpts.min !== undefined) { + me.min = tickOpts.min; + } else if (tickOpts.suggestedMin !== undefined) { + if (me.min === null) { + me.min = tickOpts.suggestedMin; + } else { + me.min = Math.min(me.min, tickOpts.suggestedMin); + } + } + + if (tickOpts.max !== undefined) { + me.max = tickOpts.max; + } else if (tickOpts.suggestedMax !== undefined) { + if (me.max === null) { + me.max = tickOpts.suggestedMax; + } else { + me.max = Math.max(me.max, tickOpts.suggestedMax); + } + } + + if (setMin !== setMax) { + // We set the min or the max but not both. + // So ensure that our range is good + // Inverted or 0 length range can happen when + // ticks.min is set, and no datasets are visible + if (me.min >= me.max) { + if (setMin) { + me.max = me.min + 1; + } else { + me.min = me.max - 1; + } + } + } + + if (me.min === me.max) { + me.max++; + + if (!tickOpts.beginAtZero) { + me.min--; + } + } + }, + getTickLimit: noop, + handleDirectionalChanges: noop, + + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph. Make sure we always have at least 2 ticks + var maxTicks = me.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + + var numericGeneratorOptions = { + maxTicks: maxTicks, + min: tickOpts.min, + max: tickOpts.max, + stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) + }; + var ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me); + + me.handleDirectionalChanges(); + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers.max(ticks); + me.min = helpers.min(ticks); + + if (tickOpts.reverse) { + ticks.reverse(); + + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + }, + convertTicksToLabels: function() { + var me = this; + me.ticksAsNumbers = me.ticks.slice(); + me.zeroLineIndex = me.ticks.indexOf(0); + + Chart.Scale.prototype.convertTicksToLabels.call(me); + } + }); +}; + +},{"34":34,"45":45}],55:[function(require,module,exports){ +'use strict'; + +var helpers = require(45); +var Ticks = require(34); + +module.exports = function(Chart) { + + var defaultConfig = { + position: 'left', + + // label settings + ticks: { + callback: Ticks.formatters.logarithmic + } + }; + + var LogarithmicScale = Chart.Scale.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var valueOrDefault = helpers.valueOrDefault; + var isHorizontal = me.isHorizontal(); + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // Calculate Range + me.min = null; + me.max = null; + me.minNotZero = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = []; + } + + helpers.each(dataset.data, function(rawValue, index) { + var values = valuesPerStack[key]; + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + values[index] = values[index] || 0; + + if (opts.relativePoints) { + values[index] = 100; + } else { + // Don't need to split positive and negative since the log scale can't handle a 0 crossing + values[index] += value; + } + }); + } + }); + + helpers.each(valuesPerStack, function(valuesForType) { + var minVal = helpers.min(valuesForType); + var maxVal = helpers.max(valuesForType); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + }); + + } else { + helpers.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + + if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { + me.minNotZero = value; + } + }); + } + }); + } + + me.min = valueOrDefault(tickOpts.min, me.min); + me.max = valueOrDefault(tickOpts.max, me.max); + + if (me.min === me.max) { + if (me.min !== 0 && me.min !== null) { + me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1); + me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1); + } else { + me.min = 1; + me.max = 10; + } + } + }, + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + var generationOptions = { + min: tickOpts.min, + max: tickOpts.max + }; + var ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me); + + if (!me.isHorizontal()) { + // We are in a vertical orientation. The top value is the highest. So reverse the array + ticks.reverse(); + } + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers.max(ticks); + me.min = helpers.min(ticks); + + if (tickOpts.reverse) { + ticks.reverse(); + + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + }, + convertTicksToLabels: function() { + this.tickValues = this.ticks.slice(); + + Chart.Scale.prototype.convertTicksToLabels.call(this); + }, + // Get the correct tooltip label + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + getPixelForTick: function(index) { + return this.getPixelForValue(this.tickValues[index]); + }, + getPixelForValue: function(value) { + var me = this; + var start = me.start; + var newVal = +me.getRightValue(value); + var opts = me.options; + var tickOpts = opts.ticks; + var innerDimension, pixel, range; + + if (me.isHorizontal()) { + range = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0 + if (newVal === 0) { + pixel = me.left; + } else { + innerDimension = me.width; + pixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); + } + } else { + // Bottom - top since pixels increase downward on a screen + innerDimension = me.height; + if (start === 0 && !tickOpts.reverse) { + range = helpers.log10(me.end) - helpers.log10(me.minNotZero); + if (newVal === start) { + pixel = me.bottom; + } else if (newVal === me.minNotZero) { + pixel = me.bottom - innerDimension * 0.02; + } else { + pixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); + } + } else if (me.end === 0 && tickOpts.reverse) { + range = helpers.log10(me.start) - helpers.log10(me.minNotZero); + if (newVal === me.end) { + pixel = me.top; + } else if (newVal === me.minNotZero) { + pixel = me.top + innerDimension * 0.02; + } else { + pixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); + } + } else if (newVal === 0) { + pixel = tickOpts.reverse ? me.top : me.bottom; + } else { + range = helpers.log10(me.end) - helpers.log10(start); + innerDimension = me.height; + pixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); + } + } + return pixel; + }, + getValueForPixel: function(pixel) { + var me = this; + var range = helpers.log10(me.end) - helpers.log10(me.start); + var value, innerDimension; + + if (me.isHorizontal()) { + innerDimension = me.width; + value = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension); + } else { // todo: if start === 0 + innerDimension = me.height; + value = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start; + } + return value; + } + }); + Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); + +}; + +},{"34":34,"45":45}],56:[function(require,module,exports){ +'use strict'; + +var defaults = require(25); +var helpers = require(45); +var Ticks = require(34); + +module.exports = function(Chart) { + + var globalDefaults = defaults.global; + + var defaultConfig = { + display: true, + + // Boolean - Whether to animate scaling the chart from the centre + animate: true, + position: 'chartArea', + + angleLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1 + }, + + gridLines: { + circular: false + }, + + // label settings + ticks: { + // Boolean - Show a backdrop to the scale label + showLabelBackdrop: true, + + // String - The colour of the label backdrop + backdropColor: 'rgba(255,255,255,0.75)', + + // Number - The backdrop padding above & below the label in pixels + backdropPaddingY: 2, + + // Number - The backdrop padding to the side of the label in pixels + backdropPaddingX: 2, + + callback: Ticks.formatters.linear + }, + + pointLabels: { + // Boolean - if true, show point labels + display: true, + + // Number - Point label font size in pixels + fontSize: 10, + + // Function - Used to convert point labels + callback: function(label) { + return label; + } + } + }; + + function getValueCount(scale) { + var opts = scale.options; + return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; + } + + function getPointLabelFontOptions(scale) { + var pointLabelOptions = scale.options.pointLabels; + var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize); + var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle); + var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily); + var font = helpers.fontString(fontSize, fontStyle, fontFamily); + + return { + size: fontSize, + style: fontStyle, + family: fontFamily, + font: font + }; + } + + function measureLabelSize(ctx, fontSize, label) { + if (helpers.isArray(label)) { + return { + w: helpers.longestText(ctx, ctx.font, label), + h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize) + }; + } + + return { + w: ctx.measureText(label).width, + h: fontSize + }; + } + + function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - (size / 2), + end: pos + (size / 2) + }; + } else if (angle < min || angle > max) { + return { + start: pos - size - 5, + end: pos + }; + } + + return { + start: pos, + end: pos + size + 5 + }; + } + + /** + * Helper function to fit a radial linear scale with point labels + */ + function fitWithPointLabels(scale) { + /* + * Right, this is really confusing and there is a lot of maths going on here + * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 + * + * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif + * + * Solution: + * + * We assume the radius of the polygon is half the size of the canvas at first + * at each index we check if the text overlaps. + * + * Where it does, we store that angle and that index. + * + * After finding the largest index and angle we calculate how much we need to remove + * from the shape radius to move the point inwards by that x. + * + * We average the left and right distances to get the maximum shape radius that can fit in the box + * along with labels. + * + * Once we have that, we can find the centre point for the chart, by taking the x text protrusion + * on each side, removing that from the size, halving it and adding the left x protrusion width. + * + * This will mean we have a shape fitted to the canvas, as large as it can be with the labels + * and position it in the most space efficient manner + * + * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif + */ + + var plFont = getPointLabelFontOptions(scale); + + // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. + // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points + var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); + var furthestLimits = { + r: scale.width, + l: 0, + t: scale.height, + b: 0 + }; + var furthestAngles = {}; + var i, textSize, pointPosition; + + scale.ctx.font = plFont.font; + scale._pointLabelSizes = []; + + var valueCount = getValueCount(scale); + for (i = 0; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, largestPossibleRadius); + textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || ''); + scale._pointLabelSizes[i] = textSize; + + // Add quarter circle to make degree 0 mean top of circle + var angleRadians = scale.getIndexAngle(i); + var angle = helpers.toDegrees(angleRadians) % 360; + var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + + if (hLimits.start < furthestLimits.l) { + furthestLimits.l = hLimits.start; + furthestAngles.l = angleRadians; + } + + if (hLimits.end > furthestLimits.r) { + furthestLimits.r = hLimits.end; + furthestAngles.r = angleRadians; + } + + if (vLimits.start < furthestLimits.t) { + furthestLimits.t = vLimits.start; + furthestAngles.t = angleRadians; + } + + if (vLimits.end > furthestLimits.b) { + furthestLimits.b = vLimits.end; + furthestAngles.b = angleRadians; + } + } + + scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles); + } + + /** + * Helper function to fit a radial linear scale with no point labels + */ + function fit(scale) { + var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); + scale.drawingArea = Math.round(largestPossibleRadius); + scale.setCenterPoint(0, 0, 0, 0); + } + + function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return 'center'; + } else if (angle < 180) { + return 'left'; + } + + return 'right'; + } + + function fillText(ctx, text, position, fontSize) { + if (helpers.isArray(text)) { + var y = position.y; + var spacing = 1.5 * fontSize; + + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], position.x, y); + y += spacing; + } + } else { + ctx.fillText(text, position.x, position.y); + } + } + + function adjustPointPositionForLabelHeight(angle, textSize, position) { + if (angle === 90 || angle === 270) { + position.y -= (textSize.h / 2); + } else if (angle > 270 || angle < 90) { + position.y -= textSize.h; + } + } + + function drawPointLabels(scale) { + var ctx = scale.ctx; + var valueOrDefault = helpers.valueOrDefault; + var opts = scale.options; + var angleLineOpts = opts.angleLines; + var pointLabelOpts = opts.pointLabels; + + ctx.lineWidth = angleLineOpts.lineWidth; + ctx.strokeStyle = angleLineOpts.color; + + var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); + + // Point Label Font + var plFont = getPointLabelFontOptions(scale); + + ctx.textBaseline = 'top'; + + for (var i = getValueCount(scale) - 1; i >= 0; i--) { + if (angleLineOpts.display) { + var outerPosition = scale.getPointPosition(i, outerDistance); + ctx.beginPath(); + ctx.moveTo(scale.xCenter, scale.yCenter); + ctx.lineTo(outerPosition.x, outerPosition.y); + ctx.stroke(); + ctx.closePath(); + } + + if (pointLabelOpts.display) { + // Extra 3px out for some label spacing + var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); + + // Keep this in loop since we may support array properties here + var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + ctx.font = plFont.font; + ctx.fillStyle = pointLabelFontColor; + + var angleRadians = scale.getIndexAngle(i); + var angle = helpers.toDegrees(angleRadians); + ctx.textAlign = getTextAlignForAngle(angle); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } + } + } + + function drawRadiusLine(scale, gridLineOpts, radius, index) { + var ctx = scale.ctx; + ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1); + ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1); + + if (scale.options.gridLines.circular) { + // Draw circular arcs between the points + ctx.beginPath(); + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); + ctx.closePath(); + ctx.stroke(); + } else { + // Draw straight lines connecting each index + var valueCount = getValueCount(scale); + + if (valueCount === 0) { + return; + } + + ctx.beginPath(); + var pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + + for (var i = 1; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); + } + + ctx.closePath(); + ctx.stroke(); + } + } + + function numberOrZero(param) { + return helpers.isNumber(param) ? param : 0; + } + + var LinearRadialScale = Chart.LinearScaleBase.extend({ + setDimensions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + // Set the unconstrained dimension before label rotation + me.width = me.maxWidth; + me.height = me.maxHeight; + me.xCenter = Math.round(me.width / 2); + me.yCenter = Math.round(me.height / 2); + + var minSize = helpers.min([me.height, me.width]); + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2); + }, + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var min = Number.POSITIVE_INFINITY; + var max = Number.NEGATIVE_INFINITY; + + helpers.each(chart.data.datasets, function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + + helpers.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + min = Math.min(value, min); + max = Math.max(value, max); + }); + } + }); + + me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); + me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + me.handleTickRangeOptions(); + }, + getTickLimit: function() { + var tickOpts = this.options.ticks; + var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize))); + }, + convertTicksToLabels: function() { + var me = this; + + Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me); + + // Point labels + me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); + }, + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + fit: function() { + if (this.options.pointLabels.display) { + fitWithPointLabels(this); + } else { + fit(this); + } + }, + /** + * Set radius reductions and determine new radius and center point + * @private + */ + setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { + var me = this; + var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); + var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); + var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); + var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b); + + radiusReductionLeft = numberOrZero(radiusReductionLeft); + radiusReductionRight = numberOrZero(radiusReductionRight); + radiusReductionTop = numberOrZero(radiusReductionTop); + radiusReductionBottom = numberOrZero(radiusReductionBottom); + + me.drawingArea = Math.min( + Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), + Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); + me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); + }, + setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { + var me = this; + var maxRight = me.width - rightMovement - me.drawingArea; + var maxLeft = leftMovement + me.drawingArea; + var maxTop = topMovement + me.drawingArea; + var maxBottom = me.height - bottomMovement - me.drawingArea; + + me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left); + me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top); + }, + + getIndexAngle: function(index) { + var angleMultiplier = (Math.PI * 2) / getValueCount(this); + var startAngle = this.chart.options && this.chart.options.startAngle ? + this.chart.options.startAngle : + 0; + + var startAngleRadians = startAngle * Math.PI * 2 / 360; + + // Start from the top instead of right, so remove a quarter of the circle + return index * angleMultiplier + startAngleRadians; + }, + getDistanceFromCenterForValue: function(value) { + var me = this; + + if (value === null) { + return 0; // null always in center + } + + // Take into account half font size + the yPadding of the top value + var scalingFactor = me.drawingArea / (me.max - me.min); + if (me.options.ticks.reverse) { + return (me.max - value) * scalingFactor; + } + return (value - me.min) * scalingFactor; + }, + getPointPosition: function(index, distanceFromCenter) { + var me = this; + var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); + return { + x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter, + y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter + }; + }, + getPointPositionForValue: function(index, value) { + return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); + }, + + getBasePosition: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.getPointPositionForValue(0, + me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0); + }, + + draw: function() { + var me = this; + var opts = me.options; + var gridLineOpts = opts.gridLines; + var tickOpts = opts.ticks; + var valueOrDefault = helpers.valueOrDefault; + + if (opts.display) { + var ctx = me.ctx; + var startAngle = this.getIndexAngle(0); + + // Tick Font + var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); + var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle); + var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily); + var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily); + + helpers.each(me.ticks, function(label, index) { + // Don't draw a centre value (if it is minimum) + if (index > 0 || tickOpts.reverse) { + var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); + + // Draw circular lines around the scale + if (gridLineOpts.display && index !== 0) { + drawRadiusLine(me, gridLineOpts, yCenterOffset, index); + } + + if (tickOpts.display) { + var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor); + ctx.font = tickLabelFont; + + ctx.save(); + ctx.translate(me.xCenter, me.yCenter); + ctx.rotate(startAngle); + + if (tickOpts.showLabelBackdrop) { + var labelWidth = ctx.measureText(label).width; + ctx.fillStyle = tickOpts.backdropColor; + ctx.fillRect( + -labelWidth / 2 - tickOpts.backdropPaddingX, + -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY, + labelWidth + tickOpts.backdropPaddingX * 2, + tickFontSize + tickOpts.backdropPaddingY * 2 + ); + } + + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = tickFontColor; + ctx.fillText(label, 0, -yCenterOffset); + ctx.restore(); + } + } + }); + + if (opts.angleLines.display || opts.pointLabels.display) { + drawPointLabels(me); + } + } + } + }); + Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); + +}; + +},{"25":25,"34":34,"45":45}],57:[function(require,module,exports){ +/* global window: false */ +'use strict'; + +var moment = require(1); +moment = typeof moment === 'function' ? moment : window.moment; + +var defaults = require(25); +var helpers = require(45); + +// Integer constants are from the ES6 spec. +var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; +var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + +var INTERVALS = { + millisecond: { + major: true, + size: 1, + steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] + }, + second: { + major: true, + size: 1000, + steps: [1, 2, 5, 10, 30] + }, + minute: { + major: true, + size: 60000, + steps: [1, 2, 5, 10, 30] + }, + hour: { + major: true, + size: 3600000, + steps: [1, 2, 3, 6, 12] + }, + day: { + major: true, + size: 86400000, + steps: [1, 2, 5] + }, + week: { + major: false, + size: 604800000, + steps: [1, 2, 3, 4] + }, + month: { + major: true, + size: 2.628e9, + steps: [1, 2, 3] + }, + quarter: { + major: false, + size: 7.884e9, + steps: [1, 2, 3, 4] + }, + year: { + major: true, + size: 3.154e10 + } +}; + +var UNITS = Object.keys(INTERVALS); + +function sorter(a, b) { + return a - b; +} + +function arrayUnique(items) { + var hash = {}; + var out = []; + var i, ilen, item; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + if (!hash[item]) { + hash[item] = true; + out.push(item); + } + } + + return out; +} + +/** + * Returns an array of {time, pos} objects used to interpolate a specific `time` or position + * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is + * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other + * extremity (left + width or top + height). Note that it would be more optimized to directly + * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need + * to create the lookup table. The table ALWAYS contains at least two items: min and max. + * + * @param {Number[]} timestamps - timestamps sorted from lowest to highest. + * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min + * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. + * If 'series', timestamps will be positioned at the same distance from each other. In this + * case, only timestamps that break the time linearity are registered, meaning that in the + * best case, all timestamps are linear, the table contains only min and max. + */ +function buildLookupTable(timestamps, min, max, distribution) { + if (distribution === 'linear' || !timestamps.length) { + return [ + {time: min, pos: 0}, + {time: max, pos: 1} + ]; + } + + var table = []; + var items = [min]; + var i, ilen, prev, curr, next; + + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr > min && curr < max) { + items.push(curr); + } + } + + items.push(max); + + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; + + // only add points that breaks the scale linearity + if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { + table.push({time: curr, pos: i / (ilen - 1)}); + } + } + + return table; +} + +// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ +function lookup(table, key, value) { + var lo = 0; + var hi = table.length - 1; + var mid, i0, i1; + + while (lo >= 0 && lo <= hi) { + mid = (lo + hi) >> 1; + i0 = table[mid - 1] || null; + i1 = table[mid]; + + if (!i0) { + // given value is outside table (before first item) + return {lo: null, hi: i1}; + } else if (i1[key] < value) { + lo = mid + 1; + } else if (i0[key] > value) { + hi = mid - 1; + } else { + return {lo: i0, hi: i1}; + } + } + + // given value is outside table (after last item) + return {lo: i1, hi: null}; +} + +/** + * Linearly interpolates the given source `value` using the table items `skey` values and + * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') + * returns the position for a timestamp equal to 42. If value is out of bounds, values at + * index [0, 1] or [n - 1, n] are used for the interpolation. + */ +function interpolate(table, skey, sval, tkey) { + var range = lookup(table, skey, sval); + + // Note: the lookup table ALWAYS contains at least 2 items (min and max) + var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; + var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; + + var span = next[skey] - prev[skey]; + var ratio = span ? (sval - prev[skey]) / span : 0; + var offset = (next[tkey] - prev[tkey]) * ratio; + + return prev[tkey] + offset; +} + +/** + * Convert the given value to a moment object using the given time options. + * @see http://momentjs.com/docs/#/parsing/ + */ +function momentify(value, options) { + var parser = options.parser; + var format = options.parser || options.format; + + if (typeof parser === 'function') { + return parser(value); + } + + if (typeof value === 'string' && typeof format === 'string') { + return moment(value, format); + } + + if (!(value instanceof moment)) { + value = moment(value); + } + + if (value.isValid()) { + return value; + } + + // Labels are in an incompatible moment format and no `parser` has been provided. + // The user might still use the deprecated `format` option to convert his inputs. + if (typeof format === 'function') { + return format(value); + } + + return value; +} + +function parse(input, scale) { + if (helpers.isNullOrUndef(input)) { + return null; + } + + var options = scale.options.time; + var value = momentify(scale.getRightValue(input), options); + if (!value.isValid()) { + return null; + } + + if (options.round) { + value.startOf(options.round); + } + + return value.valueOf(); +} + +/** + * Returns the number of unit to skip to be able to display up to `capacity` number of ticks + * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. + */ +function determineStepSize(min, max, unit, capacity) { + var range = max - min; + var interval = INTERVALS[unit]; + var milliseconds = interval.size; + var steps = interval.steps; + var i, ilen, factor; + + if (!steps) { + return Math.ceil(range / ((capacity || 1) * milliseconds)); + } + + for (i = 0, ilen = steps.length; i < ilen; ++i) { + factor = steps[i]; + if (Math.ceil(range / (milliseconds * factor)) <= capacity) { + break; + } + } + + return factor; +} + +function determineUnit(minUnit, min, max, capacity) { + var ilen = UNITS.length; + var i, interval, factor; + + for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + interval = INTERVALS[UNITS[i]]; + factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; + + if (Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } + } + + return UNITS[ilen - 1]; +} + +function determineMajorUnit(unit) { + for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].major) { + return UNITS[i]; + } + } +} + +/** + * Generates a maximum of `capacity` timestamps between min and max, rounded to the + * `minor` unit, aligned on the `major` unit and using the given scale time `options`. + * Important: this method can return ticks outside the min and max range, it's the + * responsibility of the calling code to clamp values if needed. + */ +function generate(min, max, minor, major, capacity, options) { + var timeOpts = options.time; + var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize); + var weekday = minor === 'week' ? timeOpts.isoWeekday : false; + var majorTicksEnabled = options.ticks.major.enabled; + var interval = INTERVALS[minor]; + var first = moment(min); + var last = moment(max); + var ticks = []; + var time; + + if (!stepSize) { + stepSize = determineStepSize(min, max, minor, capacity); + } + + // For 'week' unit, handle the first day of week option + if (weekday) { + first = first.isoWeekday(weekday); + last = last.isoWeekday(weekday); + } + + // Align first/last ticks on unit + first = first.startOf(weekday ? 'day' : minor); + last = last.startOf(weekday ? 'day' : minor); + + // Make sure that the last tick include max + if (last < max) { + last.add(1, minor); + } + + time = moment(first); + + if (majorTicksEnabled && major && !weekday && !timeOpts.round) { + // Align the first tick on the previous `minor` unit aligned on the `major` unit: + // we first aligned time on the previous `major` unit then add the number of full + // stepSize there is between first and the previous major time. + time.startOf(major); + time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor); + } + + for (; time < last; time.add(stepSize, minor)) { + ticks.push(+time); + } + + ticks.push(+time); + + return ticks; +} + +/** + * Returns the right and left offsets from edges in the form of {left, right}. + * Offsets are added when the `offset` option is true. + */ +function computeOffsets(table, ticks, min, max, options) { + var left = 0; + var right = 0; + var upper, lower; + + if (options.offset && ticks.length) { + if (!options.time.min) { + upper = ticks.length > 1 ? ticks[1] : max; + lower = ticks[0]; + left = ( + interpolate(table, 'time', upper, 'pos') - + interpolate(table, 'time', lower, 'pos') + ) / 2; + } + if (!options.time.max) { + upper = ticks[ticks.length - 1]; + lower = ticks.length > 1 ? ticks[ticks.length - 2] : min; + right = ( + interpolate(table, 'time', upper, 'pos') - + interpolate(table, 'time', lower, 'pos') + ) / 2; + } + } + + return {left: left, right: right}; +} + +function ticksFromTimestamps(values, majorUnit) { + var ticks = []; + var i, ilen, value, major; + + for (i = 0, ilen = values.length; i < ilen; ++i) { + value = values[i]; + major = majorUnit ? value === +moment(value).startOf(majorUnit) : false; + + ticks.push({ + value: value, + major: major + }); + } + + return ticks; +} + +module.exports = function(Chart) { + + var defaultConfig = { + position: 'bottom', + + /** + * Data distribution along the scale: + * - 'linear': data are spread according to their time (distances can vary), + * - 'series': data are spread at the same distance from each other. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + distribution: 'linear', + + /** + * Scale boundary strategy (bypassed by min/max time options) + * - `data`: make sure data are fully visible, ticks outside are removed + * - `ticks`: make sure ticks are fully visible, data outside are truncated + * @see https://github.com/chartjs/Chart.js/pull/4556 + * @since 2.7.0 + */ + bounds: 'data', + + time: { + parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment + format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/ + unit: false, // false == automatic or override with week, month, year, etc. + round: false, // none, or override with week, month, year, etc. + displayFormat: false, // DEPRECATED + isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/ + minUnit: 'millisecond', + + // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/ + displayFormats: { + millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM, + second: 'h:mm:ss a', // 11:20:01 AM + minute: 'h:mm a', // 11:20 AM + hour: 'hA', // 5PM + day: 'MMM D', // Sep 4 + week: 'll', // Week 46, or maybe "[W]WW - YYYY" ? + month: 'MMM YYYY', // Sept 2015 + quarter: '[Q]Q - YYYY', // Q3 + year: 'YYYY' // 2015 + }, + }, + ticks: { + autoSkip: false, + + /** + * Ticks generation input values: + * - 'auto': generates "optimal" ticks based on scale size and time options. + * - 'data': generates ticks from data (including labels from data {t|x|y} objects). + * - 'labels': generates ticks from user given `data.labels` values ONLY. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + source: 'auto', + + major: { + enabled: false + } + } + }; + + var TimeScale = Chart.Scale.extend({ + initialize: function() { + if (!moment) { + throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); + } + + this.mergeTicksOptions(); + + Chart.Scale.prototype.initialize.call(this); + }, + + update: function() { + var me = this; + var options = me.options; + + // DEPRECATIONS: output a message only one time per update + if (options.time && options.time.format) { + console.warn('options.time.format is deprecated and replaced by options.time.parser.'); + } + + return Chart.Scale.prototype.update.apply(me, arguments); + }, + + /** + * Allows data to be referenced via 't' attribute + */ + getRightValue: function(rawValue) { + if (rawValue && rawValue.t !== undefined) { + rawValue = rawValue.t; + } + return Chart.Scale.prototype.getRightValue.call(this, rawValue); + }, + + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var timeOpts = me.options.time; + var min = parse(timeOpts.min, me) || MAX_INTEGER; + var max = parse(timeOpts.max, me) || MIN_INTEGER; + var timestamps = []; + var datasets = []; + var labels = []; + var i, j, ilen, jlen, data, timestamp; + + // Convert labels to timestamps + for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) { + labels.push(parse(chart.data.labels[i], me)); + } + + // Convert data to timestamps + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + data = chart.data.datasets[i].data; + + // Let's consider that all data have the same format. + if (helpers.isObject(data[0])) { + datasets[i] = []; + + for (j = 0, jlen = data.length; j < jlen; ++j) { + timestamp = parse(data[j], me); + timestamps.push(timestamp); + datasets[i][j] = timestamp; + } + } else { + timestamps.push.apply(timestamps, labels); + datasets[i] = labels.slice(0); + } + } else { + datasets[i] = []; + } + } + + if (labels.length) { + // Sort labels **after** data have been converted + labels = arrayUnique(labels).sort(sorter); + min = Math.min(min, labels[0]); + max = Math.max(max, labels[labels.length - 1]); + } + + if (timestamps.length) { + timestamps = arrayUnique(timestamps).sort(sorter); + min = Math.min(min, timestamps[0]); + max = Math.max(max, timestamps[timestamps.length - 1]); + } + + // In case there is no valid min/max, let's use today limits + min = min === MAX_INTEGER ? +moment().startOf('day') : min; + max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max; + + // Make sure that max is strictly higher than min (required by the lookup table) + me.min = Math.min(min, max); + me.max = Math.max(min + 1, max); + + // PRIVATE + me._horizontal = me.isHorizontal(); + me._table = []; + me._timestamps = { + data: timestamps, + datasets: datasets, + labels: labels + }; + }, + + buildTicks: function() { + var me = this; + var min = me.min; + var max = me.max; + var options = me.options; + var timeOpts = options.time; + var formats = timeOpts.displayFormats; + var capacity = me.getLabelCapacity(min); + var unit = timeOpts.unit || determineUnit(timeOpts.minUnit, min, max, capacity); + var majorUnit = determineMajorUnit(unit); + var timestamps = []; + var ticks = []; + var i, ilen, timestamp; + + switch (options.ticks.source) { + case 'data': + timestamps = me._timestamps.data; + break; + case 'labels': + timestamps = me._timestamps.labels; + break; + case 'auto': + default: + timestamps = generate(min, max, unit, majorUnit, capacity, options); + } + + if (options.bounds === 'ticks' && timestamps.length) { + min = timestamps[0]; + max = timestamps[timestamps.length - 1]; + } + + // Enforce limits with user min/max options + min = parse(timeOpts.min, me) || min; + max = parse(timeOpts.max, me) || max; + + // Remove ticks outside the min/max range + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + timestamp = timestamps[i]; + if (timestamp >= min && timestamp <= max) { + ticks.push(timestamp); + } + } + + me.min = min; + me.max = max; + + // PRIVATE + me._unit = unit; + me._majorUnit = majorUnit; + me._minorFormat = formats[unit]; + me._majorFormat = formats[majorUnit]; + me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); + me._offsets = computeOffsets(me._table, ticks, min, max, options); + + return ticksFromTimestamps(ticks, majorUnit); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var data = me.chart.data; + var timeOpts = me.options.time; + var label = data.labels && index < data.labels.length ? data.labels[index] : ''; + var value = data.datasets[datasetIndex].data[index]; + + if (helpers.isObject(value)) { + label = me.getRightValue(value); + } + if (timeOpts.tooltipFormat) { + label = momentify(label, timeOpts).format(timeOpts.tooltipFormat); + } + + return label; + }, + + /** + * Function to format an individual tick mark + * @private + */ + tickFormatFunction: function(tick, index, ticks) { + var me = this; + var options = me.options; + var time = tick.valueOf(); + var majorUnit = me._majorUnit; + var majorFormat = me._majorFormat; + var majorTime = tick.clone().startOf(me._majorUnit).valueOf(); + var majorTickOpts = options.ticks.major; + var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; + var label = tick.format(major ? majorFormat : me._minorFormat); + var tickOpts = major ? majorTickOpts : options.ticks.minor; + var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback); + + return formatter ? formatter(label, index, ticks) : label; + }, + + convertTicksToLabels: function(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks)); + } + + return labels; + }, + + /** + * @private + */ + getPixelForOffset: function(time) { + var me = this; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? me.left : me.top; + var pos = interpolate(me._table, 'time', time, 'pos'); + + return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right); + }, + + getPixelForValue: function(value, index, datasetIndex) { + var me = this; + var time = null; + + if (index !== undefined && datasetIndex !== undefined) { + time = me._timestamps.datasets[datasetIndex][index]; + } + + if (time === null) { + time = parse(value, me); + } + + if (time !== null) { + return me.getPixelForOffset(time); + } + }, + + getPixelForTick: function(index) { + var ticks = this.getTicks(); + return index >= 0 && index < ticks.length ? + this.getPixelForOffset(ticks[index].value) : + null; + }, + + getValueForPixel: function(pixel) { + var me = this; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? me.left : me.top; + var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right; + var time = interpolate(me._table, 'pos', pos, 'time'); + + return moment(time); + }, + + /** + * Crude approximation of what the label width might be + * @private + */ + getLabelWidth: function(label) { + var me = this; + var ticksOpts = me.options.ticks; + var tickLabelWidth = me.ctx.measureText(label).width; + var angle = helpers.toRadians(ticksOpts.maxRotation); + var cosRotation = Math.cos(angle); + var sinRotation = Math.sin(angle); + var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize); + + return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); + }, + + /** + * @private + */ + getLabelCapacity: function(exampleTime) { + var me = this; + + me._minorFormat = me.options.time.displayFormats.millisecond; // Pick the longest format for guestimation + + var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, []); + var tickLabelWidth = me.getLabelWidth(exampleLabel); + var innerWidth = me.isHorizontal() ? me.width : me.height; + + return Math.floor(innerWidth / tickLabelWidth); + } + }); + + Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig); +}; + +},{"1":1,"25":25,"45":45}]},{},[7])(7) +}); diff --git a/covhtmlreport/vendor/chart.js/Chart.min.js b/covhtmlreport/vendor/chart.js/Chart.min.js new file mode 100644 index 000000000..1beccbe12 --- /dev/null +++ b/covhtmlreport/vendor/chart.js/Chart.min.js @@ -0,0 +1,14 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.7.0 + * + * Copyright 2017 Nick Downie + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n||t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,o=2*a-1,r=n.alpha()-i.alpha(),l=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*n.red()+s*i.red(),l*n.green()+s*i.green(),l*n.blue()+s*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e,n,i,a=u(t),o=a[0],r=a[1],l=a[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,n=500*(o-r),i=200*(r-l),[e,n,i]}function c(t){var e,n,i,a,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];e=2*s-(n=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(i=r+1/3*-(u-1))<0&&i++,i>1&&i--,o=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-n),l=255*i*(1-n*o),s=255*i*(1-n*(1-o)),i=255*i;switch(a){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function f(t){var e,n,i,a,o=t[0]/360,l=t[1]/100,s=t[2]/100,u=l+s;switch(u>1&&(l/=u,s/=u),e=Math.floor(6*o),n=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),a=l+i*(n-l),e){default:case 6:case 0:r=n,g=a,b=l;break;case 1:r=a,g=n,b=l;break;case 2:r=l,g=n,b=a;break;case 3:r=l,g=a,b=n;break;case 4:r=a,g=l,b=n;break;case 5:r=n,g=l,b=a}return[255*r,255*g,255*b]}function p(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,a*(1-l)+l),n=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*n,255*i]}function v(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*a+-1.5372*o+-.4986*r,n=-.9689*a+1.8758*o+.0415*r,i=.0557*a+-.204*o+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function m(t){var e,n,i,a=t[0],o=t[1],r=t[2];return a/=95.047,o/=100,r/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,n=500*(a-o),i=200*(o-r),[e,n,i]}function x(t){var e,n,i,a,o=t[0],r=t[1],l=t[2];return o<=8?a=(n=100*o/903.3)/100*7.787+16/116:(n=100*Math.pow((o+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i=i/108.883<=.008859?i=108.883*(a-l/200-16/116)/7.787:108.883*Math.pow(a-l/200,3),[e,n,i]}function y(t){var e,n,i,a=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),(n=360*e/2/Math.PI)<0&&(n+=360),i=Math.sqrt(o*o+r*r),[a,i,n]}function k(t){return v(x(t))}function w(t){var e,n,i,a=t[0],o=t[1];return i=t[2]/360*2*Math.PI,e=o*Math.cos(i),n=o*Math.sin(i),[a,e,n]}function M(t){return S[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,a*=o<=1?o:2-o,n=(o+a)/2,e=2*a/(o+a),[i,100*e,100*n])},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return l(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return n=(2-a)*o,e=a*o,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return l(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return l(f(t))},hwb2keyword:function(t){return s(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return i(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return s(p(t))},keyword2rgb:M,keyword2hsl:function(t){return i(M(t))},keyword2hsv:function(t){return a(M(t))},keyword2hwb:function(t){return o(M(t))},keyword2cmyk:function(t){return l(M(t))},keyword2lab:function(t){return d(M(t))},keyword2xyz:function(t){return u(M(t))},xyz2rgb:v,xyz2lab:m,xyz2lch:function(t){return y(m(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:w,lch2xyz:function(t){return x(w(t))},lch2rgb:function(t){return k(w(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,n){var i=t(4),a=function(){return new u};for(var o in i){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];(a[l]=a[l]||{})[s]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index=0&&a>0)&&(v+=a));return o=c.getPixelForValue(v),r=c.getPixelForValue(v+f),l=(r-o)/2,{size:l,base:o,head:r,center:r+l/2}},calculateBarIndexPixels:function(t,e,n){var i,a,r,l,s,u,d=this,c=n.scale.options,h=d.getStackIndex(t),f=n.pixels,g=f[e],p=f.length,v=n.start,m=n.end;return 1===p?(i=g>v?g-v:m-g,a=g0&&(i=(g-f[e-1])/2,e===p-1&&(a=i)),e');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i],s=l&&l.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(r.backgroundColor,i,d.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(r.borderColor,i,d.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(r.borderWidth,i,d.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n=Math.PI?-1:g<-Math.PI?1:0))+f,v={x:Math.cos(g),y:Math.sin(g)},m={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,w=h/100,M={x:y?-1:Math.min(v.x*(v.x<0?1:w),m.x*(m.x<0?1:w)),y:k?-1:Math.min(v.y*(v.y<0?1:w),m.y*(m.y<0?1:w))},S={x:b?1:Math.max(v.x*(v.x>0?1:w),m.x*(m.x>0?1:w)),y:x?1:Math.max(v.y*(v.y>0?1:w),m.y*(m.y>0?1:w))},C={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(l/C.width,s/C.height),d={x:-.5*(S.x+M.x),y:-.5*(S.y+M.y)}}n.borderWidth=e.getMaxBorderWidth(c.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,c.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),o.each(c.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,r=a.chartArea,l=a.options,s=l.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=i.getDataset(),g=n&&s.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(l.circumference/(2*Math.PI)),p=n&&s.animateScale?0:i.innerRadius,v=n&&s.animateScale?0:i.outerRadius,m=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:v,innerRadius:p,label:m(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),n&&s.animateRotate||(b.startAngle=0===e?l.rotation:i.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return o.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,o=t.length,r=0;r(i=e>i?e:i)?n:i;return i}})}},{25:25,40:40,45:45}],18:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,r=this,l=r.getMeta(),s=l.dataset,u=l.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=u,s._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},s.pivot()),n=0,i=u.length;n');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i].custom||{},s=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:s(r.backgroundColor,i,u.backgroundColor),strokeStyle:l.borderColor?l.borderColor:s(r.borderColor,i,u.borderColor),lineWidth:l.borderWidth?l.borderWidth:s(r.borderWidth,i,u.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,n=e.getMeta(),i=n.dataset,a=n.data,r=i.custom||{},l=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),o.each(a,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},r=i.getDataset(),l=i.chart.scale,s=i.chart.options.elements.point,u=l.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:i.index,_index:e,_scale:l,_model:{x:n?l.xCenter:u.x,y:n?l.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,s.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta(); + +o.each(e.data,function(n,i){var a=n._model,r=o.splineCurve(o.previousItem(e.data,i,!0)._model,a,o.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;a.radius=n.hoverRadius?n.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,o.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,i,o.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=n.radius?n.radius:o.valueAtIndexOrDefault(e.pointRadius,i,r.radius),a.backgroundColor=n.backgroundColor?n.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,i,r.backgroundColor),a.borderColor=n.borderColor?n.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,i,r.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,i,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,n){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,o,r=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,o=r.length;a1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a=e.numSteps?(o.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(28),r=t(48);e.exports=function(t){function e(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=a.configMerge(i.global,i[t.type],t.options||{}),t}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function l(t){return"top"===t||"bottom"===t}var s=t.plugins;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var o=this;i=e(i);var l=r.acquireContext(n,i),s=l&&l.canvas,u=s&&s.height,d=s&&s.width;o.id=a.uid(),o.ctx=l,o.canvas=s,o.config=i,o.width=d,o.height=u,o.aspectRatio=u?d/u:null,o.options=i.options,o._bufferedRender=!1,o.chart=o,o.controller=o,t.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),l&&s?(o.initialize(),o.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return s.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),s.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,o=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(i))),l=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(i)));if((e.width!==r||e.height!==l)&&(i.width=e.width=r,i.height=e.height=l,i.style.width=r+"px",i.style.height=l+"px",a.retinaScale(e,n.devicePixelRatio),!t)){var u={width:r,height:l};s.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,i=e.scales={},o=[];n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&o.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(o,function(n){var o=n.options,r=a.valueOrDefault(o.type,n.dtype),s=t.scaleService.getScaleConstructor(r);if(s){l(o.position)!==l(n.dposition)&&(o.position=n.dposition);var u=new s({id:o.id,options:o,ctx:e.ctx,chart:e});i[u.id]=u,u.mergeTicksOptions(),n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),l=a.type||e.config.type;if(r.type&&r.type!==l&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=l,n.push(r.type),r.controller)r.controller.updateIndex(o);else{var s=t.controllers[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(e,o),i.push(r.controller)}},e),i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n(e),!1!==s.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var i=e.buildOrUpdateControllers();a.each(e.data.datasets,function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()},e),e.updateLayout(),a.each(i,function(t){t.reset()}),e.updateDatasets(),s.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){var e=this;!1!==s.notify(e,"beforeLayout")&&(t.layoutService.update(this,this.width,this.height),s.notify(e,"afterScaleUpdate"),s.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(!1!==s.notify(t,"beforeDatasetsUpdate")){for(var e=0,n=t.data.datasets.length;e=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);s.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};!1!==s.notify(n,"beforeDatasetDraw",[a])&&(i.controller.draw(e),s.notify(n,"afterDatasetDraw",[a]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=o.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],o=i.data;for(t=0,e=a.length;ti&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n=n[e].length&&n[e].push({}),!n[e][r].type||s.type&&s.type!==n[e][r].type?o.merge(n[e][r],[t.scaleService.getScaleDefaults(l),s]):o.merge(n[e][r],s)}else o._merger(e,n,i,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return o.each(t,function(t){e(t)&&n.push(t)}),n},o.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i=0;i--){var a=t[i];if(e(a))return a}},o.inherits=function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=o.inherits,t&&o.extend(n.prototype,t),n.__super__=e.prototype,n},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,n){return Math.abs(t-e)t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,n,i){var a=t.skip?e:t,o=e,r=n.skip?e:n,l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=l/(l+s),d=s/(l+s),c=i*(u=isNaN(u)?0:u),h=i*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,n,i,a,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),l=r.length;for(e=0;e0?r[e-1]:null,(a=e0?r[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var n=Math.floor(o.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-u-c,g=l.bottom-l.top-d-h;return n=Math.round((n-l.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-d)/g*r.height/e.currentDevicePixelRatio),{x:n,y:i}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,o=t.width;i.height=a*n,i.width=o*n,t.ctx.scale(n,n),i.style.height=a+"px",i.style.width=o+"px"}},o.fontString=function(t,e,n){return e+" "+t+"px "+n},o.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(n,function(e){void 0!==e&&null!==e&&!0!==o.isArray(e)?l=o.measureText(t,a,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,a,r,l,e))})});var s=r.length/2;if(s>n.length){for(var u=0;ui&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,n){"use strict";function i(t,e){return t.native?{x:t.x,y:t.y}:u.getRelativePosition(t,e)}function a(t,e){var n,i,a,o,r;for(i=0,o=t.data.datasets.length;i0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return s(t,e,{intersect:!0})},point:function(t,e){return o(t,i(e,t))},nearest:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var o=l(n.axis),s=r(t,a,n.intersect,o);return s.length>1&&s.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),s.slice(0,1)},x:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r},y:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r}}}},{45:45}],29:[function(t,e,n){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],o=a.length,r=0;rh&&st.maxHeight){s--;break}s++,c=u*d}t.labelRotation=s},afterCalculateTickRotation:function(){l.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){l.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},o=i(t._ticks),r=t.options,u=r.ticks,d=r.scaleLabel,c=r.gridLines,h=r.display,f=t.isHorizontal(),g=n(u),p=r.gridLines.tickMarkLength;if(a.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,a.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var v=s(d)+l.options.toPadding(d.padding).height;f?a.height+=v:a.width+=v}if(u.display&&h){var m=l.longestText(t.ctx,g.font,o,t.longestTextCache),b=l.numberOfLabelLines(o),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=m;var k=l.toRadians(t.labelRotation),w=Math.cos(k),M=Math.sin(k)*m+g.size*b+x*(b-1)+x;a.height=Math.min(t.maxHeight,a.height+M+y),t.ctx.font=g.font;var S=e(t.ctx,o[0],g.font),C=e(t.ctx,o[o.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===r.position?w*S+3:w*x+3,t.paddingRight="bottom"===r.position?w*x+3:w*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?m=0:m+=y+x,a.width=Math.min(t.maxWidth,a.width+m),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){l.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(l.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:l.noop,getPixelForValue:l.noop,getValueForPixel:l.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},_autoSkip:function(t){var e,n,i,a,o=this,r=o.isHorizontal(),s=o.options.ticks.minor,u=t.length,d=l.toRadians(o.labelRotation),c=Math.cos(d),h=o.longestLabelWidth*c,f=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),r&&(e=!1,(h+s.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((h+s.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1||l.isNullOrUndef(i.label))&&delete i.label,f.push(i);return f},draw:function(t){var e=this,i=e.options;if(i.display){var r=e.ctx,u=o.global,d=i.ticks.minor,c=i.ticks.major||d,h=i.gridLines,f=i.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),v=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),m=l.valueOrDefault(d.fontColor,u.defaultFontColor),b=n(d),x=l.valueOrDefault(c.fontColor,u.defaultFontColor),y=n(c),k=h.drawTicks?h.tickMarkLength:0,w=l.valueOrDefault(f.fontColor,u.defaultFontColor),M=n(f),S=l.options.toPadding(f.padding),C=l.toRadians(e.labelRotation),_=[],D="right"===i.position?e.left:e.right-k,I="right"===i.position?e.left+k:e.right,P="bottom"===i.position?e.top:e.bottom-k,A="bottom"===i.position?e.top+k:e.bottom;if(l.each(v,function(n,o){if(void 0!==n.label){var r,s,c,f,m=n.label;o===e.zeroLineIndex&&i.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=l.valueAtIndexOrDefault(h.lineWidth,o),s=l.valueAtIndexOrDefault(h.color,o),c=l.valueOrDefault(h.borderDash,u.borderDash),f=l.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var b,x,y,w,M,S,T,F,O,R,L="middle",z="middle",B=d.padding;if(p){var W=k+B;"bottom"===i.position?(z=g?"middle":"top",L=g?"right":"center",R=e.top+W):(z=g?"middle":"bottom",L=g?"left":"center",R=e.bottom-W);var N=a(e,o,h.offsetGridLines&&v.length>1);N1);H0)n=t.stepSize;else{var o=i.niceNum(e.max-e.min,!1);n=i.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/n)*n,l=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(r=t.min,l=t.max);var s=(l-r)/n;s=i.almostEquals(s,Math.round(s),n/1e3)?Math.round(s):Math.ceil(s),a.push(void 0!==t.min?t.min:r);for(var u=1;u3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=i.log10(Math.abs(a)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?n=o.xLabel:a>0&&o.indexi.height-e.height&&(r="bottom");var l,s,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===r?(l=function(t){return t<=h},s=function(t){return t>h}):(l=function(t){return t<=e.width/2},s=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},l(n.x)?(o="left",u(n.x)&&(o="center",r=c(n.y))):s(n.x)&&(o="right",d(n.x)&&(o="center",r=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function d(t,e,n){var i=t.x,a=t.y,o=t.caretSize,r=t.caretPadding,l=t.cornerRadius,s=n.xAlign,u=n.yAlign,d=o+r,c=l+r;return"right"===s?i-=e.width:"center"===s&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===s?i+=d:"right"===s&&(i-=d):"left"===s?i-=c:"right"===s&&(i+=c),{x:i,y:a}}t.Tooltip=a.extend({initialize:function(){this._model=l(this._options)},getTitle:function(){var t=this,e=t._options.callbacks,i=e.beforeTitle.apply(t,arguments),a=e.title.apply(t,arguments),o=e.afterTitle.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,r=[];return o.each(t,function(t){var o={before:[],lines:[],after:[]};n(o.before,a.beforeLabel.call(i,t,e)),n(o.lines,a.label.call(i,t,e)),n(o.after,a.afterLabel.call(i,t,e)),r.push(o)}),r},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),o=e.afterFooter.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},update:function(e){var n,i,a=this,c=a._options,h=a._model,f=a._model=l(c),g=a._active,p=a._data,v={xAlign:h.xAlign,yAlign:h.yAlign},m={x:h.x,y:h.y},b={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var y=[],k=[];x=t.Tooltip.positioners[c.position](g,a._eventPosition);var w=[];for(n=0,i=g.length;n0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),!(i=!o.arrayEquals(e._active,e._lastActive)))return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,o=0;for(e=0,n=t.length;es;)a-=2*Math.PI;for(;a=l&&a<=s,d=r>=n.innerRadius&&r<=n.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45),r=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this,l=a._view,s=a._chart.ctx,u=l.spanGaps,d=a._children.slice(),c=r.elements.line,h=-1;for(a._loop&&d.length&&d.push(d[0]),s.save(),s.lineCap=l.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(l.borderDash||c.borderDash),s.lineDashOffset=l.borderDashOffset||c.borderDashOffset,s.lineJoin=l.borderJoinStyle||c.borderJoinStyle,s.lineWidth=l.borderWidth||c.borderWidth,s.strokeStyle=l.borderColor||r.defaultColor,s.beginPath(),h=-1,t=0;te?1:-1,r=1,l=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,o=1,r=(a=u.base)>i?1:-1,l=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a)),h=(d=d>c?c:d)/2,f=e+("left"!==l?h*o:0),g=n+("right"!==l?-h*o:0),p=i+("top"!==l?h*r:0),v=a+("bottom"!==l?-h*r:0);f!==g&&(i=p,a=v),p!==v&&(e=f,n=g)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=d;var m=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"].indexOf(l,0);-1===b&&(b=0);var x=t(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=t(y),s.lineTo(x[0],x[1]);s.fill(),d&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=a(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){var n=this;if(!n._view)return!1;var o=a(n);return i(n)?t>=o.left&&t<=o.right:e>=o.top&&e<=o.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,n){"use strict";var i=t(42),n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,o){if(o){var r=Math.min(o,i/2),l=Math.min(o,a/2);t.moveTo(e+r,n),t.lineTo(e+i-r,n),t.quadraticCurveTo(e+i,n,e+i,n+l),t.lineTo(e+i,n+a-l),t.quadraticCurveTo(e+i,n+a,e+i-r,n+a),t.lineTo(e+r,n+a),t.quadraticCurveTo(e,n+a,e,n+a-l),t.lineTo(e,n+l),t.quadraticCurveTo(e,n,e+r,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a){var o,r,l,s,u,d;if("object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,a,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-r/2,a+u/3),t.lineTo(i+r/2,a+u/3),t.lineTo(i,a-2*u/3),t.closePath(),t.fill(); +break;case"rect":d=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-d,a-d,2*d,2*d),t.strokeRect(i-d,a-d,2*d,2*d);break;case"rectRounded":var c=n/Math.SQRT2,h=i-c,f=a-c,g=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,g,g,n/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-d,a),t.lineTo(i,a+d),t.lineTo(i+d,a),t.lineTo(i,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"crossRot":t.beginPath(),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,a),t.lineTo(i+n,a),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments),t.closePath()}},{42:42}],42:[function(t,e,n){"use strict";var i={noop:function(){},uid:function(){var t=0;return function(){return t++}}(),isNullOrUndef:function(t){return null===t||void 0===t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return i.valueOrDefault(i.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var o,r,l;if(i.isArray(t))if(r=t.length,a)for(o=r-1;o>=0;o--)e.call(n,t[o],o);else for(o=0;o=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{42:42}],44:[function(t,e,n){"use strict";var i=t(42);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,o;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=n=a=o=+t||0,{top:e,right:n,bottom:a,left:o,height:e+a,width:o+n}},resolve:function(t,e,n){var a,o,r;for(a=0,o=t.length;a
    ';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var l=function(){e._reset(),t()};return o(a,"scroll",l.bind(a,"expand")),o(r,"scroll",l.bind(r,"shrink")),e}function c(t,e){var n=(t[m]||(t[m]={})).renderProxy=function(t){t.animationName===y&&e()};v.each(k,function(e){o(t,e,n)}),t.classList.add(x)}function h(t){var e=t[m]||{},n=e.renderProxy;n&&(v.each(k,function(e){r(t,e,n)}),delete e.renderProxy),t.classList.remove(x)}function f(t,e,n){var i=t[m]||(t[m]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(l("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[m]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function p(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var v=t(45),m="$chartjs",b="chartjs-",x=b+"render-monitor",y=b+"render-animation",k=["animationstart","webkitAnimationStart"],w={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},M=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";p(this,"@-webkit-keyframes "+y+"{"+t+"}@keyframes "+y+"{"+t+"}."+x+"{-webkit-animation:"+y+" 0.001s;animation:"+y+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[m]){var n=e[m].initial;["height","width"].forEach(function(t){var i=n[t];v.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),v.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[m]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[m]||(n[m]={});o(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(s(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[m]||{}).proxies||{})[t.id+"_"+e];a&&r(i,e,a)}else g(i)}},v.addEvent=o,v.removeEvent=r},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(i=parseFloat(o,10),isFinite(i)&&Math.floor(i)===i)return"-"!==o[0]&&"+"!==o[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?o=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?o=n.scaleZero:i.getBasePosition?o=i.getBasePosition():i.getBasePixel&&(o=i.getBasePixel()),void 0!==o&&null!==o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return e=i.isHorizontal(),{x:e?o:null,y:e?null:o}}return null}function n(t,e,n){var i,a=t[e].fill,o=[e];if(!n)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;o.push(a),a=i.fill}return!1}function r(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function l(t){return t&&!t.skip}function s(t,e,n,i,a){var r;if(i&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r0;--r)o.canvas.lineTo(t,n[r],n[r-1],!0)}}function u(t,e,n,i,a,o){var r,u,d,c,h,f,g,p=e.length,v=i.spanGaps,m=[],b=[],x=0,y=0;for(t.beginPath(),r=0,u=p+!!o;r');for(var n=0;n'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("");return e.push(""),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});r.configure(e,i,n),r.addBox(e,i),e.legend=i}var r=t.layoutService,l=o.noop;return t.Legend=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:l,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:l,beforeSetDimensions:l,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:l,beforeBuildLabels:l,buildLabels:function(){var t=this,e=t.options.labels||{},n=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:l,beforeFit:l,fit:function(){var t=this,n=t.options,a=n.labels,r=n.display,l=t.ctx,s=i.global,u=o.valueOrDefault,d=u(a.fontSize,s.defaultFontSize),c=u(a.fontStyle,s.defaultFontStyle),h=u(a.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,v=t.isHorizontal();if(v?(p.width=t.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=t.maxHeight),r)if(l.font=f,v){var m=t.lineWidths=[0],b=t.legendItems.length?d+a.padding:0;l.textAlign="left",l.textBaseline="top",o.each(t.legendItems,function(n,i){var o=e(a,d)+d/2+l.measureText(n.text).width;m[m.length-1]+o+a.padding>=t.width&&(b+=d+a.padding,m[m.length]=t.left),g[i]={left:0,top:0,width:o,height:d},m[m.length-1]+=o+a.padding}),p.height+=b}else{var x=a.padding,y=t.columnWidths=[],k=a.padding,w=0,M=0,S=d+x;o.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+l.measureText(t.text).width;M+S>p.height&&(k+=w+a.padding,y.push(w),w=0,M=0),w=Math.max(w,i),M+=S,g[n]={left:0,top:0,width:i,height:d}}),k+=w,y.push(w),p.width+=k}t.width=p.width,t.height=p.height},afterFit:l,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,r=i.global,l=r.elements.line,s=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(a.fontColor,r.defaultFontColor),g=h(a.fontSize,r.defaultFontSize),p=h(a.fontStyle,r.defaultFontStyle),v=h(a.fontFamily,r.defaultFontFamily),m=o.fontString(g,p,v);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=m;var b=e(a,g),x=t.legendHitBoxes,y=function(t,e,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,l.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,l.borderDashOffset),c.lineJoin=h(i.lineJoin,l.borderJoinStyle),c.lineWidth=h(i.lineWidth,l.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var a=0===h(i.lineWidth,l.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,l.borderDash)),n.labels&&n.labels.usePointStyle){var s=g*Math.SQRT2/2,u=s/Math.SQRT2,d=t+u,f=e+u;o.canvas.drawPoint(c,i.pointStyle,s,d,f)}else a||c.strokeRect(t,e,b,g),c.fillRect(t,e,b,g);c.restore()}},k=function(t,e,n,i){var a=g/2,o=b+a+t,r=e+a;c.fillText(n.text,o,r),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(o,r),c.lineTo(o+i,r),c.stroke())},w=t.isHorizontal();d=w?{x:t.left+(s-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var M=g+a.padding;o.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,o=b+g/2+i,r=d.x,l=d.y;w?r+o>=s&&(l=d.y+=M,d.line++,r=d.x=t.left+(s-u[d.line])/2):l+M>t.bottom&&(r=d.x=r+t.columnWidths[d.line]+a.padding,l=d.y=t.top+a.padding,d.line++),y(r,l,e),x[n].left=r,x[n].top=l,k(r,l,e,i),w?d.x+=o+a.padding:d.y+=M})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var l=e.legendHitBoxes,s=0;s=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[s]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[s]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(o.mergeIf(e,i.global.legend),a?(r.configure(t,a,e),a.options=e):n(t,e)):a&&(r.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,r=o.noop;return t.Title=a.extend({initialize:function(t){var e=this;o.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:r,afterBuildLabels:r,beforeFit:r,fit:function(){var t=this,e=o.valueOrDefault,n=t.options,a=n.display,r=e(n.fontSize,i.global.defaultFontSize),l=t.minSize,s=o.isArray(n.text)?n.text.length:1,u=o.options.toLineHeight(n.lineHeight,r),d=a?s*u+2*n.padding:0;t.isHorizontal()?(l.width=t.maxWidth,l.height=d):(l.width=d,l.height=t.maxHeight),t.width=l.width,t.height=l.height},afterFit:r,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=o.valueOrDefault,a=t.options,r=i.global;if(a.display){var l,s,u,d=n(a.fontSize,r.defaultFontSize),c=n(a.fontStyle,r.defaultFontStyle),h=n(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,v=0,m=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=n(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(s=b+(y-b)/2,u=m+p,l=y-b):(s="left"===a.position?b+p:y-p,u=m+(x-m)/2,l=x-m,v=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(s,u),e.rotate(v),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var w=0,M=0;Me.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var o=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*o)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),o=n.end-i;return n.isHorizontal()?(e=n.left+n.width/o*(a-i),Math.round(e)):(e=n.bottom-n.height/o*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),o={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=a.generators.linear(o,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,o=e.chart,r=o.data.datasets,l=i.valueOrDefault,s=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(r,function(e,n){if(!u){var i=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(r,function(a,r){var l=o.getDatasetMeta(r),s=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");o.isDatasetVisible(r)&&t(l)&&(void 0===d[s]&&(d[s]=[]),i.each(a.data,function(t,i){var a=d[s],o=+e.getRightValue(t);isNaN(o)||l.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=o)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(r,function(n,a){var r=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(r)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:ie.max&&(e.max=i),0!==i&&(null===e.minNotZero||ia?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function s(t){var i,o,s,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;ic.r&&(c.r=v.end,h.r=g),m.startc.b&&(c.b=m.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var o=n.y,r=1.5*i,l=0;l270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,o=a.valueOrDefault,r=t.options,l=r.angleLines,s=r.pointLabels;i.lineWidth=l.lineWidth,i.strokeStyle=l.color;var u=t.getDistanceFromCenterForValue(r.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(l.display){var p=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(p.x,p.y),i.stroke(),i.closePath()}if(s.display){var m=t.getPointPosition(g,u+5),b=o(s.fontColor,v.defaultFontColor);i.font=f.font,i.fillStyle=b;var x=t.getIndexAngle(g),y=a.toDegrees(x);i.textAlign=d(y),h(y,t._pointLabelSizes[g],m),c(i,t.pointLabels[g]||"",m,f.size)}}}function g(t,n,i,o){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(n.color,o-1),r.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,o-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var l=e(t);if(0===l)return;r.beginPath();var s=t.getPointPosition(0,i);r.moveTo(s.x,s.y);for(var u=1;u0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,o=a.valueOrDefault;if(e.display){var r=t.ctx,l=this.getIndexAngle(0),s=o(i.fontSize,v.defaultFontSize),u=o(i.fontStyle,v.defaultFontStyle),d=o(i.fontFamily,v.defaultFontFamily),c=a.fontString(s,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=o(i.fontColor,v.defaultFontColor);if(r.font=c,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(l),i.showLabelBackdrop){var h=r.measureText(e).width;r.fillStyle=i.backdropColor,r.fillRect(-h/2-i.backdropPaddingX,-u-s/2-i.backdropPaddingY,h+2*i.backdropPaddingX,s+2*i.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=d,r.fillText(e,0,-u),r.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",b,m)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},o=[];for(e=0,n=t.length;ee&&l=0&&r<=l;){if(i=r+l>>1,a=t[i-1]||null,o=t[i],!a)return{lo:null,hi:o};if(o[e]n))return{lo:a,hi:o};l=i-1}}return{lo:o,hi:null}}function l(t,e,n,i){var a=r(t,e,n),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],l=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=l[e]-o[e],u=s?(n-o[e])/s:0,d=(l[i]-o[i])*u;return o[i]+d}function s(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?v(t,i):(t instanceof v||(t=v(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(b.isNullOrUndef(t))return null;var n=e.options.time,i=s(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,o,r,l=e-t,s=k[n],u=s.size,d=s.steps;if(!d)return Math.ceil(l/((i||1)*u));for(a=0,o=d.length;a1?e[1]:i,r=e[0],s=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2),a.time.max||(o=e[e.length-1],r=e.length>1?e[e.length-2]:n,u=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2)),{left:s,right:u}}function p(t,e){var n,i,a,o,r=[];for(n=0,i=t.length;n=a&&n<=r&&y.push(n);return i.min=a,i.max=r,i._unit=m,i._majorUnit=b,i._minorFormat=d[m],i._majorFormat=d[b],i._table=o(i._timestamps.data,a,r,l.distribution),i._offsets=g(i._table,y,a,r,l),p(y,b)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,o=i.labels&&t=0&&t", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; + + function findMatchingBracket(cm, where, config) { + var line = cm.getLineHandle(where.line), pos = where.ch - 1; + var afterCursor = config && config.afterCursor + if (afterCursor == null) + afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className) + + // A cursor is defined as between two characters, but in in vim command mode + // (i.e. not insert mode), the cursor is visually represented as a + // highlighted box on top of the 2nd character. Otherwise, we allow matches + // from before or after the cursor. + var match = (!afterCursor && pos >= 0 && matching[line.text.charAt(pos)]) || + matching[line.text.charAt(++pos)]; + if (!match) return null; + var dir = match.charAt(1) == ">" ? 1 : -1; + if (config && config.strict && (dir > 0) != (pos == where.ch)) return null; + var style = cm.getTokenTypeAt(Pos(where.line, pos + 1)); + + var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config); + if (found == null) return null; + return {from: Pos(where.line, pos), to: found && found.pos, + match: found && found.ch == match.charAt(0), forward: dir > 0}; + } + + // bracketRegex is used to specify which type of bracket to scan + // should be a regexp, e.g. /[[\]]/ + // + // Note: If "where" is on an open bracket, then this bracket is ignored. + // + // Returns false when no bracket was found, null when it reached + // maxScanLines and gave up + function scanForBracket(cm, where, dir, style, config) { + var maxScanLen = (config && config.maxScanLineLength) || 10000; + var maxScanLines = (config && config.maxScanLines) || 1000; + + var stack = []; + var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\]]/; + var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) + : Math.max(cm.firstLine() - 1, where.line - maxScanLines); + for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) { + var line = cm.getLine(lineNo); + if (!line) continue; + var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1; + if (line.length > maxScanLen) continue; + if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0); + for (; pos != end; pos += dir) { + var ch = line.charAt(pos); + if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) { + var match = matching[ch]; + if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch); + else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch}; + else stack.pop(); + } + } + } + return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null; + } + + function matchBrackets(cm, autoclear, config) { + // Disable brace matching in long lines, since it'll cause hugely slow updates + var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000; + var marks = [], ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config); + if (match && cm.getLine(match.from.line).length <= maxHighlightLen) { + var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style})); + if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) + marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style})); + } + } + + if (marks.length) { + // Kludge to work around the IE bug from issue #1193, where text + // input stops going to the textare whever this fires. + if (ie_lt8 && cm.state.focused) cm.focus(); + + var clear = function() { + cm.operation(function() { + for (var i = 0; i < marks.length; i++) marks[i].clear(); + }); + }; + if (autoclear) setTimeout(clear, 800); + else return clear; + } + } + + var currentlyHighlighted = null; + function doMatchBrackets(cm) { + cm.operation(function() { + if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;} + currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets); + }); + } + + CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) { + if (old && old != CodeMirror.Init) { + cm.off("cursorActivity", doMatchBrackets); + if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;} + } + if (val) { + cm.state.matchBrackets = typeof val == "object" ? val : {}; + cm.on("cursorActivity", doMatchBrackets); + } + }); + + CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);}); + CodeMirror.defineExtension("findMatchingBracket", function(pos, config, oldConfig){ + // Backwards-compatibility kludge + if (oldConfig || typeof config == "boolean") { + if (!oldConfig) { + config = config ? {strict: true} : null + } else { + oldConfig.strict = config + config = oldConfig + } + } + return findMatchingBracket(this, pos, config) + }); + CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){ + return scanForBracket(this, pos, dir, style, config); + }); +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/brace-fold.js b/covhtmlreport/vendor/codemirror/addon/fold/brace-fold.js new file mode 100644 index 000000000..13c0f0cd8 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/brace-fold.js @@ -0,0 +1,105 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.registerHelper("fold", "brace", function(cm, start) { + var line = start.line, lineText = cm.getLine(line); + var tokenType; + + function findOpening(openCh) { + for (var at = start.ch, pass = 0;;) { + var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1); + if (found == -1) { + if (pass == 1) break; + pass = 1; + at = lineText.length; + continue; + } + if (pass == 1 && found < start.ch) break; + tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)); + if (!/^(comment|string)/.test(tokenType)) return found + 1; + at = found - 1; + } + } + + var startToken = "{", endToken = "}", startCh = findOpening("{"); + if (startCh == null) { + startToken = "[", endToken = "]"; + startCh = findOpening("["); + } + + if (startCh == null) return; + var count = 1, lastLine = cm.lastLine(), end, endCh; + outer: for (var i = line; i <= lastLine; ++i) { + var text = cm.getLine(i), pos = i == line ? startCh : 0; + for (;;) { + var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos); + if (nextOpen < 0) nextOpen = text.length; + if (nextClose < 0) nextClose = text.length; + pos = Math.min(nextOpen, nextClose); + if (pos == text.length) break; + if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) { + if (pos == nextOpen) ++count; + else if (!--count) { end = i; endCh = pos; break outer; } + } + ++pos; + } + } + if (end == null || line == end && endCh == startCh) return; + return {from: CodeMirror.Pos(line, startCh), + to: CodeMirror.Pos(end, endCh)}; +}); + +CodeMirror.registerHelper("fold", "import", function(cm, start) { + function hasImport(line) { + if (line < cm.firstLine() || line > cm.lastLine()) return null; + var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); + if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); + if (start.type != "keyword" || start.string != "import") return null; + // Now find closing semicolon, return its position + for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) { + var text = cm.getLine(i), semi = text.indexOf(";"); + if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)}; + } + } + + var startLine = start.line, has = hasImport(startLine), prev; + if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1)) + return null; + for (var end = has.end;;) { + var next = hasImport(end.line + 1); + if (next == null) break; + end = next.end; + } + return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end}; +}); + +CodeMirror.registerHelper("fold", "include", function(cm, start) { + function hasInclude(line) { + if (line < cm.firstLine() || line > cm.lastLine()) return null; + var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); + if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); + if (start.type == "meta" && start.string.slice(0, 8) == "#include") return start.start + 8; + } + + var startLine = start.line, has = hasInclude(startLine); + if (has == null || hasInclude(startLine - 1) != null) return null; + for (var end = startLine;;) { + var next = hasInclude(end + 1); + if (next == null) break; + ++end; + } + return {from: CodeMirror.Pos(startLine, has + 1), + to: cm.clipPos(CodeMirror.Pos(end))}; +}); + +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/comment-fold.js b/covhtmlreport/vendor/codemirror/addon/fold/comment-fold.js new file mode 100644 index 000000000..e8d800eb5 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/comment-fold.js @@ -0,0 +1,59 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.registerGlobalHelper("fold", "comment", function(mode) { + return mode.blockCommentStart && mode.blockCommentEnd; +}, function(cm, start) { + var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd; + if (!startToken || !endToken) return; + var line = start.line, lineText = cm.getLine(line); + + var startCh; + for (var at = start.ch, pass = 0;;) { + var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1); + if (found == -1) { + if (pass == 1) return; + pass = 1; + at = lineText.length; + continue; + } + if (pass == 1 && found < start.ch) return; + if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1))) && + (found == 0 || lineText.slice(found - endToken.length, found) == endToken || + !/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found))))) { + startCh = found + startToken.length; + break; + } + at = found - 1; + } + + var depth = 1, lastLine = cm.lastLine(), end, endCh; + outer: for (var i = line; i <= lastLine; ++i) { + var text = cm.getLine(i), pos = i == line ? startCh : 0; + for (;;) { + var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos); + if (nextOpen < 0) nextOpen = text.length; + if (nextClose < 0) nextClose = text.length; + pos = Math.min(nextOpen, nextClose); + if (pos == text.length) break; + if (pos == nextOpen) ++depth; + else if (!--depth) { end = i; endCh = pos; break outer; } + ++pos; + } + } + if (end == null || line == end && endCh == startCh) return; + return {from: CodeMirror.Pos(line, startCh), + to: CodeMirror.Pos(end, endCh)}; +}); + +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/foldcode.js b/covhtmlreport/vendor/codemirror/addon/fold/foldcode.js new file mode 100644 index 000000000..87a5cb50a --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/foldcode.js @@ -0,0 +1,154 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function doFold(cm, pos, options, force) { + if (options && options.call) { + var finder = options; + options = null; + } else { + var finder = getOption(cm, options, "rangeFinder"); + } + if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0); + var minSize = getOption(cm, options, "minFoldSize"); + + function getRange(allowFolded) { + var range = finder(cm, pos); + if (!range || range.to.line - range.from.line < minSize) return null; + var marks = cm.findMarksAt(range.from); + for (var i = 0; i < marks.length; ++i) { + if (marks[i].__isFold && force !== "fold") { + if (!allowFolded) return null; + range.cleared = true; + marks[i].clear(); + } + } + return range; + } + + var range = getRange(true); + if (getOption(cm, options, "scanUp")) while (!range && pos.line > cm.firstLine()) { + pos = CodeMirror.Pos(pos.line - 1, 0); + range = getRange(false); + } + if (!range || range.cleared || force === "unfold") return; + + var myWidget = makeWidget(cm, options); + CodeMirror.on(myWidget, "mousedown", function(e) { + myRange.clear(); + CodeMirror.e_preventDefault(e); + }); + var myRange = cm.markText(range.from, range.to, { + replacedWith: myWidget, + clearOnEnter: getOption(cm, options, "clearOnEnter"), + __isFold: true + }); + myRange.on("clear", function(from, to) { + CodeMirror.signal(cm, "unfold", cm, from, to); + }); + CodeMirror.signal(cm, "fold", cm, range.from, range.to); + } + + function makeWidget(cm, options) { + var widget = getOption(cm, options, "widget"); + if (typeof widget == "string") { + var text = document.createTextNode(widget); + widget = document.createElement("span"); + widget.appendChild(text); + widget.className = "CodeMirror-foldmarker"; + } else if (widget) { + widget = widget.cloneNode(true) + } + return widget; + } + + // Clumsy backwards-compatible interface + CodeMirror.newFoldFunction = function(rangeFinder, widget) { + return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); }; + }; + + // New-style interface + CodeMirror.defineExtension("foldCode", function(pos, options, force) { + doFold(this, pos, options, force); + }); + + CodeMirror.defineExtension("isFolded", function(pos) { + var marks = this.findMarksAt(pos); + for (var i = 0; i < marks.length; ++i) + if (marks[i].__isFold) return true; + }); + + CodeMirror.commands.toggleFold = function(cm) { + cm.foldCode(cm.getCursor()); + }; + CodeMirror.commands.fold = function(cm) { + cm.foldCode(cm.getCursor(), null, "fold"); + }; + CodeMirror.commands.unfold = function(cm) { + cm.foldCode(cm.getCursor(), null, "unfold"); + }; + CodeMirror.commands.foldAll = function(cm) { + cm.operation(function() { + for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) + cm.foldCode(CodeMirror.Pos(i, 0), null, "fold"); + }); + }; + CodeMirror.commands.unfoldAll = function(cm) { + cm.operation(function() { + for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) + cm.foldCode(CodeMirror.Pos(i, 0), null, "unfold"); + }); + }; + + CodeMirror.registerHelper("fold", "combine", function() { + var funcs = Array.prototype.slice.call(arguments, 0); + return function(cm, start) { + for (var i = 0; i < funcs.length; ++i) { + // if (funcs[i]) { + var found = funcs[i](cm, start); + if (found) return found; + // } + } + }; + }); + + CodeMirror.registerHelper("fold", "auto", function(cm, start) { + var helpers = cm.getHelpers(start, "fold"); + for (var i = 0; i < helpers.length; i++) { + var cur = helpers[i](cm, start); + if (cur) return cur; + } + }); + + var defaultOptions = { + rangeFinder: CodeMirror.fold.auto, + widget: "\u2194", + minFoldSize: 0, + scanUp: false, + clearOnEnter: true + }; + + CodeMirror.defineOption("foldOptions", null); + + function getOption(cm, options, name) { + if (options && options[name] !== undefined) + return options[name]; + var editorOptions = cm.options.foldOptions; + if (editorOptions && editorOptions[name] !== undefined) + return editorOptions[name]; + return defaultOptions[name]; + } + + CodeMirror.defineExtension("foldOption", function(options, name) { + return getOption(this, options, name); + }); +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.css b/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.css new file mode 100644 index 000000000..ad19ae2d3 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.css @@ -0,0 +1,20 @@ +.CodeMirror-foldmarker { + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; +} +.CodeMirror-foldgutter { + width: .7em; +} +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded { + cursor: pointer; +} +.CodeMirror-foldgutter-open:after { + content: "\25BE"; +} +.CodeMirror-foldgutter-folded:after { + content: "\25B8"; +} diff --git a/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.js b/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.js new file mode 100644 index 000000000..9d3232656 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/foldgutter.js @@ -0,0 +1,146 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("./foldcode")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "./foldcode"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineOption("foldGutter", false, function(cm, val, old) { + if (old && old != CodeMirror.Init) { + cm.clearGutter(cm.state.foldGutter.options.gutter); + cm.state.foldGutter = null; + cm.off("gutterClick", onGutterClick); + cm.off("change", onChange); + cm.off("viewportChange", onViewportChange); + cm.off("fold", onFold); + cm.off("unfold", onFold); + cm.off("swapDoc", onChange); + } + if (val) { + cm.state.foldGutter = new State(parseOptions(val)); + updateInViewport(cm); + cm.on("gutterClick", onGutterClick); + cm.on("change", onChange); + cm.on("viewportChange", onViewportChange); + cm.on("fold", onFold); + cm.on("unfold", onFold); + cm.on("swapDoc", onChange); + } + }); + + var Pos = CodeMirror.Pos; + + function State(options) { + this.options = options; + this.from = this.to = 0; + } + + function parseOptions(opts) { + if (opts === true) opts = {}; + if (opts.gutter == null) opts.gutter = "CodeMirror-foldgutter"; + if (opts.indicatorOpen == null) opts.indicatorOpen = "CodeMirror-foldgutter-open"; + if (opts.indicatorFolded == null) opts.indicatorFolded = "CodeMirror-foldgutter-folded"; + return opts; + } + + function isFolded(cm, line) { + var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0)); + for (var i = 0; i < marks.length; ++i) + if (marks[i].__isFold && marks[i].find().from.line == line) return marks[i]; + } + + function marker(spec) { + if (typeof spec == "string") { + var elt = document.createElement("div"); + elt.className = spec + " CodeMirror-guttermarker-subtle"; + return elt; + } else { + return spec.cloneNode(true); + } + } + + function updateFoldInfo(cm, from, to) { + var opts = cm.state.foldGutter.options, cur = from; + var minSize = cm.foldOption(opts, "minFoldSize"); + var func = cm.foldOption(opts, "rangeFinder"); + cm.eachLine(from, to, function(line) { + var mark = null; + if (isFolded(cm, cur)) { + mark = marker(opts.indicatorFolded); + } else { + var pos = Pos(cur, 0); + var range = func && func(cm, pos); + if (range && range.to.line - range.from.line >= minSize) + mark = marker(opts.indicatorOpen); + } + cm.setGutterMarker(line, opts.gutter, mark); + ++cur; + }); + } + + function updateInViewport(cm) { + var vp = cm.getViewport(), state = cm.state.foldGutter; + if (!state) return; + cm.operation(function() { + updateFoldInfo(cm, vp.from, vp.to); + }); + state.from = vp.from; state.to = vp.to; + } + + function onGutterClick(cm, line, gutter) { + var state = cm.state.foldGutter; + if (!state) return; + var opts = state.options; + if (gutter != opts.gutter) return; + var folded = isFolded(cm, line); + if (folded) folded.clear(); + else cm.foldCode(Pos(line, 0), opts.rangeFinder); + } + + function onChange(cm) { + var state = cm.state.foldGutter; + if (!state) return; + var opts = state.options; + state.from = state.to = 0; + clearTimeout(state.changeUpdate); + state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600); + } + + function onViewportChange(cm) { + var state = cm.state.foldGutter; + if (!state) return; + var opts = state.options; + clearTimeout(state.changeUpdate); + state.changeUpdate = setTimeout(function() { + var vp = cm.getViewport(); + if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) { + updateInViewport(cm); + } else { + cm.operation(function() { + if (vp.from < state.from) { + updateFoldInfo(cm, vp.from, state.from); + state.from = vp.from; + } + if (vp.to > state.to) { + updateFoldInfo(cm, state.to, vp.to); + state.to = vp.to; + } + }); + } + }, opts.updateViewportTimeSpan || 400); + } + + function onFold(cm, from) { + var state = cm.state.foldGutter; + if (!state) return; + var line = from.line; + if (line >= state.from && line < state.to) + updateFoldInfo(cm, line, line + 1); + } +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/hdl-fold.js b/covhtmlreport/vendor/codemirror/addon/fold/hdl-fold.js new file mode 100644 index 000000000..69e1d1bb5 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/hdl-fold.js @@ -0,0 +1,190 @@ +(function(mod) { + if (typeof exports == 'object' && typeof module == 'object') // CommonJS + mod(require('../../lib/codemirror')); + else if (typeof define == 'function' && define.amd) // AMD + define(['../../lib/codemirror'], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + 'use strict'; + + CodeMirror.registerHelper('fold', 'hdl', function(cm, start) { + var line = start.line, lineText = cm.getLine(line); + var tokenType; + + function findOpening(openCh) { + for (var at = start.ch, pass = 0;;) { + var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1); + if (found == -1) { + if (pass == 1) break; + pass = 1; + at = lineText.length; + continue; + } + if (pass == 1 && found < start.ch) break; + tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)); + if (!/^(comment|string)/.test(tokenType)) return found + 1; + at = found - 1; + } + } + + function toggleCase(s) { + if (65 <= s[0] <= 90) { // String is uppercase + } + else if (97 <= s[0] <= 122) { // String is lowercase + for (var i = 0; i cm.lastLine()) return null; + var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); + if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); + if (start.type != 'keyword' || start.string != 'import') return null; + // Now find closing semicolon, return its position + for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) { + var text = cm.getLine(i), semi = text.indexOf(';'); + if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)}; + } + } + + var startLine = start.line, has = hasImport(startLine), prev; + if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1)) + return null; + for (var end = has.end;;) { + var next = hasImport(end.line + 1); + if (next == null) break; + end = next.end; + } + return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end}; + }); + + CodeMirror.registerHelper('fold', 'include', function(cm, start) { + function hasInclude(line) { + if (line < cm.firstLine() || line > cm.lastLine()) return null; + var start = cm.getTokenAt(CodeMirror.Pos(line, 1)); + if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1)); + if (start.type == 'meta' && start.string.slice(0, 8) == '#include') return start.start + 8; + } + + var startLine = start.line, has = hasInclude(startLine); + if (has == null || hasInclude(startLine - 1) != null) return null; + for (var end = startLine;;) { + var next = hasInclude(end + 1); + if (next == null) break; + ++end; + } + return {from: CodeMirror.Pos(startLine, has + 1), + to: cm.clipPos(CodeMirror.Pos(end))}; + }); + +}); diff --git a/covhtmlreport/vendor/codemirror/addon/fold/indent-fold.js b/covhtmlreport/vendor/codemirror/addon/fold/indent-fold.js new file mode 100644 index 000000000..f93edec22 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/fold/indent-fold.js @@ -0,0 +1,48 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function lineIndent(cm, lineNo) { + var text = cm.getLine(lineNo) + var spaceTo = text.search(/\S/) + if (spaceTo == -1 || /\bcomment\b/.test(cm.getTokenTypeAt(CodeMirror.Pos(lineNo, spaceTo + 1)))) + return -1 + return CodeMirror.countColumn(text, null, cm.getOption("tabSize")) +} + +CodeMirror.registerHelper("fold", "indent", function(cm, start) { + var myIndent = lineIndent(cm, start.line) + if (myIndent < 0) return + var lastLineInFold = null + + // Go through lines until we find a line that definitely doesn't belong in + // the block we're folding, or to the end. + for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) { + var indent = lineIndent(cm, i) + if (indent == -1) { + } else if (indent > myIndent) { + // Lines with a greater indent are considered part of the block. + lastLineInFold = i; + } else { + // If this line has non-space, non-comment content, and is + // indented less or equal to the start line, it is the start of + // another block. + break; + } + } + if (lastLineInFold) return { + from: CodeMirror.Pos(start.line, cm.getLine(start.line).length), + to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length) + }; +}); + +}); diff --git a/covhtmlreport/vendor/codemirror/addon/search/jump-to-line.js b/covhtmlreport/vendor/codemirror/addon/search/jump-to-line.js new file mode 100644 index 000000000..8b599cbc1 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/search/jump-to-line.js @@ -0,0 +1,49 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Defines jumpToLine command. Uses dialog.js if present. + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../dialog/dialog")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../dialog/dialog"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function dialog(cm, text, shortText, deflt, f) { + if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true}); + else f(prompt(shortText, deflt)); + } + + var jumpDialog = + 'Jump to line: (Use line:column or scroll% syntax)'; + + function interpretLine(cm, string) { + var num = Number(string) + if (/^[-+]/.test(string)) return cm.getCursor().line + num + else return num - 1 + } + + CodeMirror.commands.jumpToLine = function(cm) { + var cur = cm.getCursor(); + dialog(cm, jumpDialog, "Jump to line:", (cur.line + 1) + ":" + cur.ch, function(posStr) { + if (!posStr) return; + + var match; + if (match = /^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(posStr)) { + cm.setCursor(interpretLine(cm, match[1]), Number(match[2])) + } else if (match = /^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(posStr)) { + var line = Math.round(cm.lineCount() * Number(match[1]) / 100); + if (/^[-+]/.test(match[1])) line = cur.line + line + 1; + cm.setCursor(line - 1, cur.ch); + } else if (match = /^\s*\:?\s*([\+\-]?\d+)\s*/.exec(posStr)) { + cm.setCursor(interpretLine(cm, match[1]), cur.ch); + } + }); + }; + + CodeMirror.keyMap["default"]["Alt-G"] = "jumpToLine"; +}); diff --git a/covhtmlreport/vendor/codemirror/addon/search/search.js b/covhtmlreport/vendor/codemirror/addon/search/search.js new file mode 100644 index 000000000..4059ccdd0 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/search/search.js @@ -0,0 +1,252 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Define search commands. Depends on dialog.js or another +// implementation of the openDialog method. + +// Replace works a little oddly -- it will do the replace on the next +// Ctrl-G (or whatever is bound to findNext) press. You prevent a +// replace by making sure the match is no longer selected when hitting +// Ctrl-G. + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("./searchcursor"), require("../dialog/dialog")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "./searchcursor", "../dialog/dialog"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function searchOverlay(query, caseInsensitive) { + if (typeof query == "string") + query = new RegExp(query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), caseInsensitive ? "gi" : "g"); + else if (!query.global) + query = new RegExp(query.source, query.ignoreCase ? "gi" : "g"); + + return {token: function(stream) { + query.lastIndex = stream.pos; + var match = query.exec(stream.string); + if (match && match.index == stream.pos) { + stream.pos += match[0].length || 1; + return "searching"; + } else if (match) { + stream.pos = match.index; + } else { + stream.skipToEnd(); + } + }}; + } + + function SearchState() { + this.posFrom = this.posTo = this.lastQuery = this.query = null; + this.overlay = null; + } + + function getSearchState(cm) { + return cm.state.search || (cm.state.search = new SearchState()); + } + + function queryCaseInsensitive(query) { + return typeof query == "string" && query == query.toLowerCase(); + } + + function getSearchCursor(cm, query, pos) { + // Heuristic: if the query string is all lowercase, do a case insensitive search. + return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true}); + } + + function persistentDialog(cm, text, deflt, onEnter, onKeyDown) { + cm.openDialog(text, onEnter, { + value: deflt, + selectValueOnOpen: true, + closeOnEnter: false, + onClose: function() { clearSearch(cm); }, + onKeyDown: onKeyDown + }); + } + + function dialog(cm, text, shortText, deflt, f) { + if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true}); + else f(prompt(shortText, deflt)); + } + + function confirmDialog(cm, text, shortText, fs) { + if (cm.openConfirm) cm.openConfirm(text, fs); + else if (confirm(shortText)) fs[0](); + } + + function parseString(string) { + return string.replace(/\\(.)/g, function(_, ch) { + if (ch == "n") return "\n" + if (ch == "r") return "\r" + return ch + }) + } + + function parseQuery(query) { + var isRE = query.match(/^\/(.*)\/([a-z]*)$/); + if (isRE) { + try { query = new RegExp(isRE[1], isRE[2].indexOf("i") == -1 ? "" : "i"); } + catch(e) {} // Not a regular expression after all, do a string search + } else { + query = parseString(query) + } + if (typeof query == "string" ? query == "" : query.test("")) + query = /x^/; + return query; + } + + var queryDialog = + 'Search: (Use /re/ syntax for regexp search)'; + + function startSearch(cm, state, query) { + state.queryText = query; + state.query = parseQuery(query); + cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); + state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); + cm.addOverlay(state.overlay); + if (cm.showMatchesOnScrollbar) { + if (state.annotate) { state.annotate.clear(); state.annotate = null; } + state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query)); + } + } + + function doSearch(cm, rev, persistent, immediate) { + var state = getSearchState(cm); + if (state.query) return findNext(cm, rev); + var q = cm.getSelection() || state.lastQuery; + if (q instanceof RegExp && q.source == "x^") q = null + if (persistent && cm.openDialog) { + var hiding = null + var searchNext = function(query, event) { + CodeMirror.e_stop(event); + if (!query) return; + if (query != state.queryText) { + startSearch(cm, state, query); + state.posFrom = state.posTo = cm.getCursor(); + } + if (hiding) hiding.style.opacity = 1 + findNext(cm, event.shiftKey, function(_, to) { + var dialog + if (to.line < 3 && document.querySelector && + (dialog = cm.display.wrapper.querySelector(".CodeMirror-dialog")) && + dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, "window").top) + (hiding = dialog).style.opacity = .4 + }) + }; + persistentDialog(cm, queryDialog, q, searchNext, function(event, query) { + var keyName = CodeMirror.keyName(event) + var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption("keyMap")][keyName] + if (cmd == "findNext" || cmd == "findPrev" || + cmd == "findPersistentNext" || cmd == "findPersistentPrev") { + CodeMirror.e_stop(event); + startSearch(cm, getSearchState(cm), query); + cm.execCommand(cmd); + } else if (cmd == "find" || cmd == "findPersistent") { + CodeMirror.e_stop(event); + searchNext(query, event); + } + }); + if (immediate && q) { + startSearch(cm, state, q); + findNext(cm, rev); + } + } else { + dialog(cm, queryDialog, "Search for:", q, function(query) { + if (query && !state.query) cm.operation(function() { + startSearch(cm, state, query); + state.posFrom = state.posTo = cm.getCursor(); + findNext(cm, rev); + }); + }); + } + } + + function findNext(cm, rev, callback) {cm.operation(function() { + var state = getSearchState(cm); + var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo); + if (!cursor.find(rev)) { + cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0)); + if (!cursor.find(rev)) return; + } + cm.setSelection(cursor.from(), cursor.to()); + cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20); + state.posFrom = cursor.from(); state.posTo = cursor.to(); + if (callback) callback(cursor.from(), cursor.to()) + });} + + function clearSearch(cm) {cm.operation(function() { + var state = getSearchState(cm); + state.lastQuery = state.query; + if (!state.query) return; + state.query = state.queryText = null; + cm.removeOverlay(state.overlay); + if (state.annotate) { state.annotate.clear(); state.annotate = null; } + });} + + var replaceQueryDialog = + ' (Use /re/ syntax for regexp search)'; + var replacementQueryDialog = 'With: '; + var doReplaceConfirm = 'Replace? '; + + function replaceAll(cm, query, text) { + cm.operation(function() { + for (var cursor = getSearchCursor(cm, query); cursor.findNext();) { + if (typeof query != "string") { + var match = cm.getRange(cursor.from(), cursor.to()).match(query); + cursor.replace(text.replace(/\$(\d)/g, function(_, i) {return match[i];})); + } else cursor.replace(text); + } + }); + } + + function replace(cm, all) { + if (cm.getOption("readOnly")) return; + var query = cm.getSelection() || getSearchState(cm).lastQuery; + var dialogText = '' + (all ? 'Replace all:' : 'Replace:') + ''; + dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) { + if (!query) return; + query = parseQuery(query); + dialog(cm, replacementQueryDialog, "Replace with:", "", function(text) { + text = parseString(text) + if (all) { + replaceAll(cm, query, text) + } else { + clearSearch(cm); + var cursor = getSearchCursor(cm, query, cm.getCursor("from")); + var advance = function() { + var start = cursor.from(), match; + if (!(match = cursor.findNext())) { + cursor = getSearchCursor(cm, query); + if (!(match = cursor.findNext()) || + (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return; + } + cm.setSelection(cursor.from(), cursor.to()); + cm.scrollIntoView({from: cursor.from(), to: cursor.to()}); + confirmDialog(cm, doReplaceConfirm, "Replace?", + [function() {doReplace(match);}, advance, + function() {replaceAll(cm, query, text)}]); + }; + var doReplace = function(match) { + cursor.replace(typeof query == "string" ? text : + text.replace(/\$(\d)/g, function(_, i) {return match[i];})); + advance(); + }; + advance(); + } + }); + }); + } + + CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);}; + CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);}; + CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);}; + CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);}; + CodeMirror.commands.findNext = doSearch; + CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);}; + CodeMirror.commands.clearSearch = clearSearch; + CodeMirror.commands.replace = replace; + CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);}; +}); diff --git a/covhtmlreport/vendor/codemirror/addon/search/searchcursor.js b/covhtmlreport/vendor/codemirror/addon/search/searchcursor.js new file mode 100644 index 000000000..58bc47c2c --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/search/searchcursor.js @@ -0,0 +1,289 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod) + else // Plain browser env + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" + var Pos = CodeMirror.Pos + + function regexpFlags(regexp) { + var flags = regexp.flags + return flags != null ? flags : (regexp.ignoreCase ? "i" : "") + + (regexp.global ? "g" : "") + + (regexp.multiline ? "m" : "") + } + + function ensureGlobal(regexp) { + return regexp.global ? regexp : new RegExp(regexp.source, regexpFlags(regexp) + "g") + } + + function maybeMultiline(regexp) { + return /\\s|\\n|\n|\\W|\\D|\[\^/.test(regexp.source) + } + + function searchRegexpForward(doc, regexp, start) { + regexp = ensureGlobal(regexp) + for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) { + regexp.lastIndex = ch + var string = doc.getLine(line), match = regexp.exec(string) + if (match) + return {from: Pos(line, match.index), + to: Pos(line, match.index + match[0].length), + match: match} + } + } + + function searchRegexpForwardMultiline(doc, regexp, start) { + if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start) + + regexp = ensureGlobal(regexp) + var string, chunk = 1 + for (var line = start.line, last = doc.lastLine(); line <= last;) { + // This grows the search buffer in exponentially-sized chunks + // between matches, so that nearby matches are fast and don't + // require concatenating the whole document (in case we're + // searching for something that has tons of matches), but at the + // same time, the amount of retries is limited. + for (var i = 0; i < chunk; i++) { + var curLine = doc.getLine(line++) + string = string == null ? curLine : string + "\n" + curLine + } + chunk = chunk * 2 + regexp.lastIndex = start.ch + var match = regexp.exec(string) + if (match) { + var before = string.slice(0, match.index).split("\n"), inside = match[0].split("\n") + var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length + return {from: Pos(startLine, startCh), + to: Pos(startLine + inside.length - 1, + inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length), + match: match} + } + } + } + + function lastMatchIn(string, regexp) { + var cutOff = 0, match + for (;;) { + regexp.lastIndex = cutOff + var newMatch = regexp.exec(string) + if (!newMatch) return match + match = newMatch + cutOff = match.index + (match[0].length || 1) + if (cutOff == string.length) return match + } + } + + function searchRegexpBackward(doc, regexp, start) { + regexp = ensureGlobal(regexp) + for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) { + var string = doc.getLine(line) + if (ch > -1) string = string.slice(0, ch) + var match = lastMatchIn(string, regexp) + if (match) + return {from: Pos(line, match.index), + to: Pos(line, match.index + match[0].length), + match: match} + } + } + + function searchRegexpBackwardMultiline(doc, regexp, start) { + regexp = ensureGlobal(regexp) + var string, chunk = 1 + for (var line = start.line, first = doc.firstLine(); line >= first;) { + for (var i = 0; i < chunk; i++) { + var curLine = doc.getLine(line--) + string = string == null ? curLine.slice(0, start.ch) : curLine + "\n" + string + } + chunk *= 2 + + var match = lastMatchIn(string, regexp) + if (match) { + var before = string.slice(0, match.index).split("\n"), inside = match[0].split("\n") + var startLine = line + before.length, startCh = before[before.length - 1].length + return {from: Pos(startLine, startCh), + to: Pos(startLine + inside.length - 1, + inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length), + match: match} + } + } + } + + var doFold, noFold + if (String.prototype.normalize) { + doFold = function(str) { return str.normalize("NFD").toLowerCase() } + noFold = function(str) { return str.normalize("NFD") } + } else { + doFold = function(str) { return str.toLowerCase() } + noFold = function(str) { return str } + } + + // Maps a position in a case-folded line back to a position in the original line + // (compensating for codepoints increasing in number during folding) + function adjustPos(orig, folded, pos, foldFunc) { + if (orig.length == folded.length) return pos + for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) { + if (min == max) return min + var mid = (min + max) >> 1 + var len = foldFunc(orig.slice(0, mid)).length + if (len == pos) return mid + else if (len > pos) max = mid + else min = mid + 1 + } + } + + function searchStringForward(doc, query, start, caseFold) { + // Empty string would match anything and never progress, so we + // define it to match nothing instead. + if (!query.length) return null + var fold = caseFold ? doFold : noFold + var lines = fold(query).split(/\r|\n\r?/) + + search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) { + var orig = doc.getLine(line).slice(ch), string = fold(orig) + if (lines.length == 1) { + var found = string.indexOf(lines[0]) + if (found == -1) continue search + var start = adjustPos(orig, string, found, fold) + ch + return {from: Pos(line, adjustPos(orig, string, found, fold) + ch), + to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)} + } else { + var cutFrom = string.length - lines[0].length + if (string.slice(cutFrom) != lines[0]) continue search + for (var i = 1; i < lines.length - 1; i++) + if (fold(doc.getLine(line + i)) != lines[i]) continue search + var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1] + if (endString.slice(0, lastLine.length) != lastLine) continue search + return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch), + to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))} + } + } + } + + function searchStringBackward(doc, query, start, caseFold) { + if (!query.length) return null + var fold = caseFold ? doFold : noFold + var lines = fold(query).split(/\r|\n\r?/) + + search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) { + var orig = doc.getLine(line) + if (ch > -1) orig = orig.slice(0, ch) + var string = fold(orig) + if (lines.length == 1) { + var found = string.lastIndexOf(lines[0]) + if (found == -1) continue search + return {from: Pos(line, adjustPos(orig, string, found, fold)), + to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))} + } else { + var lastLine = lines[lines.length - 1] + if (string.slice(0, lastLine.length) != lastLine) continue search + for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++) + if (fold(doc.getLine(start + i)) != lines[i]) continue search + var top = doc.getLine(line + 1 - lines.length), topString = fold(top) + if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search + return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)), + to: Pos(line, adjustPos(orig, string, lastLine.length, fold))} + } + } + } + + function SearchCursor(doc, query, pos, options) { + this.atOccurrence = false + this.doc = doc + pos = pos ? doc.clipPos(pos) : Pos(0, 0) + this.pos = {from: pos, to: pos} + + var caseFold + if (typeof options == "object") { + caseFold = options.caseFold + } else { // Backwards compat for when caseFold was the 4th argument + caseFold = options + options = null + } + + if (typeof query == "string") { + if (caseFold == null) caseFold = false + this.matches = function(reverse, pos) { + return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold) + } + } else { + query = ensureGlobal(query) + if (!options || options.multiline !== false) + this.matches = function(reverse, pos) { + return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos) + } + else + this.matches = function(reverse, pos) { + return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos) + } + } + } + + SearchCursor.prototype = { + findNext: function() {return this.find(false)}, + findPrevious: function() {return this.find(true)}, + + find: function(reverse) { + var result = this.matches(reverse, this.doc.clipPos(reverse ? this.pos.from : this.pos.to)) + + // Implements weird auto-growing behavior on null-matches for + // backwards-compatiblity with the vim code (unfortunately) + while (result && CodeMirror.cmpPos(result.from, result.to) == 0) { + if (reverse) { + if (result.from.ch) result.from = Pos(result.from.line, result.from.ch - 1) + else if (result.from.line == this.doc.firstLine()) result = null + else result = this.matches(reverse, this.doc.clipPos(Pos(result.from.line - 1))) + } else { + if (result.to.ch < this.doc.getLine(result.to.line).length) result.to = Pos(result.to.line, result.to.ch + 1) + else if (result.to.line == this.doc.lastLine()) result = null + else result = this.matches(reverse, Pos(result.to.line + 1, 0)) + } + } + + if (result) { + this.pos = result + this.atOccurrence = true + return this.pos.match || true + } else { + var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0) + this.pos = {from: end, to: end} + return this.atOccurrence = false + } + }, + + from: function() {if (this.atOccurrence) return this.pos.from}, + to: function() {if (this.atOccurrence) return this.pos.to}, + + replace: function(newText, origin) { + if (!this.atOccurrence) return + var lines = CodeMirror.splitLines(newText) + this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin) + this.pos.to = Pos(this.pos.from.line + lines.length - 1, + lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0)) + } + } + + CodeMirror.defineExtension("getSearchCursor", function(query, pos, caseFold) { + return new SearchCursor(this.doc, query, pos, caseFold) + }) + CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) { + return new SearchCursor(this, query, pos, caseFold) + }) + + CodeMirror.defineExtension("selectMatches", function(query, caseFold) { + var ranges = [] + var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold) + while (cur.findNext()) { + if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break + ranges.push({anchor: cur.from(), head: cur.to()}) + } + if (ranges.length) + this.setSelections(ranges, 0) + }) +}); diff --git a/covhtmlreport/vendor/codemirror/addon/selection/active-line.js b/covhtmlreport/vendor/codemirror/addon/selection/active-line.js new file mode 100644 index 000000000..aa295d0d8 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/addon/selection/active-line.js @@ -0,0 +1,72 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + var WRAP_CLASS = "CodeMirror-activeline"; + var BACK_CLASS = "CodeMirror-activeline-background"; + var GUTT_CLASS = "CodeMirror-activeline-gutter"; + + CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) { + var prev = old == CodeMirror.Init ? false : old; + if (val == prev) return + if (prev) { + cm.off("beforeSelectionChange", selectionChange); + clearActiveLines(cm); + delete cm.state.activeLines; + } + if (val) { + cm.state.activeLines = []; + updateActiveLines(cm, cm.listSelections()); + cm.on("beforeSelectionChange", selectionChange); + } + }); + + function clearActiveLines(cm) { + for (var i = 0; i < cm.state.activeLines.length; i++) { + cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS); + cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS); + cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS); + } + } + + function sameArray(a, b) { + if (a.length != b.length) return false; + for (var i = 0; i < a.length; i++) + if (a[i] != b[i]) return false; + return true; + } + + function updateActiveLines(cm, ranges) { + var active = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var option = cm.getOption("styleActiveLine"); + if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty()) + continue + var line = cm.getLineHandleVisualStart(range.head.line); + if (active[active.length - 1] != line) active.push(line); + } + if (sameArray(cm.state.activeLines, active)) return; + cm.operation(function() { + clearActiveLines(cm); + for (var i = 0; i < active.length; i++) { + cm.addLineClass(active[i], "wrap", WRAP_CLASS); + cm.addLineClass(active[i], "background", BACK_CLASS); + cm.addLineClass(active[i], "gutter", GUTT_CLASS); + } + cm.state.activeLines = active; + }); + } + + function selectionChange(cm, sel) { + updateActiveLines(cm, sel.ranges); + } +}); diff --git a/covhtmlreport/vendor/codemirror/lib/codemirror.css b/covhtmlreport/vendor/codemirror/lib/codemirror.css new file mode 100644 index 000000000..8f4f22f5d --- /dev/null +++ b/covhtmlreport/vendor/codemirror/lib/codemirror.css @@ -0,0 +1,346 @@ +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor-mark { + background-color: rgba(20, 255, 20, 0.5); + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; +} +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: -20px; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -30px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } diff --git a/covhtmlreport/vendor/codemirror/lib/codemirror.js b/covhtmlreport/vendor/codemirror/lib/codemirror.js new file mode 100644 index 000000000..8a691292c --- /dev/null +++ b/covhtmlreport/vendor/codemirror/lib/codemirror.js @@ -0,0 +1,9665 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// This is CodeMirror (http://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.CodeMirror = factory()); +}(this, (function () { 'use strict'; + +// Kludges for bugs and behavior differences that can't be feature +// detected are enabled based on userAgent etc sniffing. +var userAgent = navigator.userAgent; +var platform = navigator.platform; + +var gecko = /gecko\/\d/i.test(userAgent); +var ie_upto10 = /MSIE \d/.test(userAgent); +var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); +var edge = /Edge\/(\d+)/.exec(userAgent); +var ie = ie_upto10 || ie_11up || edge; +var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); +var webkit = !edge && /WebKit\//.test(userAgent); +var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); +var chrome = !edge && /Chrome\//.test(userAgent); +var presto = /Opera\//.test(userAgent); +var safari = /Apple Computer/.test(navigator.vendor); +var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); +var phantom = /PhantomJS/.test(userAgent); + +var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); +var android = /Android/.test(userAgent); +// This is woefully incomplete. Suggestions for alternative methods welcome. +var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); +var mac = ios || /Mac/.test(platform); +var chromeOS = /\bCrOS\b/.test(userAgent); +var windows = /win/i.test(platform); + +var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); +if (presto_version) { presto_version = Number(presto_version[1]); } +if (presto_version && presto_version >= 15) { presto = false; webkit = true; } +// Some browsers use the wrong event properties to signal cmd/ctrl on OS X +var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); +var captureRightClick = gecko || (ie && ie_version >= 9); + +function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } + +var rmClass = function(node, cls) { + var current = node.className; + var match = classTest(cls).exec(current); + if (match) { + var after = current.slice(match.index + match[0].length); + node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); + } +}; + +function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild); } + return e +} + +function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e) +} + +function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) { e.className = className; } + if (style) { e.style.cssText = style; } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)); } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } } + return e +} +// wrapper for elt, which removes the elt from the accessibility tree +function eltP(tag, content, className, style) { + var e = elt(tag, content, className, style); + e.setAttribute("role", "presentation"); + return e +} + +var range; +if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange(); + r.setEnd(endNode || node, end); + r.setStart(node, start); + return r +}; } +else { range = function(node, start, end) { + var r = document.body.createTextRange(); + try { r.moveToElementText(node.parentNode); } + catch(e) { return r } + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r +}; } + +function contains(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode; } + if (parent.contains) + { return parent.contains(child) } + do { + if (child.nodeType == 11) { child = child.host; } + if (child == parent) { return true } + } while (child = child.parentNode) +} + +function activeElt() { + // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. + // IE < 10 will throw when accessed while the page is loading or in an iframe. + // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var activeElement; + try { + activeElement = document.activeElement; + } catch(e) { + activeElement = document.body || null; + } + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + { activeElement = activeElement.shadowRoot.activeElement; } + return activeElement +} + +function addClass(node, cls) { + var current = node.className; + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls; } +} +function joinClasses(a, b) { + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i]; } } + return b +} + +var selectInput = function(node) { node.select(); }; +if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; } +else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select(); } catch(_e) {} }; } + +function bind(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function(){return f.apply(null, args)} +} + +function copyObj(obj, target, overwrite) { + if (!target) { target = {}; } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop]; } } + return target +} + +// Counts the column offset in a string, taking tabs into account. +// Used mostly to find indentation. +function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) { end = string.length; } + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } + n += nextTab - i; + n += tabSize - (n % tabSize); + i = nextTab + 1; + } +} + +var Delayed = function() {this.id = null;}; +Delayed.prototype.set = function (ms, f) { + clearTimeout(this.id); + this.id = setTimeout(f, ms); +}; + +function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 +} + +// Number of pixels added to scroller and sizer to hide scrollbar +var scrollerGap = 30; + +// Returned or thrown by various protocols to signal 'I'm not +// handling this'. +var Pass = {toString: function(){return "CodeMirror.Pass"}}; + +// Reused option objects for setSelection & friends +var sel_dontScroll = {scroll: false}; +var sel_mouse = {origin: "*mouse"}; +var sel_move = {origin: "+move"}; + +// The inverse of countColumn -- find the offset that corresponds to +// a particular column. +function findColumn(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) { nextTab = string.length; } + var skipped = nextTab - pos; + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } + col += nextTab - pos; + col += tabSize - (col % tabSize); + pos = nextTab + 1; + if (col >= goal) { return pos } + } +} + +var spaceStrs = [""]; +function spaceStr(n) { + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " "); } + return spaceStrs[n] +} + +function lst(arr) { return arr[arr.length-1] } + +function map(array, f) { + var out = []; + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); } + return out +} + +function insertSorted(array, value, score) { + var pos = 0, priority = score(value); + while (pos < array.length && score(array[pos]) <= priority) { pos++; } + array.splice(pos, 0, value); +} + +function nothing() {} + +function createObj(base, props) { + var inst; + if (Object.create) { + inst = Object.create(base); + } else { + nothing.prototype = base; + inst = new nothing(); + } + if (props) { copyObj(props, inst); } + return inst +} + +var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; +function isWordCharBasic(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) +} +function isWordChar(ch, helper) { + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) +} + +function isEmpty(obj) { + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true +} + +// Extending unicode characters. A series of a non-extending char + +// any number of extending chars is treated as a single unit as far +// as editing and measuring is concerned. This is not fully correct, +// since some scripts/fonts/browsers also treat other configurations +// of code points as a group. +var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; +function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } + +// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. +function skipExtendingChars(str, pos, dir) { + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; } + return pos +} + +// Returns the value from the range [`from`; `to`] that satisfies +// `pred` and is closest to `from`. Assumes that at least `to` +// satisfies `pred`. Supports `from` being greater than `to`. +function findFirst(pred, from, to) { + // At any point we are certain `to` satisfies `pred`, don't know + // whether `from` does. + var dir = from > to ? -1 : 1; + for (;;) { + if (from == to) { return from } + var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); + if (mid == from) { return pred(mid) ? from : to } + if (pred(mid)) { to = mid; } + else { from = mid + dir; } + } +} + +// The display handles the DOM integration, both for input reading +// and content drawing. It holds references to DOM nodes and +// display-related state. + +function Display(place, doc, input) { + var d = this; + this.input = input; + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.scrollbarFiller.setAttribute("cm-not-content", "true"); + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + d.gutterFiller.setAttribute("cm-not-content", "true"); + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = eltP("div", null, "CodeMirror-code"); + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure"); + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure"); + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + var lines = eltP("div", [d.lineSpace], "CodeMirror-lines"); + // Moved around its parent to cover visible view. + d.mover = elt("div", [lines], null, "position: relative"); + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); + d.sizerWidth = null; + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters"); + d.lineGutter = null; + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; } + + if (place) { + if (place.appendChild) { place.appendChild(d.wrapper); } + else { place(d.wrapper); } + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first; + d.reportedViewFrom = d.reportedViewTo = doc.first; + // Information about the rendered lines. + d.view = []; + d.renderedView = null; + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null; + // Empty space (in pixels) above the view + d.viewOffset = 0; + d.lastWrapHeight = d.lastWrapWidth = 0; + d.updateLineNumbers = null; + + d.nativeBarWidth = d.barHeight = d.barWidth = 0; + d.scrollbarsClipped = false; + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false; + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null; + d.maxLineLength = 0; + d.maxLineChanged = false; + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; + + // True when shift is held down. + d.shift = false; + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null; + + d.activeTouch = null; + + input.init(d); +} + +// Find the line object corresponding to the given line number. +function getLine(doc, n) { + n -= doc.first; + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } + var chunk = doc; + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break } + n -= sz; + } + } + return chunk.lines[n] +} + +// Get the part of a document between two positions, as an array of +// strings. +function getBetween(doc, start, end) { + var out = [], n = start.line; + doc.iter(start.line, end.line + 1, function (line) { + var text = line.text; + if (n == end.line) { text = text.slice(0, end.ch); } + if (n == start.line) { text = text.slice(start.ch); } + out.push(text); + ++n; + }); + return out +} +// Get the lines between from and to, as array of strings. +function getLines(doc, from, to) { + var out = []; + doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value + return out +} + +// Update the height of a line, propagating the height change +// upwards to parent nodes. +function updateLineHeight(line, height) { + var diff = height - line.height; + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } } +} + +// Given a line object, find its line number by walking up through +// its parent links. +function lineNo(line) { + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } + no += chunk.children[i].chunkSize(); + } + } + return no + cur.first +} + +// Find the line at the given vertical position, using the height +// information in the document tree. +function lineAtHeight(chunk, h) { + var n = chunk.first; + outer: do { + for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { + var child = chunk.children[i$1], ch = child.height; + if (h < ch) { chunk = child; continue outer } + h -= ch; + n += child.chunkSize(); + } + return n + } while (!chunk.lines) + var i = 0; + for (; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) { break } + h -= lh; + } + return n + i +} + +function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} + +function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)) +} + +// A Pos instance represents a position within the text. +function Pos(line, ch, sticky) { + if ( sticky === void 0 ) sticky = null; + + if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } + this.line = line; + this.ch = ch; + this.sticky = sticky; +} + +// Compare two positions, return 0 if they are the same, a negative +// number when a is less, and a positive number otherwise. +function cmp(a, b) { return a.line - b.line || a.ch - b.ch } + +function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } + +function copyPos(x) {return Pos(x.line, x.ch)} +function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } +function minPos(a, b) { return cmp(a, b) < 0 ? a : b } + +// Most of the external API clips given positions to make sure they +// actually exist within the document. +function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} +function clipPos(doc, pos) { + if (pos.line < doc.first) { return Pos(doc.first, 0) } + var last = doc.first + doc.size - 1; + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) +} +function clipToLen(pos, linelen) { + var ch = pos.ch; + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } +} +function clipPosArray(doc, array) { + var out = []; + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); } + return out +} + +// Optimize some code when these features are not used. +var sawReadOnlySpans = false; +var sawCollapsedSpans = false; + +function seeReadOnlySpans() { + sawReadOnlySpans = true; +} + +function seeCollapsedSpans() { + sawCollapsedSpans = true; +} + +// TEXTMARKER SPANS + +function MarkedSpan(marker, from, to) { + this.marker = marker; + this.from = from; this.to = to; +} + +// Search an array of spans for a span matching the given marker. +function getMarkedSpanFor(spans, marker) { + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) { return span } + } } +} +// Remove a span from an array, returning undefined if no spans are +// left (we don't store arrays for lines without spans). +function removeMarkedSpan(spans, span) { + var r; + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } } + return r +} +// Add a span to a line. +function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + span.marker.attachLine(line); +} + +// Used for the algorithm that adjusts markers for a change in the +// document. These functions cut an array of spans at a given +// character position, returning an array of remaining chunks (or +// undefined if nothing remains). +function markedSpansBefore(old, startCh, isInsert) { + var nw; + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); + } + } } + return nw +} +function markedSpansAfter(old, endCh, isInsert) { + var nw; + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); + } + } } + return nw +} + +// Given a change object, compute the new set of marker spans that +// cover the line in which the change took place. Removes spans +// entirely within the change, reconnects spans belonging to the +// same marker that appear on both sides of the change, and cuts off +// spans partially within the change. Returns an array of span +// arrays with one element for each line in (after) the change. +function stretchSpansOverChange(doc, change) { + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) { return null } + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert); + var last = markedSpansAfter(oldLast, endCh, isInsert); + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i]; + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker); + if (!found) { span.to = startCh; } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset; } + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i$1 = 0; i$1 < last.length; ++i$1) { + var span$1 = last[i$1]; + if (span$1.to != null) { span$1.to += offset; } + if (span$1.from == null) { + var found$1 = getMarkedSpanFor(first, span$1.marker); + if (!found$1) { + span$1.from = offset; + if (sameLine) { (first || (first = [])).push(span$1); } + } + } else { + span$1.from += offset; + if (sameLine) { (first || (first = [])).push(span$1); } + } + } + } + // Make sure we didn't create any zero-length spans + if (first) { first = clearEmptySpans(first); } + if (last && last != first) { last = clearEmptySpans(last); } + + var newMarkers = [first]; + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers); } + newMarkers.push(last); + } + return newMarkers +} + +// Remove spans that are empty and don't have a clearWhenEmpty +// option of false. +function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1); } + } + if (!spans.length) { return null } + return spans +} + +// Used to 'clip' out readOnly ranges when making a change. +function removeReadOnlyRanges(doc, from, to) { + var markers = null; + doc.iter(from.line, to.line + 1, function (line) { + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark); } + } } + }); + if (!markers) { return null } + var parts = [{from: from, to: to}]; + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0); + for (var j = 0; j < parts.length; ++j) { + var p = parts[j]; + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}); } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}); } + parts.splice.apply(parts, newParts); + j += newParts.length - 3; + } + } + return parts +} + +// Connect or disconnect spans from a line. +function detachMarkedSpans(line) { + var spans = line.markedSpans; + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line); } + line.markedSpans = null; +} +function attachMarkedSpans(line, spans) { + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line); } + line.markedSpans = spans; +} + +// Helpers used when computing which overlapping collapsed span +// counts as the larger one. +function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } +function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } + +// Returns a number indicating which of two overlapping collapsed +// spans is larger (and thus includes the other). Falls back to +// comparing ids when the spans cover exactly the same range. +function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length; + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find(); + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); + if (fromCmp) { return -fromCmp } + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); + if (toCmp) { return toCmp } + return b.id - a.id +} + +// Find out whether a line ends or starts in a collapsed span. If +// so, return the marker for that span. +function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker; } + } } + return found +} +function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } +function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } + +// Test whether there exists a collapsed span that partially +// overlaps (covers the start or end, but not both) of a new span. +// Such overlap is not allowed. +function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) { + var line = getLine(doc, lineNo$$1); + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } +} + +// A visual line is a line as drawn on the screen. Folding, for +// example, can cause multiple logical lines to appear on the same +// visual line. This finds the start of the visual line that the +// given line is part of (usually that is the line itself). +function visualLine(line) { + var merged; + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line; } + return line +} + +function visualLineEnd(line) { + var merged; + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return line +} + +// Returns an array of logical lines that continue the visual line +// started by the argument, or undefined if there are no such lines. +function visualLineContinued(line) { + var merged, lines; + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line); + } + return lines +} + +// Get the line number of the start of the visual line that the +// given line number is part of. +function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) { return lineN } + return lineNo(vis) +} + +// Get the line number of the start of the next visual line after +// the given line. +function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return lineNo(line) + 1 +} + +// Compute whether a line is hidden. Lines count as hidden when they +// are part of a visual line that starts with another line, or when +// they are entirely covered by collapsed, non-widget span. +function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } +} +function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true); + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) + } + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i]; + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } + } +} + +// Find the height above the given line. +function heightAtLine(lineObj) { + lineObj = visualLine(lineObj); + + var h = 0, chunk = lineObj.parent; + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i]; + if (line == lineObj) { break } + else { h += line.height; } + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i$1 = 0; i$1 < p.children.length; ++i$1) { + var cur = p.children[i$1]; + if (cur == chunk) { break } + else { h += cur.height; } + } + } + return h +} + +// Compute the character length of a line, taking into account +// collapsed ranges (see markText) that might hide parts, and join +// other lines onto it. +function lineLength(line) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true); + cur = found.from.line; + len += found.from.ch - found.to.ch; + } + cur = line; + while (merged = collapsedSpanAtEnd(cur)) { + var found$1 = merged.find(0, true); + len -= cur.text.length - found$1.from.ch; + cur = found$1.to.line; + len += cur.text.length - found$1.to.ch; + } + return len +} + +// Find the longest line in the document. +function findMaxLine(cm) { + var d = cm.display, doc = cm.doc; + d.maxLine = getLine(doc, doc.first); + d.maxLineLength = lineLength(d.maxLine); + d.maxLineChanged = true; + doc.iter(function (line) { + var len = lineLength(line); + if (len > d.maxLineLength) { + d.maxLineLength = len; + d.maxLine = line; + } + }); +} + +// BIDI HELPERS + +function iterateBidiSections(order, from, to, f) { + if (!order) { return f(from, to, "ltr", 0) } + var found = false; + for (var i = 0; i < order.length; ++i) { + var part = order[i]; + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i); + found = true; + } + } + if (!found) { f(from, to, "ltr"); } +} + +var bidiOther = null; +function getBidiPartAt(order, ch, sticky) { + var found; + bidiOther = null; + for (var i = 0; i < order.length; ++i) { + var cur = order[i]; + if (cur.from < ch && cur.to > ch) { return i } + if (cur.to == ch) { + if (cur.from != cur.to && sticky == "before") { found = i; } + else { bidiOther = i; } + } + if (cur.from == ch) { + if (cur.from != cur.to && sticky != "before") { found = i; } + else { bidiOther = i; } + } + } + return found != null ? found : bidiOther +} + +// Bidirectional ordering algorithm +// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm +// that this (partially) implements. + +// One-char codes used for character types: +// L (L): Left-to-Right +// R (R): Right-to-Left +// r (AL): Right-to-Left Arabic +// 1 (EN): European Number +// + (ES): European Number Separator +// % (ET): European Number Terminator +// n (AN): Arabic Number +// , (CS): Common Number Separator +// m (NSM): Non-Spacing Mark +// b (BN): Boundary Neutral +// s (B): Paragraph Separator +// t (S): Segment Separator +// w (WS): Whitespace +// N (ON): Other Neutrals + +// Returns null if characters are ordered as they appear +// (left-to-right), or an array of sections ({from, to, level} +// objects) in the order in which they occur visually. +var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; + // Character types for codepoints 0x600 to 0x6f9 + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"; + function charType(code) { + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; + + function BidiSpan(level, from, to) { + this.level = level; + this.from = from; this.to = to; + } + + return function(str, direction) { + var outerType = direction == "ltr" ? "L" : "R"; + + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } + var len = str.length, types = []; + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))); } + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { + var type = types[i$1]; + if (type == "m") { types[i$1] = prev; } + else { prev = type; } + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { + var type$1 = types[i$2]; + if (type$1 == "1" && cur == "r") { types[i$2] = "n"; } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R"; } } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { + var type$2 = types[i$3]; + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1"; } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1; } + prev$1 = type$2; + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i$4 = 0; i$4 < len; ++i$4) { + var type$3 = types[i$4]; + if (type$3 == ",") { types[i$4] = "N"; } + else if (type$3 == "%") { + var end = (void 0); + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i$4; j < end; ++j) { types[j] = replace; } + i$4 = end - 1; + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { + var type$4 = types[i$5]; + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L"; } + else if (isStrong.test(type$4)) { cur$1 = type$4; } + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i$6 = 0; i$6 < len; ++i$6) { + if (isNeutral.test(types[i$6])) { + var end$1 = (void 0); + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L"; + var after = (end$1 < len ? types[end$1] : outerType) == "L"; + var replace$1 = before == after ? (before ? "L" : "R") : outerType; + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; } + i$6 = end$1 - 1; + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m; + for (var i$7 = 0; i$7 < len;) { + if (countsAsLeft.test(types[i$7])) { + var start = i$7; + for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} + order.push(new BidiSpan(0, start, i$7)); + } else { + var pos = i$7, at = order.length; + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { + if (countsAsNum.test(types[j$2])) { + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); } + var nstart = j$2; + for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} + order.splice(at, 0, new BidiSpan(2, nstart, j$2)); + pos = j$2; + } else { ++j$2; } + } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); } + } + } + if (direction == "ltr") { + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length; + order.unshift(new BidiSpan(0, 0, m[0].length)); + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length; + order.push(new BidiSpan(0, len - m[0].length, len)); + } + } + + return direction == "rtl" ? order.reverse() : order + } +})(); + +// Get the bidi ordering for the given line (and cache it). Returns +// false for lines that are fully left-to-right, and an array of +// BidiSpan objects otherwise. +function getOrder(line, direction) { + var order = line.order; + if (order == null) { order = line.order = bidiOrdering(line.text, direction); } + return order +} + +// EVENT HANDLING + +// Lightweight event framework. on/off also work on DOM nodes, +// registering native DOM handlers. + +var noHandlers = []; + +var on = function(emitter, type, f) { + if (emitter.addEventListener) { + emitter.addEventListener(type, f, false); + } else if (emitter.attachEvent) { + emitter.attachEvent("on" + type, f); + } else { + var map$$1 = emitter._handlers || (emitter._handlers = {}); + map$$1[type] = (map$$1[type] || noHandlers).concat(f); + } +}; + +function getHandlers(emitter, type) { + return emitter._handlers && emitter._handlers[type] || noHandlers +} + +function off(emitter, type, f) { + if (emitter.removeEventListener) { + emitter.removeEventListener(type, f, false); + } else if (emitter.detachEvent) { + emitter.detachEvent("on" + type, f); + } else { + var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type]; + if (arr) { + var index = indexOf(arr, f); + if (index > -1) + { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); } + } + } +} + +function signal(emitter, type /*, values...*/) { + var handlers = getHandlers(emitter, type); + if (!handlers.length) { return } + var args = Array.prototype.slice.call(arguments, 2); + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); } +} + +// The DOM events that CodeMirror handles can be overridden by +// registering a (non-DOM) handler on the editor for the event name, +// and preventDefault-ing the event in that handler. +function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; } + signal(cm, override || e.type, cm, e); + return e_defaultPrevented(e) || e.codemirrorIgnore +} + +function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity; + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]); } } +} + +function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 +} + +// Add on and off methods to a constructor's prototype, to make +// registering events on such objects more convenient. +function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; +} + +// Due to the fact that we still support jurassic IE versions, some +// compatibility wrappers are needed. + +function e_preventDefault(e) { + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } +} +function e_stopPropagation(e) { + if (e.stopPropagation) { e.stopPropagation(); } + else { e.cancelBubble = true; } +} +function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false +} +function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} + +function e_target(e) {return e.target || e.srcElement} +function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) { b = 1; } + else if (e.button & 2) { b = 3; } + else if (e.button & 4) { b = 2; } + } + if (mac && e.ctrlKey && b == 1) { b = 3; } + return b +} + +// Detect drag-and-drop +var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) { return false } + var div = elt('div'); + return "draggable" in div || "dragDrop" in div +}(); + +var zwspSupported; +function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + node.setAttribute("cm-text", ""); + return node +} + +// Feature-detect IE's crummy client rect reporting for bidi text +var badBidiRects; +function hasBadBidiRects(measure) { + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); + var r0 = range(txt, 0, 1).getBoundingClientRect(); + var r1 = range(txt, 1, 2).getBoundingClientRect(); + removeChildren(measure); + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) +} + +// See if "".split is the broken IE version, if so, provide an +// alternative way to split lines. +var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) { nl = string.length; } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result +} : function (string) { return string.split(/\r\n?|\n/); }; + +var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } +} : function (te) { + var range$$1; + try {range$$1 = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range$$1 || range$$1.parentElement() != te) { return false } + return range$$1.compareEndPoints("StartToEnd", range$$1) != 0 +}; + +var hasCopyEvent = (function () { + var e = elt("div"); + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function" +})(); + +var badZoomedRects = null; +function hasBadZoomedRects(measure) { + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")); + var normal = node.getBoundingClientRect(); + var fromRange = range(node, 0, 1).getBoundingClientRect(); + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 +} + +// Known modes, by name and by MIME +var modes = {}; +var mimeModes = {}; + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +function defineMode(name, mode) { + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2); } + modes[name] = mode; +} + +function defineMIME(mime, spec) { + mimeModes[mime] = spec; +} + +// Given a MIME type, a {name, ...options} config object, or a name +// string, return a mode config object. +function resolveMode(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec]; + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name]; + if (typeof found == "string") { found = {name: found}; } + spec = createObj(found, spec); + spec.name = found.name; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") + } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } +} + +// Given a mode spec (anything that resolveMode accepts), find and +// initialize an actual mode object. +function getMode(options, spec) { + spec = resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) { return getMode(options, "text/plain") } + var modeObj = mfactory(options, spec); + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name]; + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop]; } + modeObj[prop] = exts[prop]; + } + } + modeObj.name = spec.name; + if (spec.helperType) { modeObj.helperType = spec.helperType; } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1]; } } + + return modeObj +} + +// This can be used to attach properties to mode objects from +// outside the actual mode definition. +var modeExtensions = {}; +function extendMode(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); + copyObj(properties, exts); +} + +function copyState(mode, state) { + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) { val = val.concat([]); } + nstate[n] = val; + } + return nstate +} + +// Given a mode and a state (for that mode), find the inner mode and +// state at the position that the state refers to. +function innerMode(mode, state) { + var info; + while (mode.innerMode) { + info = mode.innerMode(state); + if (!info || info.mode == mode) { break } + state = info.state; + mode = info.mode; + } + return info || {mode: mode, state: state} +} + +function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true +} + +// STRING STREAM + +// Fed to the mode parsers, provides helper functions to make +// parsers more succinct. + +var StringStream = function(string, tabSize, lineOracle) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + this.lineStart = 0; + this.lineOracle = lineOracle; +}; + +StringStream.prototype.eol = function () {return this.pos >= this.string.length}; +StringStream.prototype.sol = function () {return this.pos == this.lineStart}; +StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; +StringStream.prototype.next = function () { + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } +}; +StringStream.prototype.eat = function (match) { + var ch = this.string.charAt(this.pos); + var ok; + if (typeof match == "string") { ok = ch == match; } + else { ok = ch && (match.test ? match.test(ch) : match(ch)); } + if (ok) {++this.pos; return ch} +}; +StringStream.prototype.eatWhile = function (match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start +}; +StringStream.prototype.eatSpace = function () { + var this$1 = this; + + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; } + return this.pos > start +}; +StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;}; +StringStream.prototype.skipTo = function (ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true} +}; +StringStream.prototype.backUp = function (n) {this.pos -= n;}; +StringStream.prototype.column = function () { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); + this.lastColumnPos = this.start; + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) +}; +StringStream.prototype.indentation = function () { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) +}; +StringStream.prototype.match = function (pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; }; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) { this.pos += pattern.length; } + return true + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length; } + return match + } +}; +StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; +StringStream.prototype.hideFirstChars = function (n, inner) { + this.lineStart += n; + try { return inner() } + finally { this.lineStart -= n; } +}; +StringStream.prototype.lookAhead = function (n) { + var oracle = this.lineOracle; + return oracle && oracle.lookAhead(n) +}; +StringStream.prototype.baseToken = function () { + var oracle = this.lineOracle; + return oracle && oracle.baseToken(this.pos) +}; + +var SavedContext = function(state, lookAhead) { + this.state = state; + this.lookAhead = lookAhead; +}; + +var Context = function(doc, state, line, lookAhead) { + this.state = state; + this.doc = doc; + this.line = line; + this.maxLookAhead = lookAhead || 0; + this.baseTokens = null; + this.baseTokenPos = 1; +}; + +Context.prototype.lookAhead = function (n) { + var line = this.doc.getLine(this.line + n); + if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; } + return line +}; + +Context.prototype.baseToken = function (n) { + var this$1 = this; + + if (!this.baseTokens) { return null } + while (this.baseTokens[this.baseTokenPos] <= n) + { this$1.baseTokenPos += 2; } + var type = this.baseTokens[this.baseTokenPos + 1]; + return {type: type && type.replace(/( |^)overlay .*/, ""), + size: this.baseTokens[this.baseTokenPos] - n} +}; + +Context.prototype.nextLine = function () { + this.line++; + if (this.maxLookAhead > 0) { this.maxLookAhead--; } +}; + +Context.fromSaved = function (doc, saved, line) { + if (saved instanceof SavedContext) + { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } + else + { return new Context(doc, copyState(doc.mode, saved), line) } +}; + +Context.prototype.save = function (copy) { + var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state; + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state +}; + + +// Compute a style array (an array starting with a mode generation +// -- for invalidation -- followed by pairs of end positions and +// style strings), which is used to highlight the tokens on the +// line. +function highlightLine(cm, line, context, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {}; + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd); + var state = context.state; + + // Run overlays, adjust style array. + var loop = function ( o ) { + context.baseTokens = st; + var overlay = cm.state.overlays[o], i = 1, at = 0; + context.state = true; + runMode(cm, line.text, overlay.mode, context, function (end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end); } + i += 2; + at = Math.min(end, i_end); + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "overlay " + style; + } + } + }, lineClasses); + context.state = state; + context.baseTokens = null; + context.baseTokenPos = 1; + }; + + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} +} + +function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var context = getContextBefore(cm, lineNo(line)); + var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state); + var result = highlightLine(cm, line, context); + if (resetState) { context.state = resetState; } + line.stateAfter = context.save(!resetState); + line.styles = result.styles; + if (result.classes) { line.styleClasses = result.classes; } + else if (line.styleClasses) { line.styleClasses = null; } + if (updateFrontier === cm.doc.highlightFrontier) + { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); } + } + return line.styles +} + +function getContextBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) { return new Context(doc, true, n) } + var start = findStartLine(cm, n, precise); + var saved = start > doc.first && getLine(doc, start - 1).stateAfter; + var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start); + + doc.iter(start, n, function (line) { + processLine(cm, line.text, context); + var pos = context.line; + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null; + context.nextLine(); + }); + if (precise) { doc.modeFrontier = context.line; } + return context +} + +// Lightweight form of highlight -- proceed over this line and +// update state, but don't save a style array. Used for lines that +// aren't currently visible. +function processLine(cm, text, context, startAt) { + var mode = cm.doc.mode; + var stream = new StringStream(text, cm.options.tabSize, context); + stream.start = stream.pos = startAt || 0; + if (text == "") { callBlankLine(mode, context.state); } + while (!stream.eol()) { + readToken(mode, stream, context.state); + stream.start = stream.pos; + } +} + +function callBlankLine(mode, state) { + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } + var inner = innerMode(mode, state); + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } +} + +function readToken(mode, stream, state, inner) { + for (var i = 0; i < 10; i++) { + if (inner) { inner[0] = innerMode(mode, state).mode; } + var style = mode.token(stream, state); + if (stream.pos > stream.start) { return style } + } + throw new Error("Mode " + mode.name + " failed to advance stream.") +} + +var Token = function(stream, type, state) { + this.start = stream.start; this.end = stream.pos; + this.string = stream.current(); + this.type = type || null; + this.state = state; +}; + +// Utility for getTokenAt and getLineTokens +function takeToken(cm, pos, precise, asArray) { + var doc = cm.doc, mode = doc.mode, style; + pos = clipPos(doc, pos); + var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise); + var stream = new StringStream(line.text, cm.options.tabSize, context), tokens; + if (asArray) { tokens = []; } + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos; + style = readToken(mode, stream, context.state); + if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); } + } + return asArray ? tokens : new Token(stream, style, context.state) +} + +function extractLineClasses(type, output) { + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + { output[prop] = lineClass[2]; } + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2]; } + } } + return type +} + +// Run the given mode's parser over a line, calling f for each token. +function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans; + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; } + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize, context), style; + var inner = cm.options.addModeClass && [null]; + if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); } + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false; + if (forceToEnd) { processLine(cm, text, context, stream.pos); } + stream.pos = text.length; + style = null; + } else { + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses); + } + if (inner) { + var mName = inner[0].name; + if (mName) { style = "m-" + (style ? mName + " " + style : mName); } + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 5000); + f(curStart, curStyle); + } + curStyle = style; + } + stream.start = stream.pos; + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 + // characters, and returns inaccurate measurements in nodes + // starting around 5000 chars. + var pos = Math.min(stream.pos, curStart + 5000); + f(pos, curStyle); + curStart = pos; + } +} + +// Finds the line to start with when starting a parse. Tries to +// find a line with a stateAfter, so that it can start with a +// valid state. If that fails, it returns the line with the +// smallest indentation, which tends to need the least context to +// parse correctly. +function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc; + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); + for (var search = n; search > lim; --search) { + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1), after = line.stateAfter; + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + { return search } + var indented = countColumn(line.text, null, cm.options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline +} + +function retreatFrontier(doc, n) { + doc.modeFrontier = Math.min(doc.modeFrontier, n); + if (doc.highlightFrontier < n - 10) { return } + var start = doc.first; + for (var line = n - 1; line > start; line--) { + var saved = getLine(doc, line).stateAfter; + // change is on 3 + // state on line 1 looked ahead 2 -- so saw 3 + // test 1 + 2 < 3 should cover this + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { + start = line + 1; + break + } + } + doc.highlightFrontier = Math.min(doc.highlightFrontier, start); +} + +// LINE DATA STRUCTURE + +// Line objects. These hold state related to a line, including +// highlighting info (the styles array). +var Line = function(text, markedSpans, estimateHeight) { + this.text = text; + attachMarkedSpans(this, markedSpans); + this.height = estimateHeight ? estimateHeight(this) : 1; +}; + +Line.prototype.lineNo = function () { return lineNo(this) }; +eventMixin(Line); + +// Change the content (text, markers) of a line. Automatically +// invalidates cached information and tries to re-estimate the +// line's height. +function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text; + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + if (line.order != null) { line.order = null; } + detachMarkedSpans(line); + attachMarkedSpans(line, markedSpans); + var estHeight = estimateHeight ? estimateHeight(line) : 1; + if (estHeight != line.height) { updateLineHeight(line, estHeight); } +} + +// Detach a line from the document tree and its markers. +function cleanUpLine(line) { + line.parent = null; + detachMarkedSpans(line); +} + +// Convert a style as returned by a mode (either null, or a string +// containing one or more styles) to a CSS style. This is cached, +// and also looks for line-wide styles. +var styleToClassCache = {}; +var styleToClassCacheWithMode = {}; +function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) +} + +// Render the DOM representation of the text of a line. Also builds +// up a 'line map', which points at the DOM nodes that represent +// specific stretches of text, and is used by the measuring code. +// The returned object contains the DOM node, this map, and +// information about line-wide styles that were set by the mode. +function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")}; + lineView.measure = {}; + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0); + builder.pos = 0; + builder.addToken = buildToken; + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order); } + builder.map = []; + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); + if (line.styleClasses) { + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); } + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map; + lineView.measure.cache = {}; + } else { + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}); + } + } + + // See issue #2901 + if (webkit) { + var last = builder.content.lastChild; + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack"; } + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre); + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); } + + return builder +} + +function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + token.setAttribute("aria-label", token.title); + return token +} + +// Build up the DOM representation for a single token, and add it to +// the line map. Takes care to render special characters separately. +function buildToken(builder, text, style, startStyle, endStyle, title, css) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text; + var special = builder.cm.state.specialChars, mustWrap = false; + var content; + if (!special.test(text)) { + builder.col += text.length; + content = document.createTextNode(displayText); + builder.map.push(builder.pos, builder.pos + text.length, content); + if (ie && ie_version < 9) { mustWrap = true; } + builder.pos += text.length; + } else { + content = document.createDocumentFragment(); + var pos = 0; + while (true) { + special.lastIndex = pos; + var m = special.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])); } + else { content.appendChild(txt); } + builder.map.push(builder.pos, builder.pos + skipped, txt); + builder.col += skipped; + builder.pos += skipped; + } + if (!m) { break } + pos += skipped + 1; + var txt$1 = (void 0); + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + txt$1.setAttribute("role", "presentation"); + txt$1.setAttribute("cm-text", "\t"); + builder.col += tabWidth; + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); + txt$1.setAttribute("cm-text", m[0]); + builder.col += 1; + } else { + txt$1 = builder.cm.options.specialCharPlaceholder(m[0]); + txt$1.setAttribute("cm-text", m[0]); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])); } + else { content.appendChild(txt$1); } + builder.col += 1; + } + builder.map.push(builder.pos, builder.pos + 1, txt$1); + builder.pos++; + } + } + builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32; + if (style || startStyle || endStyle || mustWrap || css) { + var fullStyle = style || ""; + if (startStyle) { fullStyle += startStyle; } + if (endStyle) { fullStyle += endStyle; } + var token = elt("span", [content], fullStyle, css); + if (title) { token.title = title; } + return builder.content.appendChild(token) + } + builder.content.appendChild(content); +} + +function splitSpaces(text, trailingBefore) { + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = ""; + for (var i = 0; i < text.length; i++) { + var ch = text.charAt(i); + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0"; } + result += ch; + spaceBefore = ch == " "; + } + return result +} + +// Work around nonsense dimensions being reported for stretches of +// right-to-left text. +function buildTokenBadBidi(inner, order) { + return function (builder, text, style, startStyle, endStyle, title, css) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; + for (;;) { + // Find the part that overlaps with the start of this text + var part = (void 0); + for (var i = 0; i < order.length; i++) { + part = order[i]; + if (part.to > start && part.from <= start) { break } + } + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css); + startStyle = null; + text = text.slice(part.to - start); + start = part.to; + } + } +} + +function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode; + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); } + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")); } + widget.setAttribute("cm-marker", marker.id); + } + if (widget) { + builder.cm.display.input.setUneditable(widget); + builder.content.appendChild(widget); + } + builder.pos += size; + builder.trailingSpace = false; +} + +// Outputs a number of spans to make up a line, taking highlighting +// and marked text into account. +function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0; + if (!spans) { + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = css = ""; + collapsed = null; nextChange = Infinity; + var foundBookmarks = [], endStyles = (void 0); + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker; + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m); + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to; + spanEndStyle = ""; + } + if (m.className) { spanStyle += " " + m.className; } + if (m.css) { css = (css ? css + ";" : "") + m.css; } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle; } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); } + if (m.title && !title) { title = m.title; } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp; } + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from; + } + } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1]; } } } + + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false; } + } + } + if (pos >= len) { break } + + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css); + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} + pos = end; + spanStartStyle = ""; + } + text = allText.slice(at, at = styles[i++]); + style = interpretTokenStyle(styles[i++], builder.cm.options); + } + } +} + + +// These objects are used to represent the visible (currently drawn) +// part of the document. A LineView may correspond to multiple +// logical lines, if those are connected by collapsed ranges. +function LineView(doc, line, lineN) { + // The starting line + this.line = line; + // Continuing lines, if any + this.rest = visualLineContinued(line); + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; + this.node = this.text = null; + this.hidden = lineIsHidden(doc, line); +} + +// Create a range of LineView objects for the given lines. +function buildViewArray(cm, from, to) { + var array = [], nextPos; + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); + nextPos = pos + view.size; + array.push(view); + } + return array +} + +var operationGroup = null; + +function pushOperation(op) { + if (operationGroup) { + operationGroup.ops.push(op); + } else { + op.ownsGroup = operationGroup = { + ops: [op], + delayedCallbacks: [] + }; + } +} + +function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + var callbacks = group.delayedCallbacks, i = 0; + do { + for (; i < callbacks.length; i++) + { callbacks[i].call(null); } + for (var j = 0; j < group.ops.length; j++) { + var op = group.ops[j]; + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } + } + } while (i < callbacks.length) +} + +function finishOperation(op, endCb) { + var group = op.ownsGroup; + if (!group) { return } + + try { fireCallbacksForOps(group); } + finally { + operationGroup = null; + endCb(group); + } +} + +var orphanDelayedCallbacks = null; + +// Often, we want to signal events at a point where we are in the +// middle of some work, but don't want the handler to start calling +// other methods on the editor, which might be in an inconsistent +// state or simply not expect any other events to happen. +// signalLater looks whether there are any handlers, and schedules +// them to be executed when the last operation ends, or, if no +// operation is active, when a timeout fires. +function signalLater(emitter, type /*, values...*/) { + var arr = getHandlers(emitter, type); + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list; + if (operationGroup) { + list = operationGroup.delayedCallbacks; + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks; + } else { + list = orphanDelayedCallbacks = []; + setTimeout(fireOrphanDelayed, 0); + } + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }); + }; + + for (var i = 0; i < arr.length; ++i) + loop( i ); +} + +function fireOrphanDelayed() { + var delayed = orphanDelayedCallbacks; + orphanDelayedCallbacks = null; + for (var i = 0; i < delayed.length; ++i) { delayed[i](); } +} + +// When an aspect of a line changes, a string is added to +// lineView.changes. This updates the relevant part of the line's +// DOM structure. +function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j]; + if (type == "text") { updateLineText(cm, lineView); } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims); } + else if (type == "class") { updateLineClasses(cm, lineView); } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims); } + } + lineView.changes = null; +} + +// Lines with gutter elements, widgets or a background class need to +// be wrapped, and have the extra elements added to the wrapper div +function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); } + lineView.node.appendChild(lineView.text); + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; } + } + return lineView.node +} + +function updateLineBackground(cm, lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) { cls += " CodeMirror-linebackground"; } + if (lineView.background) { + if (cls) { lineView.background.className = cls; } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } + } else if (cls) { + var wrap = ensureLineWrapped(lineView); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); + cm.display.input.setUneditable(lineView.background); + } +} + +// Wrapper around buildLineContent which will reuse the structure +// in display.externalMeasured when possible. +function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured; + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null; + lineView.measure = ext.measure; + return ext.built + } + return buildLineContent(cm, lineView) +} + +// Redraw the line's text. Interacts with the background and text +// classes because the mode may output tokens that influence these +// classes. +function updateLineText(cm, lineView) { + var cls = lineView.text.className; + var built = getLineContent(cm, lineView); + if (lineView.text == lineView.node) { lineView.node = built.pre; } + lineView.text.parentNode.replaceChild(built.pre, lineView.text); + lineView.text = built.pre; + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass; + lineView.textClass = built.textClass; + updateLineClasses(cm, lineView); + } else if (cls) { + lineView.text.className = cls; + } +} + +function updateLineClasses(cm, lineView) { + updateLineBackground(cm, lineView); + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass; } + else if (lineView.node != lineView.text) + { lineView.node.className = ""; } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; +} + +function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter); + lineView.gutter = null; + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground); + lineView.gutterBackground = null; + } + if (lineView.line.gutterClass) { + var wrap = ensureLineWrapped(lineView); + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")); + cm.display.input.setUneditable(lineView.gutterBackground); + wrap.insertBefore(lineView.gutterBackground, lineView.text); + } + var markers = lineView.line.gutterMarkers; + if (cm.options.lineNumbers || markers) { + var wrap$1 = ensureLineWrapped(lineView); + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")); + cm.display.input.setUneditable(gutterWrap); + wrap$1.insertBefore(gutterWrap, lineView.text); + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass; } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))); } + if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))); } + } } + } +} + +function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) { lineView.alignable = null; } + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { + next = node.nextSibling; + if (node.className == "CodeMirror-linewidget") + { lineView.node.removeChild(node); } + } + insertLineWidgets(cm, lineView, dims); +} + +// Build a line's DOM representation from scratch +function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView); + lineView.text = lineView.node = built.pre; + if (built.bgClass) { lineView.bgClass = built.bgClass; } + if (built.textClass) { lineView.textClass = built.textClass; } + + updateLineClasses(cm, lineView); + updateLineGutter(cm, lineView, lineN, dims); + insertLineWidgets(cm, lineView, dims); + return lineView.node +} + +// A lineView may contain multiple logical lines (when merged by +// collapsed spans). The widgets for all of them need to be drawn. +function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } } +} + +function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) { return } + var wrap = ensureLineWrapped(lineView); + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true"); } + positionLineWidget(widget, node, lineView, dims); + cm.display.input.setUneditable(node); + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text); } + else + { wrap.appendChild(node); } + signalLater(widget, "redraw"); + } +} + +function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + (lineView.alignable || (lineView.alignable = [])).push(node); + var width = dims.wrapperWidth; + node.style.left = dims.fixedPos + "px"; + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; + } + node.style.width = width + "px"; + } + if (widget.coverGutter) { + node.style.zIndex = 5; + node.style.position = "relative"; + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px"; } + } +} + +function widgetHeight(widget) { + if (widget.height != null) { return widget.height } + var cm = widget.doc.cm; + if (!cm) { return 0 } + if (!contains(document.body, widget.node)) { + var parentStyle = "position: relative;"; + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); + } + return widget.height = widget.node.parentNode.offsetHeight +} + +// Return true when the given mouse event happened in a widget +function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } + } +} + +// POSITION MEASUREMENT + +function paddingTop(display) {return display.lineSpace.offsetTop} +function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} +function paddingH(display) { + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; } + return data +} + +function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } +function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth +} +function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight +} + +// Ensure the lineView.wrapping.heights array is populated. This is +// an array of bottom offsets for the lines that make up a drawn +// line. When lineWrapping is on, there might be more than one +// height. +function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping; + var curWidth = wrapping && displayWidth(cm); + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; + if (wrapping) { + lineView.measure.width = curWidth; + var rects = lineView.text.firstChild.getClientRects(); + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top); } + } + } + heights.push(rect.bottom - rect.top); + } +} + +// Find a line map (mapping character offsets to text nodes) and a +// measurement cache for the given line number. (A line view might +// contain multiple lines when collapsed ranges are present.) +function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } +} + +// Render a line into the hidden node display.externalMeasured. Used +// when measurement is needed for a line that's not in the viewport. +function updateExternalMeasurement(cm, line) { + line = visualLine(line); + var lineN = lineNo(line); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); + view.lineN = lineN; + var built = view.built = buildLineContent(cm, view); + view.text = built.pre; + removeChildrenAndAdd(cm.display.lineMeasure, built.pre); + return view +} + +// Get a {top, bottom, left, right} box (in line-local coordinates) +// for a given character. +function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) +} + +// Find a line view that corresponds to the given line number. +function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } + var ext = cm.display.externalMeasured; + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } +} + +// Measurement can be split in two steps, the set-up work that +// applies to the whole line, and the measurement of the actual +// character. Functions like coordsChar, that need to do a lot of +// measurements in a row, can thus ensure that the set-up work is +// only done once. +function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line); + var view = findViewForLine(cm, lineN); + if (view && !view.text) { + view = null; + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)); + cm.curOp.forceUpdate = true; + } + if (!view) + { view = updateExternalMeasurement(cm, line); } + + var info = mapFromLineView(view, line, lineN); + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } +} + +// Given a prepared measurement object, measures the position of an +// actual character (or fetches it from the cache). +function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) { ch = -1; } + var key = ch + (bias || ""), found; + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key]; + } else { + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect(); } + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect); + prepared.hasHeights = true; + } + found = measureCharInner(cm, prepared, ch, bias); + if (!found.bogus) { prepared.cache[key] = found; } + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} +} + +var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; + +function nodeAndOffsetInLineMap(map$$1, ch, bias) { + var node, start, end, collapse, mStart, mEnd; + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map$$1.length; i += 3) { + mStart = map$$1[i]; + mEnd = map$$1[i + 1]; + if (ch < mStart) { + start = 0; end = 1; + collapse = "left"; + } else if (ch < mEnd) { + start = ch - mStart; + end = start + 1; + } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) { + end = mEnd - mStart; + start = end - 1; + if (ch >= mEnd) { collapse = "right"; } + } + if (start != null) { + node = map$$1[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias; } + if (bias == "left" && start == 0) + { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) { + node = map$$1[(i -= 3) + 2]; + collapse = "left"; + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) { + node = map$$1[(i += 3) + 2]; + collapse = "right"; + } } + break + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} +} + +function getUsefulRect(rects, bias) { + var rect = nullRect; + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect +} + +function measureCharInner(cm, prepared, ch, bias) { + var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); + var node = place.node, start = place.start, end = place.end, collapse = place.collapse; + + var rect; + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect(); } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); } + if (rect.left || rect.right || start == 0) { break } + end = start; + start = start - 1; + collapse = "right"; + } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right"; } + var rects; + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0]; } + else + { rect = node.getBoundingClientRect(); } + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0]; + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; } + else + { rect = nullRect; } + } + + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; + var mid = (rtop + rbot) / 2; + var heights = prepared.view.measure.heights; + var i = 0; + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) { result.bogus = true; } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } + + return result +} + +// Work around problem with bounding client rects on ranges being +// returned incorrectly when zoomed on IE10 and below. +function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } + var scaleX = screen.logicalXDPI / screen.deviceXDPI; + var scaleY = screen.logicalYDPI / screen.deviceYDPI; + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} +} + +function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {}; + lineView.measure.heights = null; + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {}; } } + } +} + +function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null; + removeChildren(cm.display.lineMeasure); + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]); } +} + +function clearCaches(cm) { + clearLineMeasurementCache(cm); + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; } + cm.display.lineNumChars = null; +} + +function pageScrollX() { + // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 + // which causes page_Offset and bounding client rects to use + // different reference viewports and invalidate our calculations. + if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) } + return window.pageXOffset || (document.documentElement || document.body).scrollLeft +} +function pageScrollY() { + if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) } + return window.pageYOffset || (document.documentElement || document.body).scrollTop +} + +function widgetTopHeight(lineObj) { + var height = 0; + if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) + { height += widgetHeight(lineObj.widgets[i]); } } } + return height +} + +// Converts a {top, bottom, left, right} box from line-local +// coordinates into another coordinate system. Context may be one of +// "line", "div" (display.lineDiv), "local"./null (editor), "window", +// or "page". +function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { + if (!includeWidgets) { + var height = widgetTopHeight(lineObj); + rect.top += height; rect.bottom += height; + } + if (context == "line") { return rect } + if (!context) { context = "local"; } + var yOff = heightAtLine(lineObj); + if (context == "local") { yOff += paddingTop(cm.display); } + else { yOff -= cm.display.viewOffset; } + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect(); + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); + rect.left += xOff; rect.right += xOff; + } + rect.top += yOff; rect.bottom += yOff; + return rect +} + +// Coverts a box from "div" coords to another coordinate system. +// Context may be "window", "page", "div", or "local"./null. +function fromCoordSystem(cm, coords, context) { + if (context == "div") { return coords } + var left = coords.left, top = coords.top; + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX(); + top -= pageScrollY(); + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect(); + left += localBox.left; + top += localBox.top; + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} +} + +function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) { lineObj = getLine(cm.doc, pos.line); } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) +} + +// Returns a box for a given cursor position, which may have an +// 'other' property containing the position of the secondary cursor +// on a bidi boundary. +// A cursor Pos(line, char, "before") is on the same visual line as `char - 1` +// and after `char - 1` in writing order of `char - 1` +// A cursor Pos(line, char, "after") is on the same visual line as `char` +// and before `char` in writing order of `char` +// Examples (upper-case letters are RTL, lower-case are LTR): +// Pos(0, 1, ...) +// before after +// ab a|b a|b +// aB a|B aB| +// Ab |Ab A|b +// AB B|A B|A +// Every position after the last character on a line is considered to stick +// to the last character on the line. +function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line); + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); + if (right) { m.left = m.right; } else { m.right = m.left; } + return intoCoordSystem(cm, lineObj, m, context) + } + var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky; + if (ch >= lineObj.text.length) { + ch = lineObj.text.length; + sticky = "before"; + } else if (ch <= 0) { + ch = 0; + sticky = "after"; + } + if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } + + function getBidi(ch, partPos, invert) { + var part = order[partPos], right = part.level == 1; + return get(invert ? ch - 1 : ch, right != invert) + } + var partPos = getBidiPartAt(order, ch, sticky); + var other = bidiOther; + var val = getBidi(ch, partPos, sticky == "before"); + if (other != null) { val.other = getBidi(ch, other, sticky != "before"); } + return val +} + +// Used to cheaply estimate the coordinates for a position. Used for +// intermediate scroll updates. +function estimateCoords(cm, pos) { + var left = 0; + pos = clipPos(cm.doc, pos); + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; } + var lineObj = getLine(cm.doc, pos.line); + var top = heightAtLine(lineObj) + paddingTop(cm.display); + return {left: left, right: left, top: top, bottom: top + lineObj.height} +} + +// Positions returned by coordsChar contain some extra information. +// xRel is the relative x position of the input coordinates compared +// to the found position (so xRel > 0 means the coordinates are to +// the right of the character position, for example). When outside +// is true, that means the coordinates lie outside the line's +// vertical range. +function PosWithInfo(line, ch, sticky, outside, xRel) { + var pos = Pos(line, ch, sticky); + pos.xRel = xRel; + if (outside) { pos.outside = true; } + return pos +} + +// Compute the character position closest to the given coordinates. +// Input must be lineSpace-local ("div" coordinate system). +function coordsChar(cm, x, y) { + var doc = cm.doc; + y += cm.display.viewOffset; + if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) } + if (x < 0) { x = 0; } + + var lineObj = getLine(doc, lineN); + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y); + var merged = collapsedSpanAtEnd(lineObj); + var mergedPos = merged && merged.find(0, true); + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + { lineN = lineNo(lineObj = mergedPos.to.line); } + else + { return found } + } +} + +function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { + y -= widgetTopHeight(lineObj); + var end = lineObj.text.length; + var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0); + end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end); + return {begin: begin, end: end} +} + +function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top; + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) +} + +// Returns true if the given side of a box is after the given +// coordinates, in top-to-bottom, left-to-right order. +function boxIsAfter(box, x, y, left) { + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x +} + +function coordsCharInner(cm, lineObj, lineNo$$1, x, y) { + // Move y into line-local coordinate space + y -= heightAtLine(lineObj); + var preparedMeasure = prepareMeasureForLine(cm, lineObj); + // When directly calling `measureCharPrepared`, we have to adjust + // for the widgets at this line. + var widgetHeight$$1 = widgetTopHeight(lineObj); + var begin = 0, end = lineObj.text.length, ltr = true; + + var order = getOrder(lineObj, cm.doc.direction); + // If the line isn't plain left-to-right text, first figure out + // which bidi section the coordinates fall into. + if (order) { + var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y); + ltr = part.level != 1; + // The awkward -1 offsets are needed because findFirst (called + // on these below) will treat its first bound as inclusive, + // second as exclusive, but we want to actually address the + // characters in the part's range + begin = ltr ? part.from : part.to - 1; + end = ltr ? part.to : part.from - 1; + } + + // A binary search to find the first character whose bounding box + // starts after the coordinates. If we run across any whose box wrap + // the coordinates, store that. + var chAround = null, boxAround = null; + var ch = findFirst(function (ch) { + var box = measureCharPrepared(cm, preparedMeasure, ch); + box.top += widgetHeight$$1; box.bottom += widgetHeight$$1; + if (!boxIsAfter(box, x, y, false)) { return false } + if (box.top <= y && box.left <= x) { + chAround = ch; + boxAround = box; + } + return true + }, begin, end); + + var baseX, sticky, outside = false; + // If a box around the coordinates was found, use that + if (boxAround) { + // Distinguish coordinates nearer to the left or right side of the box + var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr; + ch = chAround + (atStart ? 0 : 1); + sticky = atStart ? "after" : "before"; + baseX = atLeft ? boxAround.left : boxAround.right; + } else { + // (Adjust for extended bound, if necessary.) + if (!ltr && (ch == end || ch == begin)) { ch++; } + // To determine which side to associate with, get the box to the + // left of the character and compare it's vertical position to the + // coordinates + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ? + "after" : "before"; + // Now get accurate coordinates for this place, in order to get a + // base X position + var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), "line", lineObj, preparedMeasure); + baseX = coords.left; + outside = y < coords.top || y >= coords.bottom; + } + + ch = skipExtendingChars(lineObj.text, ch, 1); + return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX) +} + +function coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) { + // Bidi parts are sorted left-to-right, and in a non-line-wrapping + // situation, we can take this ordering to correspond to the visual + // ordering. This finds the first part whose end is after the given + // coordinates. + var index = findFirst(function (i) { + var part = order[i], ltr = part.level != 1; + return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1); + var part = order[index]; + // If this isn't the first part, the part's start is also after + // the coordinates, and the coordinates aren't on the same line as + // that start, move one part back. + if (index > 0) { + var ltr = part.level != 1; + var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure); + if (boxIsAfter(start, x, y, true) && start.top > y) + { part = order[index - 1]; } + } + return part +} + +function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { + // In a wrapped line, rtl text on wrapping boundaries can do things + // that don't correspond to the ordering in our `order` array at + // all, so a binary search doesn't work, and we want to return a + // part that only spans one line so that the binary search in + // coordsCharInner is safe. As such, we first find the extent of the + // wrapped line, and then do a flat search in which we discard any + // spans that aren't on the line. + var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); + var begin = ref.begin; + var end = ref.end; + if (/\s/.test(lineObj.text.charAt(end - 1))) { end--; } + var part = null, closestDist = null; + for (var i = 0; i < order.length; i++) { + var p = order[i]; + if (p.from >= end || p.to <= begin) { continue } + var ltr = p.level != 1; + var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; + // Weigh against spans ending before this, so that they are only + // picked if nothing ends after + var dist = endX < x ? x - endX + 1e9 : endX - x; + if (!part || closestDist > dist) { + part = p; + closestDist = dist; + } + } + if (!part) { part = order[order.length - 1]; } + // Clip the part to the wrapped line. + if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; } + if (part.to > end) { part = {from: part.from, to: end, level: part.level}; } + return part +} + +var measureText; +// Compute the default text height. +function textHeight(display) { + if (display.cachedTextHeight != null) { return display.cachedTextHeight } + if (measureText == null) { + measureText = elt("pre"); + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); + } + measureText.appendChild(document.createTextNode("x")); + } + removeChildrenAndAdd(display.measure, measureText); + var height = measureText.offsetHeight / 50; + if (height > 3) { display.cachedTextHeight = height; } + removeChildren(display.measure); + return height || 1 +} + +// Compute the default character width. +function charWidth(display) { + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor]); + removeChildrenAndAdd(display.measure, pre); + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) { display.cachedCharWidth = width; } + return width || 10 +} + +// Do a bulk-read of the DOM positions and sizes needed to draw the +// view, so that we don't interleave reading and writing to the DOM. +function getDimensions(cm) { + var d = cm.display, left = {}, width = {}; + var gutterLeft = d.gutters.clientLeft; + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; + width[cm.options.gutters[i]] = n.clientWidth; + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} +} + +// Computes display.scroller.scrollLeft + display.gutters.offsetWidth, +// but using getBoundingClientRect to get a sub-pixel-accurate +// result. +function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left +} + +// Returns a function that estimates the height of a line, to use as +// first approximation until the line becomes visible (and is thus +// properly measurable). +function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + return function (line) { + if (lineIsHidden(cm.doc, line)) { return 0 } + + var widgetsHeight = 0; + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; } + } } + + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } +} + +function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm); + doc.iter(function (line) { + var estHeight = est(line); + if (estHeight != line.height) { updateLineHeight(line, estHeight); } + }); +} + +// Given a mouse event, find the corresponding position. If liberal +// is false, it checks whether a gutter or scrollbar was clicked, +// and returns null if it was. forRect is used by rectangular +// selections, and tries to estimate a character position even for +// coordinates beyond the right of the text. +function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display; + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } + + var x, y, space = display.lineSpace.getBoundingClientRect(); + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e) { return null } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords +} + +// Find the view element corresponding to a given line. Return null +// when the line isn't visible. +function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) { return null } + n -= cm.display.viewFrom; + if (n < 0) { return null } + var view = cm.display.view; + for (var i = 0; i < view.length; i++) { + n -= view[i].size; + if (n < 0) { return i } + } +} + +function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()); +} + +function prepareSelection(cm, primary) { + if ( primary === void 0 ) primary = true; + + var doc = cm.doc, result = {}; + var curFragment = result.cursors = document.createDocumentFragment(); + var selFragment = result.selection = document.createDocumentFragment(); + + for (var i = 0; i < doc.sel.ranges.length; i++) { + if (!primary && i == doc.sel.primIndex) { continue } + var range$$1 = doc.sel.ranges[i]; + if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue } + var collapsed = range$$1.empty(); + if (collapsed || cm.options.showCursorWhenSelecting) + { drawSelectionCursor(cm, range$$1.head, curFragment); } + if (!collapsed) + { drawSelectionRange(cm, range$$1, selFragment); } + } + return result +} + +// Draws a cursor for the given range +function drawSelectionCursor(cm, head, output) { + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; + } +} + +function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } + +// Draws the given range as a highlighted selection +function drawSelectionRange(cm, range$$1, output) { + var display = cm.display, doc = cm.doc; + var fragment = document.createDocumentFragment(); + var padding = paddingH(cm.display), leftSide = padding.left; + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; + var docLTR = doc.direction == "ltr"; + + function add(left, top, width, bottom) { + if (top < 0) { top = 0; } + top = Math.round(top); + bottom = Math.round(bottom); + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))); + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line); + var lineLen = lineObj.text.length; + var start, end; + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) + } + + function wrapX(pos, dir, side) { + var extent = wrappedLineExtentChar(cm, lineObj, null, pos); + var prop = (dir == "ltr") == (side == "after") ? "left" : "right"; + var ch = side == "after" ? extent.begin : extent.end - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); + return coords(ch, prop)[prop] + } + + var order = getOrder(lineObj, doc.direction); + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { + var ltr = dir == "ltr"; + var fromPos = coords(from, ltr ? "left" : "right"); + var toPos = coords(to - 1, ltr ? "right" : "left"); + + var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen; + var first = i == 0, last = !order || i == order.length - 1; + if (toPos.top - fromPos.top <= 3) { // Single line + var openLeft = (docLTR ? openStart : openEnd) && first; + var openRight = (docLTR ? openEnd : openStart) && last; + var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; + var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; + add(left, fromPos.top, right - left, fromPos.bottom); + } else { // Multiple lines + var topLeft, topRight, botLeft, botRight; + if (ltr) { + topLeft = docLTR && openStart && first ? leftSide : fromPos.left; + topRight = docLTR ? rightSide : wrapX(from, dir, "before"); + botLeft = docLTR ? leftSide : wrapX(to, dir, "after"); + botRight = docLTR && openEnd && last ? rightSide : toPos.right; + } else { + topLeft = !docLTR ? leftSide : wrapX(from, dir, "before"); + topRight = !docLTR && openStart && first ? rightSide : fromPos.right; + botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; + botRight = !docLTR ? rightSide : wrapX(to, dir, "after"); + } + add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); } + add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + } + + if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; } + if (cmpCoords(toPos, start) < 0) { start = toPos; } + if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; } + if (cmpCoords(toPos, end) < 0) { end = toPos; } + }); + return {start: start, end: end} + } + + var sFrom = range$$1.from(), sTo = range$$1.to(); + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch); + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); + var singleVLine = visualLine(fromLine) == visualLine(toLine); + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); + } + } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top); } + } + + output.appendChild(fragment); +} + +// Cursor-blinking +function restartBlink(cm) { + if (!cm.state.focused) { return } + var display = cm.display; + clearInterval(display.blinker); + var on = true; + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, + cm.options.cursorBlinkRate); } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden"; } +} + +function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } +} + +function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true; + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false; + onBlur(cm); + } }, 100); +} + +function onFocus(cm, e) { + if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; } + + if (cm.options.readOnly == "nocursor") { return } + if (!cm.state.focused) { + signal(cm, "focus", cm, e); + cm.state.focused = true; + addClass(cm.display.wrapper, "CodeMirror-focused"); + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset(); + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730 + } + cm.display.input.receivedFocus(); + } + restartBlink(cm); +} +function onBlur(cm, e) { + if (cm.state.delayingBlurEvent) { return } + + if (cm.state.focused) { + signal(cm, "blur", cm, e); + cm.state.focused = false; + rmClass(cm.display.wrapper, "CodeMirror-focused"); + } + clearInterval(cm.display.blinker); + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150); +} + +// Read the actual heights of the rendered lines, and update their +// stored heights to match. +function updateHeightsInViewport(cm) { + var display = cm.display; + var prevBottom = display.lineDiv.offsetTop; + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], height = (void 0); + if (cur.hidden) { continue } + if (ie && ie_version < 8) { + var bot = cur.node.offsetTop + cur.node.offsetHeight; + height = bot - prevBottom; + prevBottom = bot; + } else { + var box = cur.node.getBoundingClientRect(); + height = box.bottom - box.top; + } + var diff = cur.line.height - height; + if (height < 2) { height = textHeight(display); } + if (diff > .005 || diff < -.005) { + updateLineHeight(cur.line, height); + updateWidgetHeight(cur.line); + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]); } } + } + } +} + +// Read and store the height of line widgets associated with the +// given line. +function updateWidgetHeight(line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) { + var w = line.widgets[i], parent = w.node.parentNode; + if (parent) { w.height = parent.offsetHeight; } + } } +} + +// Compute the lines that are visible in a given viewport (defaults +// the the current scroll position). viewport may contain top, +// height, and ensure (see op.scrollToPos) properties. +function visibleLines(display, doc, viewport) { + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; + top = Math.floor(top - paddingTop(display)); + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; + if (ensureFrom < from) { + from = ensureFrom; + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); + to = ensureTo; + } + } + return {from: from, to: Math.max(to, from + 1)} +} + +// Re-align line numbers and gutter marks to compensate for +// horizontal scrolling. +function alignHorizontally(cm) { + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left; } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left; } + } + var align = view[i].alignable; + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left; } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px"; } +} + +// Used to ensure that the line number gutter is still the right +// size for the current document size. Returns true when an update +// is needed. +function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; + display.lineNumWidth = display.lineNumInnerWidth + padding; + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; + display.lineGutter.style.width = display.lineNumWidth + "px"; + updateGutterSpace(cm); + return true + } + return false +} + +// SCROLLING THINGS INTO VIEW + +// If an editor sits on the top or bottom of the window, partially +// scrolled out of view, this ensures that the cursor is visible. +function maybeScrollWindow(cm, rect) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } + + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + if (rect.top + box.top < 0) { doScroll = true; } + else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; } + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")); + cm.display.lineSpace.appendChild(scrollNode); + scrollNode.scrollIntoView(doScroll); + cm.display.lineSpace.removeChild(scrollNode); + } +} + +// Scroll a given position into view (immediately), verifying that +// it actually became visible (as line heights are accurately +// measured, the position of something may 'drift' during drawing). +function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) { margin = 0; } + var rect; + if (!cm.options.lineWrapping && pos == end) { + // Set pos and end to the cursor positions around the character pos sticks to + // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch + // If pos == Pos(_, 0, "before"), pos and end are unchanged + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos; + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos; + } + for (var limit = 0; limit < 5; limit++) { + var changed = false; + var coords = cursorCoords(cm, pos); + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin}; + var scrollPos = calculateScrollPos(cm, rect); + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; + if (scrollPos.scrollTop != null) { + updateScrollTop(cm, scrollPos.scrollTop); + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; } + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft); + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; } + } + if (!changed) { break } + } + return rect +} + +// Scroll a given set of coordinates into view (immediately). +function scrollIntoView(cm, rect) { + var scrollPos = calculateScrollPos(cm, rect); + if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); } +} + +// Calculate a new scroll position needed to scroll the given +// rectangle into view. Returns an object with scrollTop and +// scrollLeft properties. When these are undefined, the +// vertical/horizontal position does not need to be adjusted. +function calculateScrollPos(cm, rect) { + var display = cm.display, snapMargin = textHeight(cm.display); + if (rect.top < 0) { rect.top = 0; } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = displayHeight(cm), result = {}; + if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; } + var docBottom = cm.doc.height + paddingVert(display); + var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin; + if (rect.top < screentop) { + result.scrollTop = atTop ? 0 : rect.top; + } else if (rect.bottom > screentop + screen) { + var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen); + if (newTop != screentop) { result.scrollTop = newTop; } + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; + var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); + var tooWide = rect.right - rect.left > screenw; + if (tooWide) { rect.right = rect.left + screenw; } + if (rect.left < 10) + { result.scrollLeft = 0; } + else if (rect.left < screenleft) + { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); } + else if (rect.right > screenw + screenleft - 3) + { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; } + return result +} + +// Store a relative adjustment to the scroll position in the current +// operation (to be applied when the operation finishes). +function addToScrollTop(cm, top) { + if (top == null) { return } + resolveScrollToPos(cm); + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; +} + +// Make sure that at the end of the operation the current cursor is +// shown. +function ensureCursorVisible(cm) { + resolveScrollToPos(cm); + var cur = cm.getCursor(); + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin}; +} + +function scrollToCoords(cm, x, y) { + if (x != null || y != null) { resolveScrollToPos(cm); } + if (x != null) { cm.curOp.scrollLeft = x; } + if (y != null) { cm.curOp.scrollTop = y; } +} + +function scrollToRange(cm, range$$1) { + resolveScrollToPos(cm); + cm.curOp.scrollToPos = range$$1; +} + +// When an operation has its scrollToPos property set, and another +// scroll action is applied before the end of the operation, this +// 'simulates' scrolling that position into view in a cheap way, so +// that the effect of intermediate scroll commands is not ignored. +function resolveScrollToPos(cm) { + var range$$1 = cm.curOp.scrollToPos; + if (range$$1) { + cm.curOp.scrollToPos = null; + var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to); + scrollToCoordsRange(cm, from, to, range$$1.margin); + } +} + +function scrollToCoordsRange(cm, from, to, margin) { + var sPos = calculateScrollPos(cm, { + left: Math.min(from.left, to.left), + top: Math.min(from.top, to.top) - margin, + right: Math.max(from.right, to.right), + bottom: Math.max(from.bottom, to.bottom) + margin + }); + scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop); +} + +// Sync the scrollable area and scrollbars, ensure the viewport +// covers the visible area. +function updateScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + if (!gecko) { updateDisplaySimple(cm, {top: val}); } + setScrollTop(cm, val, true); + if (gecko) { updateDisplaySimple(cm); } + startWorker(cm, 100); +} + +function setScrollTop(cm, val, forceScroll) { + val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val); + if (cm.display.scroller.scrollTop == val && !forceScroll) { return } + cm.doc.scrollTop = val; + cm.display.scrollbars.setScrollTop(val); + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; } +} + +// Sync scroller and scrollbar, ensure the gutter elements are +// aligned. +function setScrollLeft(cm, val, isScroller, forceScroll) { + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } + cm.doc.scrollLeft = val; + alignHorizontally(cm); + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; } + cm.display.scrollbars.setScrollLeft(val); +} + +// SCROLLBARS + +// Prepare DOM reads needed to update the scrollbars. Done in one +// shot to minimize update/measure roundtrips. +function measureForScrollbars(cm) { + var d = cm.display, gutterW = d.gutters.offsetWidth; + var docH = Math.round(cm.doc.height + paddingVert(cm.display)); + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + } +} + +var NativeScrollbars = function(place, scroll, cm) { + this.cm = cm; + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); + place(vert); place(horiz); + + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical"); } + }); + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal"); } + }); + + this.checkedZeroWidth = false; + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } +}; + +NativeScrollbars.prototype.update = function (measure) { + var needsH = measure.scrollWidth > measure.clientWidth + 1; + var needsV = measure.scrollHeight > measure.clientHeight + 1; + var sWidth = measure.nativeBarWidth; + + if (needsV) { + this.vert.style.display = "block"; + this.vert.style.bottom = needsH ? sWidth + "px" : "0"; + var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; + } else { + this.vert.style.display = ""; + this.vert.firstChild.style.height = "0"; + } + + if (needsH) { + this.horiz.style.display = "block"; + this.horiz.style.right = needsV ? sWidth + "px" : "0"; + this.horiz.style.left = measure.barLeft + "px"; + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); + this.horiz.firstChild.style.width = + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; + } else { + this.horiz.style.display = ""; + this.horiz.firstChild.style.width = "0"; + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) { this.zeroWidthHack(); } + this.checkedZeroWidth = true; + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} +}; + +NativeScrollbars.prototype.setScrollLeft = function (pos) { + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz"); } +}; + +NativeScrollbars.prototype.setScrollTop = function (pos) { + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert"); } +}; + +NativeScrollbars.prototype.zeroWidthHack = function () { + var w = mac && !mac_geMountainLion ? "12px" : "18px"; + this.horiz.style.height = this.vert.style.width = w; + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; + this.disableHoriz = new Delayed; + this.disableVert = new Delayed; +}; + +NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { + bar.style.pointerEvents = "auto"; + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // right corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + var box = bar.getBoundingClientRect(); + var elt$$1 = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1); + if (elt$$1 != bar) { bar.style.pointerEvents = "none"; } + else { delay.set(1000, maybeDisable); } + } + delay.set(1000, maybeDisable); +}; + +NativeScrollbars.prototype.clear = function () { + var parent = this.horiz.parentNode; + parent.removeChild(this.horiz); + parent.removeChild(this.vert); +}; + +var NullScrollbars = function () {}; + +NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; +NullScrollbars.prototype.setScrollLeft = function () {}; +NullScrollbars.prototype.setScrollTop = function () {}; +NullScrollbars.prototype.clear = function () {}; + +function updateScrollbars(cm, measure) { + if (!measure) { measure = measureForScrollbars(cm); } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; + updateScrollbarsInner(cm, measure); + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm); } + updateScrollbarsInner(cm, measureForScrollbars(cm)); + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; + } +} + +// Re-synchronize the fake scrollbars with the actual size of the +// content. +function updateScrollbarsInner(cm, measure) { + var d = cm.display; + var sizes = d.scrollbars.update(measure); + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent"; + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = sizes.bottom + "px"; + d.scrollbarFiller.style.width = sizes.right + "px"; + } else { d.scrollbarFiller.style.display = ""; } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = sizes.bottom + "px"; + d.gutterFiller.style.width = measure.gutterWidth + "px"; + } else { d.gutterFiller.style.display = ""; } +} + +var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; + +function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear(); + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } + } + + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); } + }); + node.setAttribute("cm-not-content", "true"); + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos); } + else { updateScrollTop(cm, pos); } + }, cm); + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } +} + +// Operations are used to wrap a series of changes to the editor +// state in such a way that each change won't have to update the +// cursor and display (which would be awkward, slow, and +// error-prone). Instead, display updates are batched and then all +// combined and executed at once. + +var nextOpId = 0; +// Start a new operation. +function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + }; + pushOperation(cm.curOp); +} + +// Finish an operation, updating the display and signalling delayed events +function endOperation(cm) { + var op = cm.curOp; + finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null; } + endOperations(group); + }); +} + +// The DOM updates done when an operation finishes are batched so +// that the minimum number of relayouts are required. +function endOperations(group) { + var ops = group.ops; + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]); } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]); } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]); } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]); } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]); } +} + +function endOperation_R1(op) { + var cm = op.cm, display = cm.display; + maybeClipScrollbars(cm); + if (op.updateMaxLine) { findMaxLine(cm); } + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping; + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); +} + +function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); +} + +function endOperation_R2(op) { + var cm = op.cm, display = cm.display; + if (op.updatedDisplay) { updateHeightsInViewport(cm); } + + op.barMeasure = measureForScrollbars(cm); + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; + cm.display.sizerWidth = op.adjustWidthTo; + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); + } + + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection(); } +} + +function endOperation_W2(op) { + var cm = op.cm; + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); } + cm.display.maxLineChanged = false; + } + + var takeFocus = op.focus && op.focus == activeElt(); + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus); } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure); } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure); } + + if (op.selectionChanged) { restartBlink(cm); } + + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing); } + if (takeFocus) { ensureFocus(op.cm); } +} + +function endOperation_finish(op) { + var cm = op.cm, display = cm.display, doc = cm.doc; + + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); } + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null; } + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); } + + if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); + maybeScrollWindow(cm, rect); + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide"); } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide"); } } } + + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop; } + + // Fire change events, and delayed event handlers + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs); } + if (op.update) + { op.update.finish(); } +} + +// Run the given function in an operation +function runInOp(cm, f) { + if (cm.curOp) { return f() } + startOperation(cm); + try { return f() } + finally { endOperation(cm); } +} +// Wraps a function in an operation. Returns the wrapped function. +function operation(cm, f) { + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } + startOperation(cm); + try { return f.apply(cm, arguments) } + finally { endOperation(cm); } + } +} +// Used to add methods to editor and doc instances, wrapping them in +// operations. +function methodOp(f) { + return function() { + if (this.curOp) { return f.apply(this, arguments) } + startOperation(this); + try { return f.apply(this, arguments) } + finally { endOperation(this); } + } +} +function docMethodOp(f) { + return function() { + var cm = this.cm; + if (!cm || cm.curOp) { return f.apply(this, arguments) } + startOperation(cm); + try { return f.apply(this, arguments) } + finally { endOperation(cm); } + } +} + +// Updates the display.view data structure for a given change to the +// document. From and to are in pre-change coordinates. Lendiff is +// the amount of lines added or subtracted by the change. This is +// used for changes that span multiple lines, or change the way +// lines are divided into visual lines. regLineChange (below) +// registers single-line changes. +function regChange(cm, from, to, lendiff) { + if (from == null) { from = cm.doc.first; } + if (to == null) { to = cm.doc.first + cm.doc.size; } + if (!lendiff) { lendiff = 0; } + + var display = cm.display; + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from; } + + cm.curOp.viewChanged = true; + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm); } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm); + } else { + display.viewFrom += lendiff; + display.viewTo += lendiff; + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm); + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cut) { + display.view = display.view.slice(cut.index); + display.viewFrom = cut.lineN; + display.viewTo += lendiff; + } else { + resetView(cm); + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut$1 = viewCuttingPoint(cm, from, from, -1); + if (cut$1) { + display.view = display.view.slice(0, cut$1.index); + display.viewTo = cut$1.lineN; + } else { + resetView(cm); + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1); + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)); + display.viewTo += lendiff; + } else { + resetView(cm); + } + } + + var ext = display.externalMeasured; + if (ext) { + if (to < ext.lineN) + { ext.lineN += lendiff; } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null; } + } +} + +// Register a change to a single line. Type must be one of "text", +// "gutter", "class", "widget" +function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true; + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null; } + + if (line < display.viewFrom || line >= display.viewTo) { return } + var lineView = display.view[findViewIndex(cm, line)]; + if (lineView.node == null) { return } + var arr = lineView.changes || (lineView.changes = []); + if (indexOf(arr, type) == -1) { arr.push(type); } +} + +// Clear the view. +function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first; + cm.display.view = []; + cm.display.viewOffset = 0; +} + +function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } + var n = cm.display.viewFrom; + for (var i = 0; i < index; i++) + { n += view[i].size; } + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN; + index++; + } else { + diff = n - oldN; + } + oldN += diff; newN += diff; + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } + newN += dir * view[index - (dir < 0 ? 1 : 0)].size; + index += dir; + } + return {index: index, lineN: newN} +} + +// Force the view to cover a given range, adding empty view element +// or clipping off existing ones as needed. +function adjustView(cm, from, to) { + var display = cm.display, view = display.view; + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to); + display.viewFrom = from; + } else { + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)); } + display.viewFrom = from; + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)); } + } + display.viewTo = to; +} + +// Count the number of lines in the view whose DOM representation is +// out of date (or nonexistent). +function countDirtyView(cm) { + var view = cm.display.view, dirty = 0; + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; } + } + return dirty +} + +// HIGHLIGHT WORKER + +function startWorker(cm, time) { + if (cm.doc.highlightFrontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)); } +} + +function highlightWorker(cm) { + var doc = cm.doc; + if (doc.highlightFrontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime; + var context = getContextBefore(cm, doc.highlightFrontier); + var changedLines = []; + + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (context.line >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles; + var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null; + var highlighted = highlightLine(cm, line, context, true); + if (resetState) { context.state = resetState; } + line.styles = highlighted.styles; + var oldCls = line.styleClasses, newCls = highlighted.classes; + if (newCls) { line.styleClasses = newCls; } + else if (oldCls) { line.styleClasses = null; } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; } + if (ischange) { changedLines.push(context.line); } + line.stateAfter = context.save(); + context.nextLine(); + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, context); } + line.stateAfter = context.line % 5 == 0 ? context.save() : null; + context.nextLine(); + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true + } + }); + doc.highlightFrontier = context.line; + doc.modeFrontier = Math.max(doc.modeFrontier, context.line); + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text"); } + }); } +} + +// DISPLAY DRAWING + +var DisplayUpdate = function(cm, viewport, force) { + var display = cm.display; + + this.viewport = viewport; + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport); + this.editorIsHidden = !display.wrapper.offsetWidth; + this.wrapperHeight = display.wrapper.clientHeight; + this.wrapperWidth = display.wrapper.clientWidth; + this.oldDisplayWidth = displayWidth(cm); + this.force = force; + this.dims = getDimensions(cm); + this.events = []; +}; + +DisplayUpdate.prototype.signal = function (emitter, type) { + if (hasHandler(emitter, type)) + { this.events.push(arguments); } +}; +DisplayUpdate.prototype.finish = function () { + var this$1 = this; + + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this$1.events[i]); } +}; + +function maybeClipScrollbars(cm) { + var display = cm.display; + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; + display.heightForcer.style.height = scrollGap(cm) + "px"; + display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; + display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; + display.scrollbarsClipped = true; + } +} + +function selectionSnapshot(cm) { + if (cm.hasFocus()) { return null } + var active = activeElt(); + if (!active || !contains(cm.display.lineDiv, active)) { return null } + var result = {activeElt: active}; + if (window.getSelection) { + var sel = window.getSelection(); + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { + result.anchorNode = sel.anchorNode; + result.anchorOffset = sel.anchorOffset; + result.focusNode = sel.focusNode; + result.focusOffset = sel.focusOffset; + } + } + return result +} + +function restoreSelection(snapshot) { + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return } + snapshot.activeElt.focus(); + if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + var sel = window.getSelection(), range$$1 = document.createRange(); + range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset); + range$$1.collapse(false); + sel.removeAllRanges(); + sel.addRange(range$$1); + sel.extend(snapshot.focusNode, snapshot.focusOffset); + } +} + +// Does the actual updating of the line display. Bails out +// (returning false) when there is nothing to be done and forced is +// false. +function updateDisplayIfNeeded(cm, update) { + var display = cm.display, doc = cm.doc; + + if (update.editorIsHidden) { + resetView(cm); + return false + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm); + update.dims = getDimensions(cm); + } + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size; + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); + var to = Math.min(end, update.visible.to + cm.options.viewportMargin); + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); } + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from); + to = visualLineEndNo(cm.doc, to); + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; + adjustView(cm, from, to); + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px"; + + var toUpdate = countDirtyView(cm); + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var selSnapshot = selectionSnapshot(cm); + if (toUpdate > 4) { display.lineDiv.style.display = "none"; } + patchDisplay(cm, display.updateLineNumbers, update.dims); + if (toUpdate > 4) { display.lineDiv.style.display = ""; } + display.renderedView = display.view; + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + restoreSelection(selSnapshot); + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv); + removeChildren(display.selectionDiv); + display.gutters.style.height = display.sizer.style.minHeight = 0; + + if (different) { + display.lastWrapHeight = update.wrapperHeight; + display.lastWrapWidth = update.wrapperWidth; + startWorker(cm, 400); + } + + display.updateLineNumbers = null; + + return true +} + +function postUpdateDisplay(cm, update) { + var viewport = update.viewport; + + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; } + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport); + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } + if (!updateDisplayIfNeeded(cm, update)) { break } + updateHeightsInViewport(cm); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + updateScrollbars(cm, barMeasure); + setDocumentHeight(cm, barMeasure); + update.force = false; + } + + update.signal(cm, "update", cm); + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; + } +} + +function updateDisplaySimple(cm, viewport) { + var update = new DisplayUpdate(cm, viewport); + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm); + postUpdateDisplay(cm, update); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + updateScrollbars(cm, barMeasure); + setDocumentHeight(cm, barMeasure); + update.finish(); + } +} + +// Sync the actual display DOM structure with display.view, removing +// nodes for lines that are no longer in view, and creating the ones +// that are not there yet, and updating the ones that are out of +// date. +function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; + + function rm(node) { + var next = node.nextSibling; + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none"; } + else + { node.parentNode.removeChild(node); } + return next + } + + var view = display.view, lineN = display.viewFrom; + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (lineView.hidden) { + } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims); + container.insertBefore(node, cur); + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur); } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false; } + updateLineForChanges(cm, lineView, lineN, dims); + } + if (updateNumber) { + removeChildren(lineView.lineNumber); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); + } + cur = lineView.node.nextSibling; + } + lineN += lineView.size; + } + while (cur) { cur = rm(cur); } +} + +function updateGutterSpace(cm) { + var width = cm.display.gutters.offsetWidth; + cm.display.sizer.style.marginLeft = width + "px"; +} + +function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px"; + cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; +} + +// Rebuild the gutter elements, ensure the margin to the left of the +// code matches their width. +function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters; + removeChildren(gutters); + var i = 0; + for (; i < specs.length; ++i) { + var gutterClass = specs[i]; + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt; + gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; + } + } + gutters.style.display = i ? "" : "none"; + updateGutterSpace(cm); +} + +// Make sure the gutters options contains the element +// "CodeMirror-linenumbers" when the lineNumbers option is true. +function setGuttersForLineNumbers(options) { + var found = indexOf(options.gutters, "CodeMirror-linenumbers"); + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0); + options.gutters.splice(found, 1); + } +} + +// Since the delta values reported on mouse wheel events are +// unstandardized between browsers and even browser versions, and +// generally horribly unpredictable, this code starts by measuring +// the scroll effect that the first few mouse wheel events have, +// and, from that, detects the way it can convert deltas to pixel +// offsets afterwards. +// +// The reason we want to know the amount a wheel event will scroll +// is that it gives us a chance to update the display before the +// actual scrolling happens, reducing flickering. + +var wheelSamples = 0; +var wheelPixelsPerUnit = null; +// Fill in a browser-detected starting value on browsers where we +// know one. These don't have to be accurate -- the result of them +// being wrong would just be a slight flicker on the first wheel +// scroll (if it is large enough). +if (ie) { wheelPixelsPerUnit = -.53; } +else if (gecko) { wheelPixelsPerUnit = 15; } +else if (chrome) { wheelPixelsPerUnit = -.7; } +else if (safari) { wheelPixelsPerUnit = -1/3; } + +function wheelEventDelta(e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; } + else if (dy == null) { dy = e.wheelDelta; } + return {x: dx, y: dy} +} +function wheelEventPixels(e) { + var delta = wheelEventDelta(e); + delta.x *= wheelPixelsPerUnit; + delta.y *= wheelPixelsPerUnit; + return delta +} + +function onScrollWheel(cm, e) { + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; + + var display = cm.display, scroll = display.scroller; + // Quit if there's nothing to scroll here + var canScrollX = scroll.scrollWidth > scroll.clientWidth; + var canScrollY = scroll.scrollHeight > scroll.clientHeight; + if (!(dx && canScrollX || dy && canScrollY)) { return } + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur; + break outer + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); } + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + { e_preventDefault(e); } + display.wheelStartX = null; // Abort measurement, if in progress + return + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) { top = Math.max(0, top + pixels - 50); } + else { bot = Math.min(cm.doc.height, bot + pixels + 50); } + updateDisplaySimple(cm, {top: top, bottom: bot}); + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; + setTimeout(function () { + if (display.wheelStartX == null) { return } + var movedX = scroll.scrollLeft - display.wheelStartX; + var movedY = scroll.scrollTop - display.wheelStartY; + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX); + display.wheelStartX = display.wheelStartY = null; + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + ++wheelSamples; + }, 200); + } else { + display.wheelDX += dx; display.wheelDY += dy; + } + } +} + +// Selection objects are immutable. A new one is created every time +// the selection changes. A selection is one or more non-overlapping +// (and non-touching) ranges, sorted, and an integer that indicates +// which one is the primary selection (the one that's scrolled into +// view, that getCursor returns, etc). +var Selection = function(ranges, primIndex) { + this.ranges = ranges; + this.primIndex = primIndex; +}; + +Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; + +Selection.prototype.equals = function (other) { + var this$1 = this; + + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } + for (var i = 0; i < this.ranges.length; i++) { + var here = this$1.ranges[i], there = other.ranges[i]; + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } + } + return true +}; + +Selection.prototype.deepCopy = function () { + var this$1 = this; + + var out = []; + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); } + return new Selection(out, this.primIndex) +}; + +Selection.prototype.somethingSelected = function () { + var this$1 = this; + + for (var i = 0; i < this.ranges.length; i++) + { if (!this$1.ranges[i].empty()) { return true } } + return false +}; + +Selection.prototype.contains = function (pos, end) { + var this$1 = this; + + if (!end) { end = pos; } + for (var i = 0; i < this.ranges.length; i++) { + var range = this$1.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } + } + return -1 +}; + +var Range = function(anchor, head) { + this.anchor = anchor; this.head = head; +}; + +Range.prototype.from = function () { return minPos(this.anchor, this.head) }; +Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; +Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; + +// Take an unsorted, potentially overlapping set of ranges, and +// build a selection out of it. 'Consumes' ranges array (modifying +// it). +function normalizeSelection(ranges, primIndex) { + var prim = ranges[primIndex]; + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }); + primIndex = indexOf(ranges, prim); + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1]; + if (cmp(prev.to(), cur.from()) >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) { --primIndex; } + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); + } + } + return new Selection(ranges, primIndex) +} + +function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0) +} + +// Compute the position of the end of a change (its 'to' property +// refers to the pre-change end). +function changeEnd(change) { + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) +} + +// Adjust a position to refer to the post-change position of the +// same text, or the end of the change if the change covers it. +function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; } + return Pos(line, ch) +} + +function computeSelAfterChange(doc, change) { + var out = []; + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); + } + return normalizeSelection(out, doc.sel.primIndex) +} + +function offsetPos(pos, old, nw) { + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } +} + +// Used by replaceSelections to allow moving the selection to the +// start or around the replaced test. Hint may be "start" or "around". +function computeReplacedSel(doc, changes, hint) { + var out = []; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + var from = offsetPos(change.from, oldPrev, newPrev); + var to = offsetPos(changeEnd(change), oldPrev, newPrev); + oldPrev = change.to; + newPrev = to; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; + out[i] = new Range(inv ? to : from, inv ? from : to); + } else { + out[i] = new Range(from, from); + } + } + return new Selection(out, doc.sel.primIndex) +} + +// Used to get the editor into a consistent state again when options change. + +function loadMode(cm) { + cm.doc.mode = getMode(cm.options, cm.doc.modeOption); + resetModeState(cm); +} + +function resetModeState(cm) { + cm.doc.iter(function (line) { + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + }); + cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first; + startWorker(cm, 100); + cm.state.modeGen++; + if (cm.curOp) { regChange(cm); } +} + +// DOCUMENT DATA STRUCTURE + +// By default, updates that start and end at the beginning of a line +// are treated specially, in order to make the association of line +// widgets and marker elements with the text behave more intuitive. +function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore) +} + +// Perform a change on the document data structure. +function updateDoc(doc, change, markedSpans, estimateHeight$$1) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight$$1); + signalLater(line, "change", line, change); + } + function linesFor(start, end) { + var result = []; + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); } + return result + } + + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)); + doc.remove(text.length, doc.size - text.length); + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = linesFor(0, text.length - 1); + update(lastLine, lastLine.text, lastSpans); + if (nlines) { doc.remove(from.line, nlines); } + if (added.length) { doc.insert(from.line, added); } + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); + } else { + var added$1 = linesFor(1, text.length - 1); + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + doc.insert(from.line + 1, added$1); + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); + doc.remove(from.line + 1, nlines); + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); + var added$2 = linesFor(1, text.length - 1); + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); } + doc.insert(from.line + 1, added$2); + } + + signalLater(doc, "change", doc, change); +} + +// Call f for all linked documents. +function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } } + } + propagate(doc, null, true); +} + +// Attach a document to an editor. +function attachDoc(cm, doc) { + if (doc.cm) { throw new Error("This document is already in use.") } + cm.doc = doc; + doc.cm = cm; + estimateLineHeights(cm); + loadMode(cm); + setDirectionClass(cm); + if (!cm.options.lineWrapping) { findMaxLine(cm); } + cm.options.mode = doc.modeOption; + regChange(cm); +} + +function setDirectionClass(cm) { + (cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl"); +} + +function directionChanged(cm) { + runInOp(cm, function () { + setDirectionClass(cm); + regChange(cm); + }); +} + +function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = []; + this.undoDepth = Infinity; + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0; + this.lastOp = this.lastSelOp = null; + this.lastOrigin = this.lastSelOrigin = null; + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1; +} + +// Create a history change event from an updateDoc-style change +// object. +function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true); + return histChange +} + +// Pop all selection events off the end of a history array. Stop at +// a change event. +function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array); + if (last.ranges) { array.pop(); } + else { break } + } +} + +// Find the top change event in the history. Pop off selection +// events that are in the way. +function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done); + return lst(hist.done) + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop(); + return lst(hist.done) + } +} + +// Register a change in the history. Merges changes that are within +// a single operation, or are close together with an origin that +// allows merging (starting with "+") into a single event. +function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history; + hist.undone.length = 0; + var time = +new Date, cur; + var last; + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + last = lst(cur.changes); + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change); + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)); + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done); + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done); } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; + hist.done.push(cur); + while (hist.done.length > hist.undoDepth) { + hist.done.shift(); + if (!hist.done[0].ranges) { hist.done.shift(); } + } + } + hist.done.push(selAfter); + hist.generation = ++hist.maxGeneration; + hist.lastModTime = hist.lastSelTime = time; + hist.lastOp = hist.lastSelOp = opId; + hist.lastOrigin = hist.lastSelOrigin = change.origin; + + if (!last) { signal(doc, "historyAdded"); } +} + +function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) +} + +// Called whenever the selection changes, sets the new selection as +// the pending selection in the history, and pushes the old pending +// selection into the 'done' array when it was significantly +// different (in number of selected ranges, emptiness, or time). +function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin; + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel; } + else + { pushSelectionToHistory(sel, hist.done); } + + hist.lastSelTime = +new Date; + hist.lastSelOrigin = origin; + hist.lastSelOp = opId; + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone); } +} + +function pushSelectionToHistory(sel, dest) { + var top = lst(dest); + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel); } +} + +// Used to store marked span information in the history. +function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; } + ++n; + }); +} + +// When un/re-doing restores text containing marked spans, those +// that have been explicitly cleared should not be restored. +function removeClearedSpans(spans) { + if (!spans) { return null } + var out; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } } + else if (out) { out.push(spans[i]); } + } + return !out ? spans : out.length ? out : null +} + +// Retrieve and filter the old marked spans stored in a change event. +function getOldSpans(doc, change) { + var found = change["spans_" + doc.id]; + if (!found) { return null } + var nw = []; + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])); } + return nw +} + +// Used for un/re-doing changes from the history. Combines the +// result of computing the existing spans with the set of spans that +// existed in the history (so that deleting around a span and then +// undoing brings back the span). +function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change); + var stretched = stretchSpansOverChange(doc, change); + if (!old) { return stretched } + if (!stretched) { return old } + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i]; + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j]; + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } + oldCur.push(span); + } + } else if (stretchCur) { + old[i] = stretchCur; + } + } + return old +} + +// Used both to provide a JSON-safe object in .getHistory, and, when +// detaching a document, to split the history in two +function copyHistoryArray(events, newGroup, instantiateSel) { + var copy = []; + for (var i = 0; i < events.length; ++i) { + var event = events[i]; + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m = (void 0); + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; + } + } } } + } + } + return copy +} + +// The 'scroll' parameter given to many of these indicated whether +// the new cursor position should be scrolled into view after +// modifying the selection. + +// If shift is held or the extend flag is set, extends a range to +// include a given position (and optionally a second position). +// Otherwise, simply returns the range between the given positions. +// Used for cursor motion and such. +function extendRange(range, head, other, extend) { + if (extend) { + var anchor = range.anchor; + if (other) { + var posBefore = cmp(head, anchor) < 0; + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head; + head = other; + } else if (posBefore != (cmp(head, other) < 0)) { + head = other; + } + } + return new Range(anchor, head) + } else { + return new Range(other || head, head) + } +} + +// Extend the primary selection range, discard the rest. +function extendSelection(doc, head, other, options, extend) { + if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); } + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options); +} + +// Extend all selections (pos is an array of selections with length +// equal the number of selections) +function extendSelections(doc, heads, options) { + var out = []; + var extend = doc.cm && (doc.cm.display.shift || doc.extend); + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); } + var newSel = normalizeSelection(out, doc.sel.primIndex); + setSelection(doc, newSel, options); +} + +// Updates a single range in the selection. +function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0); + ranges[i] = range; + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); +} + +// Reset the selection to a single range. +function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options); +} + +// Give beforeSelectionChange handlers a change to influence a +// selection update. +function filterSelectionChange(doc, sel, options) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + var this$1 = this; + + this.ranges = []; + for (var i = 0; i < ranges.length; i++) + { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); } + }, + origin: options && options.origin + }; + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); } + if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) } + else { return sel } +} + +function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done); + if (last && last.ranges) { + done[done.length - 1] = sel; + setSelectionNoUndo(doc, sel, options); + } else { + setSelection(doc, sel, options); + } +} + +// Set a new selection. +function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); +} + +function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options); } + + var bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); + + if (!(options && options.scroll === false) && doc.cm) + { ensureCursorVisible(doc.cm); } +} + +function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) { return } + + doc.sel = sel; + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; + signalCursorActivity(doc.cm); + } + signalLater(doc, "cursorActivity", doc); +} + +// Verify that the selection does not partially select any atomic +// marked ranges. +function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false)); +} + +// Return a selection that does not partially select any atomic +// ranges. +function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); + var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) { out = sel.ranges.slice(0, i); } + out[i] = new Range(newAnchor, newHead); + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel +} + +function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + var line = getLine(doc, pos.line); + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} + } + } + if (!m.atomic) { continue } + + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0); + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } + } + + var far = m.find(dir < 0 ? -1 : 1); + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null); } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null + } + } } + return pos +} + +// Ensure a given position is not inside an atomic range. +function skipAtomic(doc, pos, oldPos, bias, mayClear) { + var dir = bias || 1; + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); + if (!found) { + doc.cantEdit = true; + return Pos(doc.first, 0) + } + return found +} + +function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } + } else { + return new Pos(pos.line, pos.ch + dir) + } +} + +function selectAll(cm) { + cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll); +} + +// UPDATING + +// Allow "beforeChange" event handlers to influence a change +function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function () { return obj.canceled = true; } + }; + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from); } + if (to) { obj.to = clipPos(doc, to); } + if (text) { obj.text = text; } + if (origin !== undefined) { obj.origin = origin; } + }; } + signal(doc, "beforeChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj); } + + if (obj.canceled) { return null } + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} +} + +// Apply a change to a document, and add it to the document's +// history, and propagating it to all linked documents. +function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true); + if (!change) { return } + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); + if (split) { + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}); } + } else { + makeChangeInner(doc, change); + } +} + +function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } + var selAfter = computeSelAfterChange(doc, change); + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); + var rebased = []; + + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); + }); +} + +// Revert a change stored in a document's history. +function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return } + + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + var i = 0; + for (; i < source.length; i++) { + event = source[i]; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } + } + if (i == source.length) { return } + hist.lastOrigin = hist.lastSelOrigin = null; + + for (;;) { + event = source.pop(); + if (event.ranges) { + pushSelectionToHistory(event, dest); + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}); + return + } + selAfter = event; + } + else { break } + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = []; + pushSelectionToHistory(selAfter, dest); + dest.push({changes: antiChanges, generation: hist.generation}); + hist.generation = event.generation || ++hist.maxGeneration; + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); + + var loop = function ( i ) { + var change = event.changes[i]; + change.origin = type; + if (filter && !filterChange(doc, change, false)) { + source.length = 0; + return {} + } + + antiChanges.push(historyChangeFromChange(doc, change)); + + var after = i ? computeSelAfterChange(doc, change) : lst(source); + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); } + var rebased = []; + + // Propagate to the linked documents + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); + }); + }; + + for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { + var returned = loop( i$1 ); + + if ( returned ) return returned.v; + } +} + +// Sub-views need their line numbers shifted when text is added +// above or below them in the parent document. +function shiftDoc(doc, distance) { + if (distance == 0) { return } + doc.first += distance; + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex); + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance); + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter"); } + } +} + +// More lower-level change function, handling only a single document +// (not linked ones). +function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return + } + if (change.from.line > doc.lastLine()) { return } + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line); + shiftDoc(doc, shift); + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; + } + var last = doc.lastLine(); + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; + } + + change.removed = getBetween(doc, change.from, change.to); + + if (!selAfter) { selAfter = computeSelAfterChange(doc, change); } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); } + else { updateDoc(doc, change, spans); } + setSelectionNoUndo(doc, selAfter, sel_dontScroll); +} + +// Handle the interaction of a change to a document with the editor +// that this document is part of. +function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; + + var recomputeMaxLength = false, checkWidthStart = from.line; + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); + doc.iter(checkWidthStart, to.line + 1, function (line) { + if (line == display.maxLine) { + recomputeMaxLength = true; + return true + } + }); + } + + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm); } + + updateDoc(doc, change, spans, estimateHeight(cm)); + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; } + } + + retreatFrontier(doc, from.line); + startWorker(cm, 400); + + var lendiff = change.text.length - (to.line - from.line) - 1; + // Remember that these lines changed, for updating the display + if (change.full) + { regChange(cm); } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text"); } + else + { regChange(cm, from.line, to.line + 1, lendiff); } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + }; + if (changeHandler) { signalLater(cm, "change", cm, obj); } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } + } + cm.display.selForContextMenu = null; +} + +function replaceRange(doc, code, from, to, origin) { + if (!to) { to = from; } + if (cmp(to, from) < 0) { var assign; + (assign = [to, from], from = assign[0], to = assign[1], assign); } + if (typeof code == "string") { code = doc.splitLines(code); } + makeChange(doc, {from: from, to: to, text: code, origin: origin}); +} + +// Rebasing/resetting history to deal with externally-sourced changes + +function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff; + } else if (from < pos.line) { + pos.line = from; + pos.ch = 0; + } +} + +// Tries to rebase an array of history events given a change in the +// document. If the change touches the same lines as the event, the +// event, and everything 'behind' it, is discarded. If the change is +// before the event, the event's positions are updated. Uses a +// copy-on-write scheme for the positions, to avoid having to +// reallocate them all on every rebase, but also avoid problems with +// shared position objects being unsafely updated. +function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true; + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); + } + continue + } + for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { + var cur = sub.changes[j$1]; + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch); + cur.to = Pos(cur.to.line + diff, cur.to.ch); + } else if (from <= cur.to.line) { + ok = false; + break + } + } + if (!ok) { + array.splice(0, i + 1); + i = 0; + } + } +} + +function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; + rebaseHistArray(hist.done, from, to, diff); + rebaseHistArray(hist.undone, from, to, diff); +} + +// Utility for applying a change to a line by handle or number, +// returning the number and optionally registering the line as +// changed. +function changeLine(doc, handle, changeType, op) { + var no = handle, line = handle; + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)); } + else { no = lineNo(handle); } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); } + return line +} + +// The document is represented as a BTree consisting of leaves, with +// chunk of lines in them, and branches, with up to ten leaves or +// other branch nodes below them. The top node is always a branch +// node, and is the document object itself (meaning it has +// additional methods and properties). +// +// All nodes have parent links. The tree is used both to go from +// line numbers to line objects, and to go from objects to numbers. +// It also indexes by height, and is used to convert between height +// and line object, and to find the total height of the document. +// +// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + +function LeafChunk(lines) { + var this$1 = this; + + this.lines = lines; + this.parent = null; + var height = 0; + for (var i = 0; i < lines.length; ++i) { + lines[i].parent = this$1; + height += lines[i].height; + } + this.height = height; +} + +LeafChunk.prototype = { + chunkSize: function chunkSize() { return this.lines.length }, + + // Remove the n lines at offset 'at'. + removeInner: function removeInner(at, n) { + var this$1 = this; + + for (var i = at, e = at + n; i < e; ++i) { + var line = this$1.lines[i]; + this$1.height -= line.height; + cleanUpLine(line); + signalLater(line, "delete"); + } + this.lines.splice(at, n); + }, + + // Helper used to collapse a small branch into a single leaf. + collapse: function collapse(lines) { + lines.push.apply(lines, this.lines); + }, + + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function insertInner(at, lines, height) { + var this$1 = this; + + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; } + }, + + // Used to iterate over a part of the tree. + iterN: function iterN(at, n, op) { + var this$1 = this; + + for (var e = at + n; at < e; ++at) + { if (op(this$1.lines[at])) { return true } } + } +}; + +function BranchChunk(children) { + var this$1 = this; + + this.children = children; + var size = 0, height = 0; + for (var i = 0; i < children.length; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this$1; + } + this.size = size; + this.height = height; + this.parent = null; +} + +BranchChunk.prototype = { + chunkSize: function chunkSize() { return this.size }, + + removeInner: function removeInner(at, n) { + var this$1 = this; + + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.removeInner(at, rm); + this$1.height -= oldHeight - child.height; + if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) { break } + at = 0; + } else { at -= sz; } + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + + collapse: function collapse(lines) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); } + }, + + insertInner: function insertInner(at, lines, height) { + var this$1 = this; + + this.size += lines.length; + this.height += height; + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertInner(at, lines, height); + if (child.lines && child.lines.length > 50) { + // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. + // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. + var remaining = child.lines.length % 25 + 25; + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); + child.height -= leaf.height; + this$1.children.splice(++i, 0, leaf); + leaf.parent = this$1; + } + child.lines = child.lines.slice(0, remaining); + this$1.maybeSpill(); + } + break + } + at -= sz; + } + }, + + // When a node has grown, check whether it should be split. + maybeSpill: function maybeSpill() { + if (this.children.length <= 10) { return } + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10) + me.parent.maybeSpill(); + }, + + iterN: function iterN(at, n, op) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } + at = 0; + } else { at -= sz; } + } + } +}; + +// Line widgets are block elements displayed above or below a line. + +var LineWidget = function(doc, node, options) { + var this$1 = this; + + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this$1[opt] = options[opt]; } } } + this.doc = doc; + this.node = node; +}; + +LineWidget.prototype.clear = function () { + var this$1 = this; + + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } } + if (!ws.length) { line.widgets = null; } + var height = widgetHeight(this); + updateLineHeight(line, Math.max(0, line.height - height)); + if (cm) { + runInOp(cm, function () { + adjustScrollWhenAboveVisible(cm, line, -height); + regLineChange(cm, no, "widget"); + }); + signalLater(cm, "lineWidgetCleared", cm, this, no); + } +}; + +LineWidget.prototype.changed = function () { + var this$1 = this; + + var oldH = this.height, cm = this.doc.cm, line = this.line; + this.height = null; + var diff = widgetHeight(this) - oldH; + if (!diff) { return } + updateLineHeight(line, line.height + diff); + if (cm) { + runInOp(cm, function () { + cm.curOp.forceUpdate = true; + adjustScrollWhenAboveVisible(cm, line, diff); + signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)); + }); + } +}; +eventMixin(LineWidget); + +function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollTop(cm, diff); } +} + +function addLineWidget(doc, handle, node, options) { + var widget = new LineWidget(doc, node, options); + var cm = doc.cm; + if (cm && widget.noHScroll) { cm.display.alignWidgets = true; } + changeLine(doc, handle, "widget", function (line) { + var widgets = line.widgets || (line.widgets = []); + if (widget.insertAt == null) { widgets.push(widget); } + else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); } + widget.line = line; + if (cm && !lineIsHidden(doc, line)) { + var aboveVisible = heightAtLine(line) < doc.scrollTop; + updateLineHeight(line, line.height + widgetHeight(widget)); + if (aboveVisible) { addToScrollTop(cm, widget.height); } + cm.curOp.forceUpdate = true; + } + return true + }); + signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)); + return widget +} + +// TEXTMARKERS + +// Created with markText and setBookmark methods. A TextMarker is a +// handle that can be used to clear or find a marked position in the +// document. Line objects hold arrays (markedSpans) containing +// {from, to, marker} object pointing to such marker objects, and +// indicating that such a marker is present on that line. Multiple +// lines may point to the same marker when it spans across lines. +// The spans will have null for their from/to properties when the +// marker continues beyond the start/end of the line. Markers have +// links back to the lines they currently touch. + +// Collapsed markers have unique ids, in order to be able to order +// them, which is needed for uniquely determining an outer marker +// when they overlap (they may nest, but not partially overlap). +var nextMarkerId = 0; + +var TextMarker = function(doc, type) { + this.lines = []; + this.type = type; + this.doc = doc; + this.id = ++nextMarkerId; +}; + +// Clear the marker. +TextMarker.prototype.clear = function () { + var this$1 = this; + + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) { startOperation(cm); } + if (hasHandler(this, "clear")) { + var found = this.find(); + if (found) { signalLater(this, "clear", found.from, found.to); } + } + var min = null, max = null; + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this$1); + if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), "text"); } + else if (cm) { + if (span.to != null) { max = lineNo(line); } + if (span.from != null) { min = lineNo(line); } + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span); + if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)); } + } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } } + + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); } + this.lines.length = 0; + this.explicitlyCleared = true; + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false; + if (cm) { reCheckSelection(cm.doc); } + } + if (cm) { signalLater(cm, "markerCleared", cm, this, min, max); } + if (withOp) { endOperation(cm); } + if (this.parent) { this.parent.clear(); } +}; + +// Find the position of the marker in the document. Returns a {from, +// to} object by default. Side can be passed to get a specific side +// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the +// Pos objects returned contain a line object, rather than a line +// number (used to prevent looking up the same line twice). +TextMarker.prototype.find = function (side, lineObj) { + var this$1 = this; + + if (side == null && this.type == "bookmark") { side = 1; } + var from, to; + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this$1); + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from); + if (side == -1) { return from } + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to); + if (side == 1) { return to } + } + } + return from && {from: from, to: to} +}; + +// Signals that the marker's widget changed, and surrounding layout +// should be recomputed. +TextMarker.prototype.changed = function () { + var this$1 = this; + + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) { return } + runInOp(cm, function () { + var line = pos.line, lineN = lineNo(pos.line); + var view = findViewForLine(cm, lineN); + if (view) { + clearLineMeasurementCacheFor(view); + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; + } + cm.curOp.updateMaxLine = true; + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height; + widget.height = null; + var dHeight = widgetHeight(widget) - oldHeight; + if (dHeight) + { updateLineHeight(line, line.height + dHeight); } + } + signalLater(cm, "markerChanged", cm, this$1); + }); +}; + +TextMarker.prototype.attachLine = function (line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } + } + this.lines.push(line); +}; + +TextMarker.prototype.detachLine = function (line) { + this.lines.splice(indexOf(this.lines, line), 1); + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + } +}; +eventMixin(TextMarker); + +// Create a marker, wire it up to the right lines, and +function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } + + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) { copyObj(options, marker, false); } + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true; + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true"); } + if (options.insertLeft) { marker.widgetNode.insertLeft = true; } + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } + seeCollapsedSpans(); + } + + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); } + + var curLine = from.line, cm = doc.cm, updateMaxLine; + doc.iter(curLine, to.line + 1, function (line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true; } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)); + ++curLine; + }); + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); } + }); } + + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }); } + + if (marker.readOnly) { + seeReadOnlySpans(); + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory(); } + } + if (marker.collapsed) { + marker.id = ++nextMarkerId; + marker.atomic = true; + } + if (cm) { + // Sync editor state + if (updateMaxLine) { cm.curOp.updateMaxLine = true; } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1); } + else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text"); } } + if (marker.atomic) { reCheckSelection(cm.doc); } + signalLater(cm, "markerAdded", cm, marker); + } + return marker +} + +// SHARED TEXTMARKERS + +// A shared marker spans multiple linked documents. It is +// implemented as a meta-marker-object controlling multiple normal +// markers. +var SharedTextMarker = function(markers, primary) { + var this$1 = this; + + this.markers = markers; + this.primary = primary; + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this$1; } +}; + +SharedTextMarker.prototype.clear = function () { + var this$1 = this; + + if (this.explicitlyCleared) { return } + this.explicitlyCleared = true; + for (var i = 0; i < this.markers.length; ++i) + { this$1.markers[i].clear(); } + signalLater(this, "clear"); +}; + +SharedTextMarker.prototype.find = function (side, lineObj) { + return this.primary.find(side, lineObj) +}; +eventMixin(SharedTextMarker); + +function markTextShared(doc, from, to, options, type) { + options = copyObj(options); + options.shared = false; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; + var widget = options.widgetNode; + linkedDocs(doc, function (doc) { + if (widget) { options.widgetNode = widget.cloneNode(true); } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } + primary = lst(markers); + }); + return new SharedTextMarker(markers, primary) +} + +function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) +} + +function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); + marker.markers.push(subMark); + subMark.parent = marker; + } + } +} + +function detachSharedMarkers(markers) { + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc]; + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }); + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j]; + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null; + marker.markers.splice(j--, 1); + } + } + }; + + for (var i = 0; i < markers.length; i++) loop( i ); +} + +var nextDocId = 0; +var Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } + if (firstLine == null) { firstLine = 0; } + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); + this.first = firstLine; + this.scrollTop = this.scrollLeft = 0; + this.cantEdit = false; + this.cleanGeneration = 1; + this.modeFrontier = this.highlightFrontier = firstLine; + var start = Pos(firstLine, 0); + this.sel = simpleSelection(start); + this.history = new History(null); + this.id = ++nextDocId; + this.modeOption = mode; + this.lineSep = lineSep; + this.direction = (direction == "rtl") ? "rtl" : "ltr"; + this.extend = false; + + if (typeof text == "string") { text = this.splitLines(text); } + updateDoc(this, {from: start, to: start, text: text}); + setSelection(this, simpleSelection(start), sel_dontScroll); +}; + +Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op); } + else { this.iterN(this.first, this.first + this.size, from); } + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0; + for (var i = 0; i < lines.length; ++i) { height += lines[i].height; } + this.insertInner(at - this.first, lines, height); + }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true); + if (this.cm) { scrollToCoords(this.cm, 0, 0); } + setSelection(this, simpleSelection(top), sel_dontScroll); + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from); + to = to ? clipPos(this, to) : from; + replaceRange(this, code, from, to, origin); + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, + + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line); } + return visualLine(line) + }, + + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, + + clipPos: function(pos) {return clipPos(this, pos)}, + + getCursor: function(start) { + var range$$1 = this.sel.primary(), pos; + if (start == null || start == "head") { pos = range$$1.head; } + else if (start == "anchor") { pos = range$$1.anchor; } + else if (start == "end" || start == "to" || start === false) { pos = range$$1.to(); } + else { pos = range$$1.from(); } + return pos + }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options); + }), + extendSelectionsBy: docMethodOp(function(f, options) { + var heads = map(this.sel.ranges, f); + extendSelections(this, clipPosArray(this, heads), options); + }), + setSelections: docMethodOp(function(ranges, primary, options) { + var this$1 = this; + + if (!ranges.length) { return } + var out = []; + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this$1, ranges[i].anchor), + clipPos(this$1, ranges[i].head)); } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); } + setSelection(this, normalizeSelection(out, primary), options); + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); + }), + + getSelection: function(lineSep) { + var this$1 = this; + + var ranges = this.sel.ranges, lines; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); + lines = lines ? lines.concat(sel) : sel; + } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } + }, + getSelections: function(lineSep) { + var this$1 = this; + + var parts = [], ranges = this.sel.ranges; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); } + parts[i] = sel; + } + return parts + }, + replaceSelection: function(code, collapse, origin) { + var dup = []; + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code; } + this.replaceSelections(dup, collapse, origin || "+input"); + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var this$1 = this; + + var changes = [], sel = this.sel; + for (var i = 0; i < sel.ranges.length; i++) { + var range$$1 = sel.ranges[i]; + changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this$1, changes[i$1]); } + if (newSel) { setSelectionReplaceHistory(this, newSel); } + else if (this.cm) { ensureCursorVisible(this.cm); } + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } } + return {undo: done, redo: undone} + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration);}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true); + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; } + return this.history.generation + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration) + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration); + hist.done = copyHistoryArray(histData.done.slice(0), null, true); + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); + }, + + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}); + markers[gutterID] = value; + if (!value && isEmpty(markers)) { line.gutterMarkers = null; } + return true + }) + }), + + clearGutter: docMethodOp(function(gutterID) { + var this$1 = this; + + this.iter(function (line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + changeLine(this$1, line, "gutter", function () { + line.gutterMarkers[gutterID] = null; + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; } + return true + }); + } + }); + }), + + lineInfo: function(line) { + var n; + if (typeof line == "number") { + if (!isLine(this, line)) { return null } + n = line; + line = getLine(this, line); + if (!line) { return null } + } else { + n = lineNo(line); + if (n == null) { return null } + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + if (!line[prop]) { line[prop] = cls; } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls; } + return true + }) + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) { return false } + else if (cls == null) { line[prop] = null; } + else { + var found = cur.match(classTest(cls)); + if (!found) { return false } + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true + }) + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) + }), + removeLineWidget: function(widget) { widget.clear(); }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents}; + pos = clipPos(this, pos); + return markText(this, pos, pos, realOpts, "bookmark") + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos); + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker); } + } } + return markers + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo$$1 = from.line; + this.iter(from.line, to.line + 1, function (line) { + var spans = line.markedSpans; + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to || + span.from == null && lineNo$$1 != from.line || + span.from != null && lineNo$$1 == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker); } + } } + ++lineNo$$1; + }); + return found + }, + getAllMarks: function() { + var markers = []; + this.iter(function (line) { + var sps = line.markedSpans; + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker); } } } + }); + return markers + }, + + posFromIndex: function(off) { + var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length; + this.iter(function (line) { + var sz = line.text.length + sepSize; + if (sz > off) { ch = off; return true } + off -= sz; + ++lineNo$$1; + }); + return clipPos(this, Pos(lineNo$$1, ch)) + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords); + var index = coords.ch; + if (coords.line < this.first || coords.ch < 0) { return 0 } + var sepSize = this.lineSeparator().length; + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value + index += line.text.length + sepSize; + }); + return index + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; + doc.sel = this.sel; + doc.extend = false; + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth; + doc.setHistory(this.getHistory()); + } + return doc + }, + + linkedDoc: function(options) { + if (!options) { options = {}; } + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) { from = options.from; } + if (options.to != null && options.to < to) { to = options.to; } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction); + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; + copySharedMarkers(copy, findSharedMarkers(this)); + return copy + }, + unlinkDoc: function(other) { + var this$1 = this; + + if (other instanceof CodeMirror$1) { other = other.doc; } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this$1.linked[i]; + if (link.doc != other) { continue } + this$1.linked.splice(i, 1); + other.unlinkDoc(this$1); + detachSharedMarkers(findSharedMarkers(this$1)); + break + } } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id]; + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true); + other.history = new History(null); + other.history.done = copyHistoryArray(this.history.done, splitIds); + other.history.undone = copyHistoryArray(this.history.undone, splitIds); + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, + + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, + + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) + }, + lineSeparator: function() { return this.lineSep || "\n" }, + + setDirection: docMethodOp(function (dir) { + if (dir != "rtl") { dir = "ltr"; } + if (dir == this.direction) { return } + this.direction = dir; + this.iter(function (line) { return line.order = null; }); + if (this.cm) { directionChanged(this.cm); } + }) +}); + +// Public alias. +Doc.prototype.eachLine = Doc.prototype.iter; + +// Kludge to work around strange IE behavior where it'll sometimes +// re-fire a series of drag-related events right after the drop (#1551) +var lastDrop = 0; + +function onDrop(e) { + var cm = this; + clearDragCursor(cm); + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } + e_preventDefault(e); + if (ie) { lastDrop = +new Date; } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || cm.isReadOnly()) { return } + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + var loadFile = function (file, i) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) + { return } + + var reader = new FileReader; + reader.onload = operation(cm, function () { + var content = reader.result; + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { content = ""; } + text[i] = content; + if (++read == n) { + pos = clipPos(cm.doc, pos); + var change = {from: pos, to: pos, + text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), + origin: "paste"}; + makeChange(cm.doc, change); + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); + } + }); + reader.readAsText(file); + }; + for (var i = 0; i < n; ++i) { loadFile(files[i], i); } + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e); + // Ensure the editor is re-focused + setTimeout(function () { return cm.display.input.focus(); }, 20); + return + } + try { + var text$1 = e.dataTransfer.getData("Text"); + if (text$1) { + var selected; + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections(); } + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag"); } } + cm.replaceSelection(text$1, "around", "paste"); + cm.display.input.focus(); + } + } + catch(e){} + } +} + +function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } + + e.dataTransfer.setData("Text", cm.getSelection()); + e.dataTransfer.effectAllowed = "copyMove"; + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + if (presto) { + img.width = img.height = 1; + cm.display.wrapper.appendChild(img); + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop; + } + e.dataTransfer.setDragImage(img, 0, 0); + if (presto) { img.parentNode.removeChild(img); } + } +} + +function onDragOver(cm, e) { + var pos = posFromMouse(cm, e); + if (!pos) { return } + var frag = document.createDocumentFragment(); + drawSelectionCursor(cm, pos, frag); + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); + } + removeChildrenAndAdd(cm.display.dragCursor, frag); +} + +function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor); + cm.display.dragCursor = null; + } +} + +// These must be handled carefully, because naively registering a +// handler for each editor will cause the editors to never be +// garbage collected. + +function forEachCodeMirror(f) { + if (!document.getElementsByClassName) { return } + var byClass = document.getElementsByClassName("CodeMirror"); + for (var i = 0; i < byClass.length; i++) { + var cm = byClass[i].CodeMirror; + if (cm) { f(cm); } + } +} + +var globalsRegistered = false; +function ensureGlobalHandlers() { + if (globalsRegistered) { return } + registerGlobalHandlers(); + globalsRegistered = true; +} +function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + var resizeTimer; + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null; + forEachCodeMirror(onResize); + }, 100); } + }); + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", function () { return forEachCodeMirror(onBlur); }); +} +// Called when the window resizes +function onResize(cm) { + var d = cm.display; + if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) + { return } + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + d.scrollbarsClipped = false; + cm.setSize(); +} + +var keyNames = { + 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" +}; + +// Number keys +for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); } +// Alphabetic keys +for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); } +// Function keys +for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2; } + +var keyMap = {}; + +keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" +}; +// Note that the save and find-related commands aren't defined by +// default. User code or addons can define them. Unknown commands +// are simply ignored. +keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" +}; +// Very basic readline/emacs-style bindings, which are standard on Mac. +keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", + "Ctrl-O": "openLine" +}; +keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + fallthrough: ["basic", "emacsy"] +}; +keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + +// KEYMAP DISPATCH + +function normalizeKeyName(name) { + var parts = name.split(/-(?!$)/); + name = parts[parts.length - 1]; + var alt, ctrl, shift, cmd; + for (var i = 0; i < parts.length - 1; i++) { + var mod = parts[i]; + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; } + else if (/^a(lt)?$/i.test(mod)) { alt = true; } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; } + else if (/^s(hift)?$/i.test(mod)) { shift = true; } + else { throw new Error("Unrecognized modifier name: " + mod) } + } + if (alt) { name = "Alt-" + name; } + if (ctrl) { name = "Ctrl-" + name; } + if (cmd) { name = "Cmd-" + name; } + if (shift) { name = "Shift-" + name; } + return name +} + +// This is a kludge to keep keymaps mostly working as raw objects +// (backwards compatibility) while at the same time support features +// like normalization and multi-stroke key bindings. It compiles a +// new normalized keymap, and then updates the old object to reflect +// this. +function normalizeKeyMap(keymap) { + var copy = {}; + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname]; + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName); + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0); + if (i == keys.length - 1) { + name = keys.join(" "); + val = value; + } else { + name = keys.slice(0, i + 1).join(" "); + val = "..."; + } + var prev = copy[name]; + if (!prev) { copy[name] = val; } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } + } + delete keymap[keyname]; + } } + for (var prop in copy) { keymap[prop] = copy[prop]; } + return keymap +} + +function lookupKey(key, map$$1, handle, context) { + map$$1 = getKeyMap(map$$1); + var found = map$$1.call ? map$$1.call(key, context) : map$$1[key]; + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } + + if (map$$1.fallthrough) { + if (Object.prototype.toString.call(map$$1.fallthrough) != "[object Array]") + { return lookupKey(key, map$$1.fallthrough, handle, context) } + for (var i = 0; i < map$$1.fallthrough.length; i++) { + var result = lookupKey(key, map$$1.fallthrough[i], handle, context); + if (result) { return result } + } + } +} + +// Modifier key presses don't count as 'real' key presses for the +// purpose of keymap fallthrough. +function isModifierKey(value) { + var name = typeof value == "string" ? value : keyNames[value.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" +} + +function addModifierNames(name, event, noShift) { + var base = name; + if (event.altKey && base != "Alt") { name = "Alt-" + name; } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name; } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") { name = "Cmd-" + name; } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name; } + return name +} + +// Look up the name of a key as indicated by an event object. +function keyName(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) { return false } + var name = keyNames[event.keyCode]; + if (name == null || event.altGraphKey) { return false } + return addModifierNames(name, event, noShift) +} + +function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val +} + +// Helper for deleting text near the selection(s), used to implement +// backspace, delete, and similar functionality. +function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = []; + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]); + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop(); + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from; + break + } + } + kill.push(toKill); + } + // Next, remove those actual ranges. + runInOp(cm, function () { + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); } + ensureCursorVisible(cm); + }); +} + +function moveCharLogically(line, ch, dir) { + var target = skipExtendingChars(line.text, ch + dir, dir); + return target < 0 || target > line.text.length ? null : target +} + +function moveLogically(line, start, dir) { + var ch = moveCharLogically(line, start.ch, dir); + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") +} + +function endOfLine(visually, cm, lineObj, lineNo, dir) { + if (visually) { + var order = getOrder(lineObj, cm.doc.direction); + if (order) { + var part = dir < 0 ? lst(order) : order[0]; + var moveInStorageOrder = (dir < 0) == (part.level == 1); + var sticky = moveInStorageOrder ? "after" : "before"; + var ch; + // With a wrapped rtl chunk (possibly spanning multiple bidi parts), + // it could be that the last bidi part is not on the last visual line, + // since visual lines contain content order-consecutive chunks. + // Thus, in rtl, we are looking for the first (content-order) character + // in the rtl chunk that is on the last line (that is, the same line + // as the last (content-order) character). + if (part.level > 0 || cm.doc.direction == "rtl") { + var prep = prepareMeasureForLine(cm, lineObj); + ch = dir < 0 ? lineObj.text.length - 1 : 0; + var targetTop = measureCharPrepared(cm, prep, ch).top; + ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch); + if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1); } + } else { ch = dir < 0 ? part.to : part.from; } + return new Pos(lineNo, ch, sticky) + } + } + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") +} + +function moveVisually(cm, line, start, dir) { + var bidi = getOrder(line, cm.doc.direction); + if (!bidi) { return moveLogically(line, start, dir) } + if (start.ch >= line.text.length) { + start.ch = line.text.length; + start.sticky = "before"; + } else if (start.ch <= 0) { + start.ch = 0; + start.sticky = "after"; + } + var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos]; + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { + // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, + // nothing interesting happens. + return moveLogically(line, start, dir) + } + + var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); }; + var prep; + var getWrappedLineExtent = function (ch) { + if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } + prep = prep || prepareMeasureForLine(cm, line); + return wrappedLineExtentChar(cm, line, prep, ch) + }; + var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch); + + if (cm.doc.direction == "rtl" || part.level == 1) { + var moveInStorageOrder = (part.level == 1) == (dir < 0); + var ch = mv(start, moveInStorageOrder ? 1 : -1); + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { + // Case 2: We move within an rtl part or in an rtl editor on the same visual line + var sticky = moveInStorageOrder ? "before" : "after"; + return new Pos(start.line, ch, sticky) + } + } + + // Case 3: Could not move within this bidi part in this visual line, so leave + // the current bidi part + + var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { + var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after"); }; + + for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { + var part = bidi[partPos]; + var moveInStorageOrder = (dir > 0) == (part.level != 1); + var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1); + if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } + ch = moveInStorageOrder ? part.from : mv(part.to, -1); + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } + } + }; + + // Case 3a: Look for other bidi parts on the same visual line + var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent); + if (res) { return res } + + // Case 3b: Look for other bidi parts on the next visual line + var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); + if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)); + if (res) { return res } + } + + // Case 4: Nowhere to move + return null +} + +// Commands are parameter-less actions that can be performed on an +// editor, mostly used for keybindings. +var commands = { + selectAll: selectAll, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var leftPos = cm.coordsChar({left: 0, top: top}, "div"); + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + var pos = cm.coordsChar({left: 0, top: top}, "div"); + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "char"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, + insertSoftTab: function (cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from(); + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); + spaces.push(spaceStr(tabSize - col % tabSize)); + } + cm.replaceSelections(spaces); + }, + defaultTab: function (cm) { + if (cm.somethingSelected()) { cm.indentSelection("add"); } + else { cm.execCommand("insertTab"); } + }, + // Swap the two chars left and right of each selection's head. + // Move cursor behind the two swapped characters afterwards. + // + // Doesn't consider line feeds a character. + // Doesn't scan more than one line above to find a character. + // Doesn't do anything on an empty line. + // Doesn't do anything with non-empty selections. + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = []; + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1); + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose"); + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text; + if (prev) { + cur = new Pos(cur.line, 1); + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose"); + } + } + } + newSel.push(new Range(cur, cur)); + } + cm.setSelections(newSel); + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections(); + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input"); } + sels = cm.listSelections(); + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true); } + ensureCursorVisible(cm); + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } +}; + + +function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLine(line); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, visual, lineN, 1) +} +function lineEnd(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLineEnd(line); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, line, lineN, -1) +} +function lineStartSmart(cm, pos) { + var start = lineStart(cm, pos.line); + var line = getLine(cm.doc, start.line); + var order = getOrder(line, cm.doc.direction); + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)); + var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) + } + return start +} + +// Run a handler that was bound to a key. +function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) { return false } + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled(); + var prevShift = cm.display.shift, done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + if (dropShift) { cm.display.shift = false; } + done = bound(cm) != Pass; + } finally { + cm.display.shift = prevShift; + cm.state.suppressEdits = false; + } + return done +} + +function lookupKeyForEditor(cm, name, handle) { + for (var i = 0; i < cm.state.keyMaps.length; i++) { + var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); + if (result) { return result } + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) +} + +// Note that, despite the name, this function is also used to check +// for bound mouse clicks. + +var stopSeq = new Delayed; + +function dispatchKey(cm, name, e, handle) { + var seq = cm.state.keySeq; + if (seq) { + if (isModifierKey(name)) { return "handled" } + if (/\'$/.test(name)) + { cm.state.keySeq = null; } + else + { stopSeq.set(50, function () { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null; + cm.display.input.reset(); + } + }); } + if (dispatchKeyInner(cm, seq + " " + name, e, handle)) { return true } + } + return dispatchKeyInner(cm, name, e, handle) +} + +function dispatchKeyInner(cm, name, e, handle) { + var result = lookupKeyForEditor(cm, name, handle); + + if (result == "multi") + { cm.state.keySeq = name; } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e); } + + if (result == "handled" || result == "multi") { + e_preventDefault(e); + restartBlink(cm); + } + + return !!result +} + +// Handle a key from the keydown event. +function handleKeyBinding(cm, e) { + var name = keyName(e, true); + if (!name) { return false } + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) + } else { + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) + } +} + +// Handle a key from the keypress event +function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) +} + +var lastStoppedKey = null; +function onKeyDown(e) { + var cm = this; + cm.curOp.focus = activeElt(); + if (signalDOMEvent(cm, e)) { return } + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; } + var code = e.keyCode; + cm.display.shift = code == 16 || e.shiftKey; + var handled = handleKeyBinding(cm, e); + if (presto) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut"); } + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm); } +} + +function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv; + addClass(lineDiv, "CodeMirror-crosshair"); + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); + } + } + on(document, "keyup", up); + on(document, "mouseover", up); +} + +function onKeyUp(e) { + if (e.keyCode == 16) { this.doc.sel.shift = false; } + signalDOMEvent(this, e); +} + +function onKeyPress(e) { + var cm = this; + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + // Some browsers fire keypress events for backspace + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } + cm.display.input.onKeyPress(e); +} + +var DOUBLECLICK_DELAY = 400; + +var PastClick = function(time, pos, button) { + this.time = time; + this.pos = pos; + this.button = button; +}; + +PastClick.prototype.compare = function (time, pos, button) { + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button +}; + +var lastClick; +var lastDoubleClick; +function clickRepeat(pos, button) { + var now = +new Date; + if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { + lastClick = lastDoubleClick = null; + return "triple" + } else if (lastClick && lastClick.compare(now, pos, button)) { + lastDoubleClick = new PastClick(now, pos, button); + lastClick = null; + return "double" + } else { + lastClick = new PastClick(now, pos, button); + lastDoubleClick = null; + return "single" + } +} + +// A mouse down can be a single click, double click, triple click, +// start of selection drag, start of text drag, new cursor +// (ctrl-click), rectangle drag (alt-drag), or xwin +// middle-click-paste. Or it might be a click on something we should +// not interfere with, such as a scrollbar or widget. +function onMouseDown(e) { + var cm = this, display = cm.display; + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } + display.input.ensurePolled(); + display.shift = e.shiftKey; + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false; + setTimeout(function () { return display.scroller.draggable = true; }, 100); + } + return + } + if (clickInGutter(cm, e)) { return } + var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single"; + window.focus(); + + // #3261: make sure, that we're not starting a second selection + if (button == 1 && cm.state.selectingText) + { cm.state.selectingText(e); } + + if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } + + if (button == 1) { + if (pos) { leftButtonDown(cm, pos, repeat, e); } + else if (e_target(e) == display.scroller) { e_preventDefault(e); } + } else if (button == 2) { + if (pos) { extendSelection(cm.doc, pos); } + setTimeout(function () { return display.input.focus(); }, 20); + } else if (button == 3) { + if (captureRightClick) { onContextMenu(cm, e); } + else { delayBlurEvent(cm); } + } +} + +function handleMappedButton(cm, button, pos, repeat, event) { + var name = "Click"; + if (repeat == "double") { name = "Double" + name; } + else if (repeat == "triple") { name = "Triple" + name; } + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name; + + return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { + if (typeof bound == "string") { bound = commands[bound]; } + if (!bound) { return false } + var done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + done = bound(cm, pos) != Pass; + } finally { + cm.state.suppressEdits = false; + } + return done + }) +} + +function configureMouse(cm, repeat, event) { + var option = cm.getOption("configureMouse"); + var value = option ? option(cm, repeat, event) : {}; + if (value.unit == null) { + var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey; + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line"; + } + if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; } + if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; } + if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); } + return value +} + +function leftButtonDown(cm, pos, repeat, event) { + if (ie) { setTimeout(bind(ensureFocus, cm), 0); } + else { cm.curOp.focus = activeElt(); } + + var behavior = configureMouse(cm, repeat, event); + + var sel = cm.doc.sel, contained; + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + { leftButtonStartDrag(cm, event, pos, behavior); } + else + { leftButtonSelect(cm, event, pos, behavior); } +} + +// Start a text drag. When it ends, see if any dragging actually +// happen, and treat as a click if it didn't. +function leftButtonStartDrag(cm, event, pos, behavior) { + var display = cm.display, moved = false; + var dragEnd = operation(cm, function (e) { + if (webkit) { display.scroller.draggable = false; } + cm.state.draggingText = false; + off(document, "mouseup", dragEnd); + off(document, "mousemove", mouseMove); + off(display.scroller, "dragstart", dragStart); + off(display.scroller, "drop", dragEnd); + if (!moved) { + e_preventDefault(e); + if (!behavior.addNew) + { extendSelection(cm.doc, pos, null, null, behavior.extend); } + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if (webkit || ie && ie_version == 9) + { setTimeout(function () {document.body.focus(); display.input.focus();}, 20); } + else + { display.input.focus(); } + } + }); + var mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10; + }; + var dragStart = function () { return moved = true; }; + // Let the drag handler handle this. + if (webkit) { display.scroller.draggable = true; } + cm.state.draggingText = dragEnd; + dragEnd.copy = !behavior.moveOnDrag; + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop(); } + on(document, "mouseup", dragEnd); + on(document, "mousemove", mouseMove); + on(display.scroller, "dragstart", dragStart); + on(display.scroller, "drop", dragEnd); + + delayBlurEvent(cm); + setTimeout(function () { return display.input.focus(); }, 20); +} + +function rangeForUnit(cm, pos, unit) { + if (unit == "char") { return new Range(pos, pos) } + if (unit == "word") { return cm.findWordAt(pos) } + if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } + var result = unit(cm, pos); + return new Range(result.from, result.to) +} + +// Normal selection, as opposed to text dragging. +function leftButtonSelect(cm, event, start, behavior) { + var display = cm.display, doc = cm.doc; + e_preventDefault(event); + + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; + if (behavior.addNew && !behavior.extend) { + ourIndex = doc.sel.contains(start); + if (ourIndex > -1) + { ourRange = ranges[ourIndex]; } + else + { ourRange = new Range(start, start); } + } else { + ourRange = doc.sel.primary(); + ourIndex = doc.sel.primIndex; + } + + if (behavior.unit == "rectangle") { + if (!behavior.addNew) { ourRange = new Range(start, start); } + start = posFromMouse(cm, event, true, true); + ourIndex = -1; + } else { + var range$$1 = rangeForUnit(cm, start, behavior.unit); + if (behavior.extend) + { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); } + else + { ourRange = range$$1; } + } + + if (!behavior.addNew) { + ourIndex = 0; + setSelection(doc, new Selection([ourRange], 0), sel_mouse); + startSel = doc.sel; + } else if (ourIndex == -1) { + ourIndex = ranges.length; + setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}); + startSel = doc.sel; + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); + } + + var lastPos = start; + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) { return } + lastPos = pos; + + if (behavior.unit == "rectangle") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } + } + if (!ranges.length) { ranges.push(new Range(start, start)); } + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}); + cm.scrollIntoView(pos); + } else { + var oldRange = ourRange; + var range$$1 = rangeForUnit(cm, pos, behavior.unit); + var anchor = oldRange.anchor, head; + if (cmp(range$$1.anchor, anchor) > 0) { + head = range$$1.head; + anchor = minPos(oldRange.from(), range$$1.anchor); + } else { + head = range$$1.anchor; + anchor = maxPos(oldRange.to(), range$$1.head); + } + var ranges$1 = startSel.ranges.slice(0); + ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)); + setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse); + } + } + + var editorSize = display.wrapper.getBoundingClientRect(); + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0; + + function extend(e) { + var curCount = ++counter; + var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle"); + if (!cur) { return } + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt(); + extendTo(cur); + var visible = visibleLines(display, doc); + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); } + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside; + extend(e); + }), 50); } + } + } + + function done(e) { + cm.state.selectingText = false; + counter = Infinity; + e_preventDefault(e); + display.input.focus(); + off(document, "mousemove", move); + off(document, "mouseup", up); + doc.history.lastSelOrigin = null; + } + + var move = operation(cm, function (e) { + if (!e_button(e)) { done(e); } + else { extend(e); } + }); + var up = operation(cm, done); + cm.state.selectingText = up; + on(document, "mousemove", move); + on(document, "mouseup", up); +} + +// Used when mouse-selecting to adjust the anchor to the proper side +// of a bidi jump depending on the visual position of the head. +function bidiSimplify(cm, range$$1) { + var anchor = range$$1.anchor; + var head = range$$1.head; + var anchorLine = getLine(cm.doc, anchor.line); + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 } + var order = getOrder(anchorLine); + if (!order) { return range$$1 } + var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index]; + if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 } + var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); + if (boundary == 0 || boundary == order.length) { return range$$1 } + + // Compute the relative visual position of the head compared to the + // anchor (<0 is to the left, >0 to the right) + var leftSide; + if (head.line != anchor.line) { + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0; + } else { + var headIndex = getBidiPartAt(order, head.ch, head.sticky); + var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); + if (headIndex == boundary - 1 || headIndex == boundary) + { leftSide = dir < 0; } + else + { leftSide = dir > 0; } + } + + var usePart = order[boundary + (leftSide ? -1 : 0)]; + var from = leftSide == (usePart.level == 1); + var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before"; + return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head) +} + + +// Determines whether an event happened in the gutter, and fires the +// handlers for the corresponding event. +function gutterEvent(cm, e, type, prevent) { + var mX, mY; + if (e.touches) { + mX = e.touches[0].clientX; + mY = e.touches[0].clientY; + } else { + try { mX = e.clientX; mY = e.clientY; } + catch(e) { return false } + } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e); } + + var display = cm.display; + var lineBox = display.lineDiv.getBoundingClientRect(); + + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } + mY -= lineBox.top - display.viewOffset; + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i]; + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY); + var gutter = cm.options.gutters[i]; + signal(cm, type, cm, line, gutter, e); + return e_defaultPrevented(e) + } + } +} + +function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true) +} + +// CONTEXT MENU HANDLING + +// To make the context menu work, we need to briefly unhide the +// textarea (making it as unobtrusive as possible) to let the +// right-click take effect on it. +function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + cm.display.input.onContextMenu(e); +} + +function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) +} + +function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + clearCaches(cm); +} + +var Init = {toString: function(){return "CodeMirror.Init"}}; + +var defaults = {}; +var optionHandlers = {}; + +function defineOptions(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers; + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt; + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; } + } + + CodeMirror.defineOption = option; + + // Passed to option handlers when there is no old value. + CodeMirror.Init = Init; + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function (cm, val) { return cm.setValue(val); }, true); + option("mode", null, function (cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function (cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); + option("lineSeparator", null, function (cm, val) { + cm.doc.lineSep = val; + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first; + cm.doc.iter(function (line) { + for (var pos = 0;;) { + var found = line.text.indexOf(val, pos); + if (found == -1) { break } + pos = found + val.length; + newBreaks.push(Pos(lineNo, found)); + } + lineNo++; + }); + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); } + }); + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + if (old != Init) { cm.refresh(); } + }); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true); + option("electricChars", true); + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true); + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function (cm) { + themeChanged(cm); + guttersChanged(cm); + }, true); + option("keyMap", "default", function (cm, val, old) { + var next = getKeyMap(val); + var prev = old != Init && getKeyMap(old); + if (prev && prev.detach) { prev.detach(cm, next); } + if (next.attach) { next.attach(cm, prev || null); } + }); + option("extraKeys", null); + option("configureMouse", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function (cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true); + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm); + updateScrollbars(cm); + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); + }, true); + option("lineNumbers", false, function (cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("firstLineNumber", 1, guttersChanged, true); + option("lineNumberFormatter", function (integer) { return integer; }, guttersChanged, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + option("lineWiseCopyCut", true); + option("pasteLinesPerSelection", true); + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { + onBlur(cm); + cm.display.input.blur(); + } + cm.display.input.readOnlyChanged(val); + }); + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true); + option("dragDrop", true, dragDropChanged); + option("allowDropFileTypes", null); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1, updateSelection, true); + option("singleCursorHeightPerLine", true, updateSelection, true); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition(); } + }); + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }); + option("autofocus", null); + option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true); +} + +function guttersChanged(cm) { + updateGutters(cm); + regChange(cm); + alignHorizontally(cm); +} + +function dragDropChanged(cm, value, old) { + var wasOn = old && old != Init; + if (!value != !wasOn) { + var funcs = cm.display.dragFunctions; + var toggle = value ? on : off; + toggle(cm.display.scroller, "dragstart", funcs.start); + toggle(cm.display.scroller, "dragenter", funcs.enter); + toggle(cm.display.scroller, "dragover", funcs.over); + toggle(cm.display.scroller, "dragleave", funcs.leave); + toggle(cm.display.scroller, "drop", funcs.drop); + } +} + +function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; + cm.display.sizerWidth = null; + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap"); + findMaxLine(cm); + } + estimateLineHeights(cm); + regChange(cm); + clearCaches(cm); + setTimeout(function () { return updateScrollbars(cm); }, 100); +} + +// A CodeMirror instance represents an editor. This is the object +// that user code is usually dealing with. + +function CodeMirror$1(place, options) { + var this$1 = this; + + if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) } + + this.options = options = options ? copyObj(options) : {}; + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false); + setGuttersForLineNumbers(options); + + var doc = options.value; + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); } + this.doc = doc; + + var input = new CodeMirror$1.inputStyles[options.inputStyle](this); + var display = this.display = new Display(place, doc, input); + display.wrapper.CodeMirror = this; + updateGutters(this); + themeChanged(this); + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap"; } + initScrollbars(this); + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + }; + + if (options.autofocus && !mobile) { display.input.focus(); } + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); } + + registerEventHandlers(this); + ensureGlobalHandlers(); + + startOperation(this); + this.curOp.forceUpdate = true; + attachDoc(this, doc); + + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(bind(onFocus, this), 20); } + else + { onBlur(this); } + + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this$1, options[opt], Init); } } + maybeUpdateLineNumberWidth(this); + if (options.finishInit) { options.finishInit(this); } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); } + endOperation(this); + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto"; } +} + +// The default configuration options. +CodeMirror$1.defaults = defaults; +// Functions to run when options are changed. +CodeMirror$1.optionHandlers = optionHandlers; + +// Attach the necessary event handlers when initializing the editor +function registerEventHandlers(cm) { + var d = cm.display; + on(d.scroller, "mousedown", operation(cm, onMouseDown)); + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e); + var word = cm.findWordAt(pos); + extendSelection(cm.doc, word.anchor, word.head); + })); } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); } + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); } + + // Used to suppress mouse event handling when a touch happens + var touchFinished, prevTouch = {end: 0}; + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000); + prevTouch = d.activeTouch; + prevTouch.end = +new Date; + } + } + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) { return false } + var touch = e.touches[0]; + return touch.radiusX <= 1 && touch.radiusY <= 1 + } + function farAway(touch, other) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top; + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { + d.input.ensurePolled(); + clearTimeout(touchFinished); + var now = +new Date; + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null}; + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX; + d.activeTouch.top = e.touches[0].pageY; + } + } + }); + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true; } + }); + on(d.scroller, "touchend", function (e) { + var touch = d.activeTouch; + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range; + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos); } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos); } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); } + cm.setSelection(range.anchor, range.head); + cm.focus(); + e_preventDefault(e); + } + finishTouch(); + }); + on(d.scroller, "touchcancel", finishTouch); + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function () { + if (d.scroller.clientHeight) { + updateScrollTop(cm, d.scroller.scrollTop); + setScrollLeft(cm, d.scroller.scrollLeft, true); + signal(cm, "scroll", cm); + } + }); + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }); + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }); + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); + + d.dragFunctions = { + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, + start: function (e) { return onDragStart(cm, e); }, + drop: operation(cm, onDrop), + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} + }; + + var inp = d.input.getField(); + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }); + on(inp, "keydown", operation(cm, onKeyDown)); + on(inp, "keypress", operation(cm, onKeyPress)); + on(inp, "focus", function (e) { return onFocus(cm, e); }); + on(inp, "blur", function (e) { return onBlur(cm, e); }); +} + +var initHooks = []; +CodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); }; + +// Indent the given line. The how parameter can be "smart", +// "add"/null, "subtract", or "prev". When aggressive is false +// (typically set to true for forced single-line indents), empty +// lines are not indented, and places where the mode returns Pass +// are left alone. +function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state; + if (how == null) { how = "add"; } + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) { how = "prev"; } + else { state = getContextBefore(cm, n).state; } + } + + var tabSize = cm.options.tabSize; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) { line.stateAfter = null; } + var curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0; + how = "not"; + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass || indentation > 150) { + if (!aggressive) { return } + how = "prev"; + } + } + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); } + else { indentation = 0; } + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit; + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit; + } else if (typeof how == "number") { + indentation = curSpace + how; + } + indentation = Math.max(0, indentation); + + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} } + if (pos < indentation) { indentString += spaceStr(indentation - pos); } + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); + line.stateAfter = null; + return true + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) { + var range = doc.sel.ranges[i$1]; + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos$1 = Pos(n, curSpaceString.length); + replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)); + break + } + } + } +} + +// This will be set to a {lineWise: bool, text: [string]} object, so +// that, when pasting, we know what kind of selections the copied +// text was made out of. +var lastCopied = null; + +function setLastCopied(newLastCopied) { + lastCopied = newLastCopied; +} + +function applyTextInput(cm, inserted, deleted, sel, origin) { + var doc = cm.doc; + cm.display.shift = false; + if (!sel) { sel = doc.sel; } + + var paste = cm.state.pasteIncoming || origin == "paste"; + var textLines = splitLinesAuto(inserted), multiPaste = null; + // When pasing N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.text.length == 0) { + multiPaste = []; + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])); } + } + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, function (l) { return [l]; }); + } + } + + var updateInput; + // Normal behavior is to insert the new text into every selection + for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { + var range$$1 = sel.ranges[i$1]; + var from = range$$1.from(), to = range$$1.to(); + if (range$$1.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted); } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); } + else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) + { from = to = Pos(from.line, 0); } + } + updateInput = cm.curOp.updateInput; + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")}; + makeChange(cm.doc, changeEvent); + signalLater(cm, "inputRead", cm, changeEvent); + } + if (inserted && !paste) + { triggerElectric(cm, inserted); } + + ensureCursorVisible(cm); + cm.curOp.updateInput = updateInput; + cm.curOp.typing = true; + cm.state.pasteIncoming = cm.state.cutIncoming = false; +} + +function handlePaste(e, cm) { + var pasted = e.clipboardData && e.clipboardData.getData("Text"); + if (pasted) { + e.preventDefault(); + if (!cm.isReadOnly() && !cm.options.disableInput) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); } + return true + } +} + +function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) { return } + var sel = cm.doc.sel; + + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range$$1 = sel.ranges[i]; + if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue } + var mode = cm.getModeAt(range$$1.head); + var indented = false; + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range$$1.head.line, "smart"); + break + } } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch))) + { indented = indentLine(cm, range$$1.head.line, "smart"); } + } + if (indented) { signalLater(cm, "electricInput", cm, range$$1.head.line); } + } +} + +function copyableRanges(cm) { + var text = [], ranges = []; + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; + ranges.push(lineRange); + text.push(cm.getRange(lineRange.anchor, lineRange.head)); + } + return {text: text, ranges: ranges} +} + +function disableBrowserMagic(field, spellcheck) { + field.setAttribute("autocorrect", "off"); + field.setAttribute("autocapitalize", "off"); + field.setAttribute("spellcheck", !!spellcheck); +} + +function hiddenTextarea() { + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"); + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) { te.style.width = "1000px"; } + else { te.setAttribute("wrap", "off"); } + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) { te.style.border = "1px solid black"; } + disableBrowserMagic(te); + return div +} + +// The publicly visible API. Note that methodOp(f) means +// 'wrap f in an operation, performed on its `this` parameter'. + +// This is not the complete set of editor methods. Most of the +// methods defined on the Doc type are also injected into +// CodeMirror.prototype, for backwards compatibility and +// convenience. + +var addEditorMethods = function(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers; + + var helpers = CodeMirror.helpers = {}; + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus();}, + + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") { return } + options[option] = value; + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old); } + signal(this, "optionChange", this, option); + }, + + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, + + addKeyMap: function(map$$1, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map$$1)); + }, + removeKeyMap: function(map$$1) { + var maps = this.state.keyMaps; + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map$$1 || maps[i].name == map$$1) { + maps.splice(i, 1); + return true + } } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }); + this.state.modeGen++; + regChange(this); + }), + removeOverlay: methodOp(function(spec) { + var this$1 = this; + + var overlays = this.state.overlays; + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec; + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1); + this$1.state.modeGen++; + regChange(this$1); + return + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev"; } + else { dir = dir ? "add" : "subtract"; } + } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); } + }), + indentSelection: methodOp(function(how) { + var this$1 = this; + + var ranges = this.doc.sel.ranges, end = -1; + for (var i = 0; i < ranges.length; i++) { + var range$$1 = ranges[i]; + if (!range$$1.empty()) { + var from = range$$1.from(), to = range$$1.to(); + var start = Math.max(end, from.line); + end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + { indentLine(this$1, j, how); } + var newRanges = this$1.doc.sel.ranges; + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } + } else if (range$$1.head.line > end) { + indentLine(this$1, range$$1.head.line, how, true); + end = range$$1.head.line; + if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); } + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos); + var styles = getLineStyles(this, getLine(this.doc, pos.line)); + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; + var type; + if (ch == 0) { type = styles[2]; } + else { for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1; } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) + }, + + getModeAt: function(pos) { + var mode = this.doc.mode; + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + + getHelpers: function(pos, type) { + var this$1 = this; + + var found = []; + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]); } + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]]; + if (val) { found.push(val); } + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]); + } else if (help[mode.name]) { + found.push(help[mode.name]); + } + for (var i$1 = 0; i$1 < help._global.length; i$1++) { + var cur = help._global[i$1]; + if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) + { found.push(cur.val); } + } + return found + }, + + getStateAfter: function(line, precise) { + var doc = this.doc; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getContextBefore(this, line + 1, precise).state + }, + + cursorCoords: function(start, mode) { + var pos, range$$1 = this.doc.sel.primary(); + if (start == null) { pos = range$$1.head; } + else if (typeof start == "object") { pos = clipPos(this.doc, start); } + else { pos = start ? range$$1.from() : range$$1.to(); } + return cursorCoords(this, pos, mode || "page") + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top) + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset) + }, + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj; + if (typeof line == "number") { + var last = this.doc.first + this.doc.size - 1; + if (line < this.doc.first) { line = this.doc.first; } + else if (line > last) { line = last; end = true; } + lineObj = getLine(this.doc, line); + } else { + lineObj = line; + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) + }, + + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display; + pos = cursorCoords(this, clipPos(this.doc, pos)); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + node.setAttribute("cm-ignore-events", "true"); + this.display.input.setUneditable(node); + display.sizer.appendChild(node); + if (vert == "over") { + top = pos.top; + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight; } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom; } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth; } + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") { left = 0; } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; } + node.style.left = left + "px"; + } + if (scroll) + { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); } + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + triggerOnMouseDown: methodOp(onMouseDown), + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), + + findPosH: function(from, amount, unit, visually) { + var this$1 = this; + + var dir = 1; + if (amount < 0) { dir = -1; amount = -amount; } + var cur = clipPos(this.doc, from); + for (var i = 0; i < amount; ++i) { + cur = findPosH(this$1.doc, cur, dir, unit, visually); + if (cur.hitSide) { break } + } + return cur + }, + + moveH: methodOp(function(dir, unit) { + var this$1 = this; + + this.extendSelectionsBy(function (range$$1) { + if (this$1.display.shift || this$1.doc.extend || range$$1.empty()) + { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range$$1.from() : range$$1.to() } + }, sel_move); + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete"); } + else + { deleteNearSelection(this, function (range$$1) { + var other = findPosH(doc, range$$1.head, dir, unit, false); + return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other} + }); } + }), + + findPosV: function(from, amount, unit, goalColumn) { + var this$1 = this; + + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } + var cur = clipPos(this.doc, from); + for (var i = 0; i < amount; ++i) { + var coords = cursorCoords(this$1, cur, "div"); + if (x == null) { x = coords.left; } + else { coords.left = x; } + cur = findPosV(this$1, coords, dir, unit); + if (cur.hitSide) { break } + } + return cur + }, + + moveV: methodOp(function(dir, unit) { + var this$1 = this; + + var doc = this.doc, goals = []; + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function (range$$1) { + if (collapse) + { return dir < 0 ? range$$1.from() : range$$1.to() } + var headPos = cursorCoords(this$1, range$$1.head, "div"); + if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; } + goals.push(headPos.left); + var pos = findPosV(this$1, headPos, dir, unit); + if (unit == "page" && range$$1 == doc.sel.primary()) + { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top); } + return pos + }, sel_move); + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i]; } } + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; + if (line) { + var helper = this.getHelper(pos, "wordChars"); + if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end; } + var startChar = line.charAt(start); + var check = isWordChar(startChar, helper) + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); }; + while (start > 0 && check(line.charAt(start - 1))) { --start; } + while (end < line.length && check(line.charAt(end))) { ++end; } + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)) + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + + signal(this, "overwriteToggle", this, this.state.overwrite); + }, + hasFocus: function() { return this.display.input.getField() == activeElt() }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, + + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }), + getScrollInfo: function() { + var scroller = this.display.scroller; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} + }, + + scrollIntoView: methodOp(function(range$$1, margin) { + if (range$$1 == null) { + range$$1 = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) { margin = this.options.cursorScrollMargin; } + } else if (typeof range$$1 == "number") { + range$$1 = {from: Pos(range$$1, 0), to: null}; + } else if (range$$1.from == null) { + range$$1 = {from: range$$1, to: null}; + } + if (!range$$1.to) { range$$1.to = range$$1.from; } + range$$1.margin = margin || 0; + + if (range$$1.from.line != null) { + scrollToRange(this, range$$1); + } else { + scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin); + } + }), + + setSize: methodOp(function(width, height) { + var this$1 = this; + + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; }; + if (width != null) { this.display.wrapper.style.width = interpret(width); } + if (height != null) { this.display.wrapper.style.height = interpret(height); } + if (this.options.lineWrapping) { clearLineMeasurementCache(this); } + var lineNo$$1 = this.display.viewFrom; + this.doc.iter(lineNo$$1, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, "widget"); break } } } + ++lineNo$$1; + }); + this.curOp.forceUpdate = true; + signal(this, "refresh", this); + }), + + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight; + regChange(this); + this.curOp.forceUpdate = true; + clearCaches(this); + scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop); + updateGutterSpace(this); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + { estimateLineHeights(this); } + signal(this, "refresh", this); + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc; + old.cm = null; + attachDoc(this, doc); + clearCaches(this); + this.display.input.reset(); + scrollToCoords(this, doc.scrollLeft, doc.scrollTop); + this.curOp.forceScroll = true; + signalLater(this, "swapDoc", this, old); + return old + }), + + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} + }; + eventMixin(CodeMirror); + + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; } + helpers[type][name] = value; + }; + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value); + helpers[type]._global.push({pred: predicate, val: value}); + }; +}; + +// Used for horizontal relative motion. Dir is -1 or 1 (left or +// right), unit can be "char", "column" (like char, but doesn't +// cross line boundaries), "word" (across next word), or "group" (to +// the start of next group of word or non-word-non-whitespace +// chars). The visually param controls whether, in right-to-left +// text, direction 1 means to move towards the next index in the +// string, or towards the character to the right of the current +// position. The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosH(doc, pos, dir, unit, visually) { + var oldPos = pos; + var origDir = dir; + var lineObj = getLine(doc, pos.line); + function findNextLine() { + var l = pos.line + dir; + if (l < doc.first || l >= doc.first + doc.size) { return false } + pos = new Pos(l, pos.ch, pos.sticky); + return lineObj = getLine(doc, l) + } + function moveOnce(boundToLine) { + var next; + if (visually) { + next = moveVisually(doc.cm, lineObj, pos, dir); + } else { + next = moveLogically(lineObj, pos, dir); + } + if (next == null) { + if (!boundToLine && findNextLine()) + { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); } + else + { return false } + } else { + pos = next; + } + return true + } + + if (unit == "char") { + moveOnce(); + } else if (unit == "column") { + moveOnce(true); + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(pos.ch) || "\n"; + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) { type = "s"; } + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after";} + break + } + + if (type) { sawType = type; } + if (dir > 0 && !moveOnce(!first)) { break } + } + } + var result = skipAtomic(doc, pos, oldPos, origDir, true); + if (equalCursorPos(oldPos, result)) { result.hitSide = true; } + return result +} + +// For relative vertical movement. Dir may be -1 or 1. Unit can be +// "page" or "line". The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3); + y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount; + + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3; + } + var target; + for (;;) { + target = coordsChar(cm, x, y); + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } + y += dir * 5; + } + return target +} + +// CONTENTEDITABLE INPUT STYLE + +var ContentEditableInput = function(cm) { + this.cm = cm; + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; + this.polling = new Delayed(); + this.composing = null; + this.gracePeriod = false; + this.readDOMTimeout = null; +}; + +ContentEditableInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = input.cm; + var div = input.div = display.lineDiv; + disableBrowserMagic(div, cm.options.spellcheck); + + on(div, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + // IE doesn't fire input events, so we schedule a read for the pasted content in this way + if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); } + }); + + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false}; + }); + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; } + }); + on(div, "compositionend", function (e) { + if (this$1.composing) { + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); } + this$1.composing.done = true; + } + }); + + on(div, "touchstart", function () { return input.forceCompositionEnd(); }); + + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon(); } + }); + + function onCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}); + if (e.type == "cut") { cm.replaceSelection("", null, "cut"); } + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm); + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { + cm.operation(function () { + cm.setSelections(ranges.ranges, 0, sel_dontScroll); + cm.replaceSelection("", null, "cut"); + }); + } + } + if (e.clipboardData) { + e.clipboardData.clearData(); + var content = lastCopied.text.join("\n"); + // iOS exposes the clipboard API, but seems to discard content inserted into it + e.clipboardData.setData("Text", content); + if (e.clipboardData.getData("Text") == content) { + e.preventDefault(); + return + } + } + // Old-fashioned briefly-focus-a-textarea hack + var kludge = hiddenTextarea(), te = kludge.firstChild; + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); + te.value = lastCopied.text.join("\n"); + var hadFocus = document.activeElement; + selectInput(te); + setTimeout(function () { + cm.display.lineSpace.removeChild(kludge); + hadFocus.focus(); + if (hadFocus == div) { input.showPrimarySelection(); } + }, 50); + } + on(div, "copy", onCopyCut); + on(div, "cut", onCopyCut); +}; + +ContentEditableInput.prototype.prepareSelection = function () { + var result = prepareSelection(this.cm, false); + result.focus = this.cm.state.focused; + return result +}; + +ContentEditableInput.prototype.showSelection = function (info, takeFocus) { + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection(); } + this.showMultipleSelections(info); +}; + +ContentEditableInput.prototype.showPrimarySelection = function () { + var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary(); + var from = prim.from(), to = prim.to(); + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { + sel.removeAllRanges(); + return + } + + var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); + var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset); + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + { return } + + var view = cm.display.view; + var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0}; + var end = to.line < cm.display.viewTo && posToDOM(cm, to); + if (!end) { + var measure = view[view.length - 1].measure; + var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; + end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]}; + } + + if (!start || !end) { + sel.removeAllRanges(); + return + } + + var old = sel.rangeCount && sel.getRangeAt(0), rng; + try { rng = range(start.node, start.offset, end.offset, end.node); } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && cm.state.focused) { + sel.collapse(start.node, start.offset); + if (!rng.collapsed) { + sel.removeAllRanges(); + sel.addRange(rng); + } + } else { + sel.removeAllRanges(); + sel.addRange(rng); + } + if (old && sel.anchorNode == null) { sel.addRange(old); } + else if (gecko) { this.startGracePeriod(); } + } + this.rememberSelection(); +}; + +ContentEditableInput.prototype.startGracePeriod = function () { + var this$1 = this; + + clearTimeout(this.gracePeriod); + this.gracePeriod = setTimeout(function () { + this$1.gracePeriod = false; + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); } + }, 20); +}; + +ContentEditableInput.prototype.showMultipleSelections = function (info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); +}; + +ContentEditableInput.prototype.rememberSelection = function () { + var sel = window.getSelection(); + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; +}; + +ContentEditableInput.prototype.selectionInEditor = function () { + var sel = window.getSelection(); + if (!sel.rangeCount) { return false } + var node = sel.getRangeAt(0).commonAncestorContainer; + return contains(this.div, node) +}; + +ContentEditableInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor()) + { this.showSelection(this.prepareSelection(), true); } + this.div.focus(); + } +}; +ContentEditableInput.prototype.blur = function () { this.div.blur(); }; +ContentEditableInput.prototype.getField = function () { return this.div }; + +ContentEditableInput.prototype.supportsTouch = function () { return true }; + +ContentEditableInput.prototype.receivedFocus = function () { + var input = this; + if (this.selectionInEditor()) + { this.pollSelection(); } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); } + + function poll() { + if (input.cm.state.focused) { + input.pollSelection(); + input.polling.set(input.cm.options.pollInterval, poll); + } + } + this.polling.set(this.cm.options.pollInterval, poll); +}; + +ContentEditableInput.prototype.selectionChanged = function () { + var sel = window.getSelection(); + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset +}; + +ContentEditableInput.prototype.pollSelection = function () { + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } + var sel = window.getSelection(), cm = this.cm; + // On Android Chrome (version 56, at least), backspacing into an + // uneditable block element will put the cursor in that element, + // and then, because it's not editable, hide the virtual keyboard. + // Because Android doesn't allow us to actually detect backspace + // presses in a sane way, this code checks for when that happens + // and simulates a backspace press in this case. + if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}); + this.blur(); + this.focus(); + return + } + if (this.composing) { return } + this.rememberSelection(); + var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); + var head = domToPos(cm, sel.focusNode, sel.focusOffset); + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; } + }); } +}; + +ContentEditableInput.prototype.pollContent = function () { + if (this.readDOMTimeout != null) { + clearTimeout(this.readDOMTimeout); + this.readDOMTimeout = null; + } + + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); + var from = sel.from(), to = sel.to(); + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0); } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } + + var fromIndex, fromLine, fromNode; + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + fromLine = lineNo(display.view[0].line); + fromNode = display.view[0].node; + } else { + fromLine = lineNo(display.view[fromIndex].line); + fromNode = display.view[fromIndex - 1].node.nextSibling; + } + var toIndex = findViewIndex(cm, to.line); + var toLine, toNode; + if (toIndex == display.view.length - 1) { + toLine = display.viewTo - 1; + toNode = display.lineDiv.lastChild; + } else { + toLine = lineNo(display.view[toIndex + 1].line) - 1; + toNode = display.view[toIndex + 1].node.previousSibling; + } + + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } + else { break } + } + + var cutFront = 0, cutEnd = 0; + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront; } + var newBot = lst(newText), oldBot = lst(oldText); + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)); + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd; } + // Try to move start of change to start of selection if ambiguous + if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { + cutFront--; + cutEnd++; + } + } + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, ""); + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ""); + + var chFrom = Pos(fromLine, cutFront); + var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input"); + return true + } +}; + +ContentEditableInput.prototype.ensurePolled = function () { + this.forceCompositionEnd(); +}; +ContentEditableInput.prototype.reset = function () { + this.forceCompositionEnd(); +}; +ContentEditableInput.prototype.forceCompositionEnd = function () { + if (!this.composing) { return } + clearTimeout(this.readDOMTimeout); + this.composing = null; + this.updateFromDOM(); + this.div.blur(); + this.div.focus(); +}; +ContentEditableInput.prototype.readFromDOMSoon = function () { + var this$1 = this; + + if (this.readDOMTimeout != null) { return } + this.readDOMTimeout = setTimeout(function () { + this$1.readDOMTimeout = null; + if (this$1.composing) { + if (this$1.composing.done) { this$1.composing = null; } + else { return } + } + this$1.updateFromDOM(); + }, 80); +}; + +ContentEditableInput.prototype.updateFromDOM = function () { + var this$1 = this; + + if (this.cm.isReadOnly() || !this.pollContent()) + { runInOp(this.cm, function () { return regChange(this$1.cm); }); } +}; + +ContentEditableInput.prototype.setUneditable = function (node) { + node.contentEditable = "false"; +}; + +ContentEditableInput.prototype.onKeyPress = function (e) { + if (e.charCode == 0) { return } + e.preventDefault(); + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); } +}; + +ContentEditableInput.prototype.readOnlyChanged = function (val) { + this.div.contentEditable = String(val != "nocursor"); +}; + +ContentEditableInput.prototype.onContextMenu = function () {}; +ContentEditableInput.prototype.resetPosition = function () {}; + +ContentEditableInput.prototype.needsContentAttribute = true; + +function posToDOM(cm, pos) { + var view = findViewForLine(cm, pos.line); + if (!view || view.hidden) { return null } + var line = getLine(cm.doc, pos.line); + var info = mapFromLineView(view, line, pos.line); + + var order = getOrder(line, cm.doc.direction), side = "left"; + if (order) { + var partPos = getBidiPartAt(order, pos.ch); + side = partPos % 2 ? "right" : "left"; + } + var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); + result.offset = result.collapse == "right" ? result.end : result.start; + return result +} + +function isInGutter(node) { + for (var scan = node; scan; scan = scan.parentNode) + { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } + return false +} + +function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } + +function domTextBetween(cm, from, to, fromLine, toLine) { + var text = "", closing = false, lineSep = cm.doc.lineSeparator(); + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } + function close() { + if (closing) { + text += lineSep; + closing = false; + } + } + function addText(str) { + if (str) { + close(); + text += str; + } + } + function walk(node) { + if (node.nodeType == 1) { + var cmText = node.getAttribute("cm-text"); + if (cmText != null) { + addText(cmText || node.textContent.replace(/\u200b/g, "")); + return + } + var markerID = node.getAttribute("cm-marker"), range$$1; + if (markerID) { + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); + if (found.length && (range$$1 = found[0].find(0))) + { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); } + return + } + if (node.getAttribute("contenteditable") == "false") { return } + var isBlock = /^(pre|div|p)$/i.test(node.nodeName); + if (isBlock) { close(); } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]); } + if (isBlock) { closing = true; } + } else if (node.nodeType == 3) { + addText(node.nodeValue); + } + } + for (;;) { + walk(from); + if (from == to) { break } + from = from.nextSibling; + } + return text +} + +function domToPos(cm, node, offset) { + var lineNode; + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset]; + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0; + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } + } + } + for (var i = 0; i < cm.display.view.length; i++) { + var lineView = cm.display.view[i]; + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } + } +} + +function locateNodeInLineView(lineView, node, offset) { + var wrapper = lineView.text.firstChild, bad = false; + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } + if (node == wrapper) { + bad = true; + node = wrapper.childNodes[offset]; + offset = 0; + if (!node) { + var line = lineView.rest ? lst(lineView.rest) : lineView.line; + return badPos(Pos(lineNo(line), line.text.length), bad) + } + } + + var textNode = node.nodeType == 3 ? node : null, topNode = node; + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild; + if (offset) { offset = textNode.nodeValue.length; } + } + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; } + var measure = lineView.measure, maps = measure.maps; + + function find(textNode, topNode, offset) { + for (var i = -1; i < (maps ? maps.length : 0); i++) { + var map$$1 = i < 0 ? measure.map : maps[i]; + for (var j = 0; j < map$$1.length; j += 3) { + var curNode = map$$1[j + 2]; + if (curNode == textNode || curNode == topNode) { + var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); + var ch = map$$1[j] + offset; + if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; } + return Pos(line, ch) + } + } + } + } + var found = find(textNode, topNode, offset); + if (found) { return badPos(found, bad) } + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0); + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length; } + } + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1); + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length; } + } +} + +// TEXTAREA INPUT STYLE + +var TextareaInput = function(cm) { + this.cm = cm; + // See input.poll and input.reset + this.prevInput = ""; + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false; + // Self-resetting timeout for the poller + this.polling = new Delayed(); + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false; + this.composing = null; +}; + +TextareaInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = this.cm; + + // Wraps and hides input textarea + var div = this.wrapper = hiddenTextarea(); + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + var te = this.textarea = div.firstChild; + display.wrapper.insertBefore(div, display.wrapper.firstChild); + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) { te.style.width = "0px"; } + + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; } + input.poll(); + }); + + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + + cm.state.pasteIncoming = true; + input.fastPoll(); + }); + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}); + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm); + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll); + } else { + input.prevInput = ""; + te.value = ranges.text.join("\n"); + selectInput(te); + } + } + if (e.type == "cut") { cm.state.cutIncoming = true; } + } + on(te, "cut", prepareCopyCut); + on(te, "copy", prepareCopyCut); + + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } + cm.state.pasteIncoming = true; + input.focus(); + }); + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e); } + }); + + on(te, "compositionstart", function () { + var start = cm.getCursor("from"); + if (input.composing) { input.composing.range.clear(); } + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + }; + }); + on(te, "compositionend", function () { + if (input.composing) { + input.poll(); + input.composing.range.clear(); + input.composing = null; + } + }); +}; + +TextareaInput.prototype.prepareSelection = function () { + // Redraw the selection and/or cursor + var cm = this.cm, display = cm.display, doc = cm.doc; + var result = prepareSelection(cm); + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + } + + return result +}; + +TextareaInput.prototype.showSelection = function (drawn) { + var cm = this.cm, display = cm.display; + removeChildrenAndAdd(display.cursorDiv, drawn.cursors); + removeChildrenAndAdd(display.selectionDiv, drawn.selection); + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px"; + this.wrapper.style.left = drawn.teLeft + "px"; + } +}; + +// Reset the input to correspond to the selection (or to be empty, +// when not typing and nothing is selected) +TextareaInput.prototype.reset = function (typing) { + if (this.contextMenuPending || this.composing) { return } + var cm = this.cm; + if (cm.somethingSelected()) { + this.prevInput = ""; + var content = cm.getSelection(); + this.textarea.value = content; + if (cm.state.focused) { selectInput(this.textarea); } + if (ie && ie_version >= 9) { this.hasSelection = content; } + } else if (!typing) { + this.prevInput = this.textarea.value = ""; + if (ie && ie_version >= 9) { this.hasSelection = null; } + } +}; + +TextareaInput.prototype.getField = function () { return this.textarea }; + +TextareaInput.prototype.supportsTouch = function () { return false }; + +TextareaInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus(); } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } +}; + +TextareaInput.prototype.blur = function () { this.textarea.blur(); }; + +TextareaInput.prototype.resetPosition = function () { + this.wrapper.style.top = this.wrapper.style.left = 0; +}; + +TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); }; + +// Poll for input changes, using the normal rate of polling. This +// runs as long as the editor is focused. +TextareaInput.prototype.slowPoll = function () { + var this$1 = this; + + if (this.pollingFast) { return } + this.polling.set(this.cm.options.pollInterval, function () { + this$1.poll(); + if (this$1.cm.state.focused) { this$1.slowPoll(); } + }); +}; + +// When an event has just come in that is likely to add or change +// something in the input textarea, we poll faster, to ensure that +// the change appears on the screen quickly. +TextareaInput.prototype.fastPoll = function () { + var missed = false, input = this; + input.pollingFast = true; + function p() { + var changed = input.poll(); + if (!changed && !missed) {missed = true; input.polling.set(60, p);} + else {input.pollingFast = false; input.slowPoll();} + } + input.polling.set(20, p); +}; + +// Read input from the textarea, and update the document to match. +// When something is selected, it is present in the textarea, and +// selected (unless it is huge, in which case a placeholder is +// used). When nothing is selected, the cursor sits after previously +// seen text (can be empty), which is stored in prevInput (we must +// not reset the textarea when typing, because that breaks IME). +TextareaInput.prototype.poll = function () { + var this$1 = this; + + var cm = this.cm, input = this.textarea, prevInput = this.prevInput; + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } + + var text = input.value; + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) { return false } + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset(); + return false + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + var first = text.charCodeAt(0); + if (first == 0x200b && !prevInput) { prevInput = "\u200b"; } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } + } + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; } + + runInOp(cm, function () { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null); + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = ""; } + else { this$1.prevInput = text; } + + if (this$1.composing) { + this$1.composing.range.clear(); + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}); + } + }); + return true +}; + +TextareaInput.prototype.ensurePolled = function () { + if (this.pollingFast && this.poll()) { this.pollingFast = false; } +}; + +TextareaInput.prototype.onKeyPress = function () { + if (ie && ie_version >= 9) { this.hasSelection = null; } + this.fastPoll(); +}; + +TextareaInput.prototype.onContextMenu = function (e) { + var input = this, cm = input.cm, display = cm.display, te = input.textarea; + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) { return } // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu; + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); } + + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; + input.wrapper.style.cssText = "position: absolute"; + var wrapperBox = input.wrapper.getBoundingClientRect(); + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + var oldScrollY; + if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712) + display.input.focus(); + if (webkit) { window.scrollTo(null, oldScrollY); } + display.input.reset(); + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) { te.value = input.prevInput = " "; } + input.contextMenuPending = true; + display.selForContextMenu = cm.doc.sel; + clearTimeout(display.detectingSelectAll); + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + var selected = cm.somethingSelected(); + var extval = "\u200b" + (selected ? te.value : ""); + te.value = "\u21da"; // Used to catch context-menu undo + te.value = extval; + input.prevInput = selected ? "" : "\u200b"; + te.selectionStart = 1; te.selectionEnd = extval.length; + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel; + } + } + function rehide() { + input.contextMenuPending = false; + input.wrapper.style.cssText = oldWrapperCSS; + te.style.cssText = oldCSS; + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); } + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm); + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500); + } else { + display.selForContextMenu = null; + display.input.reset(); + } + }; + display.detectingSelectAll = setTimeout(poll, 200); + } + } + + if (ie && ie_version >= 9) { prepareSelectAllHack(); } + if (captureRightClick) { + e_stop(e); + var mouseup = function () { + off(window, "mouseup", mouseup); + setTimeout(rehide, 20); + }; + on(window, "mouseup", mouseup); + } else { + setTimeout(rehide, 50); + } +}; + +TextareaInput.prototype.readOnlyChanged = function (val) { + if (!val) { this.reset(); } + this.textarea.disabled = val == "nocursor"; +}; + +TextareaInput.prototype.setUneditable = function () {}; + +TextareaInput.prototype.needsContentAttribute = false; + +function fromTextArea(textarea, options) { + options = options ? copyObj(options) : {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex; } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder; } + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt(); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } + + function save() {textarea.value = cm.getValue();} + + var realSubmit; + if (textarea.form) { + on(textarea.form, "submit", save); + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form; + realSubmit = form.submit; + try { + var wrappedSubmit = form.submit = function () { + save(); + form.submit = realSubmit; + form.submit(); + form.submit = wrappedSubmit; + }; + } catch(e) {} + } + } + + options.finishInit = function (cm) { + cm.save = save; + cm.getTextArea = function () { return textarea; }; + cm.toTextArea = function () { + cm.toTextArea = isNaN; // Prevent this from being ran twice + save(); + textarea.parentNode.removeChild(cm.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + off(textarea.form, "submit", save); + if (typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit; } + } + }; + }; + + textarea.style.display = "none"; + var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options); + return cm +} + +function addLegacyProps(CodeMirror) { + CodeMirror.off = off; + CodeMirror.on = on; + CodeMirror.wheelEventPixels = wheelEventPixels; + CodeMirror.Doc = Doc; + CodeMirror.splitLines = splitLinesAuto; + CodeMirror.countColumn = countColumn; + CodeMirror.findColumn = findColumn; + CodeMirror.isWordChar = isWordCharBasic; + CodeMirror.Pass = Pass; + CodeMirror.signal = signal; + CodeMirror.Line = Line; + CodeMirror.changeEnd = changeEnd; + CodeMirror.scrollbarModel = scrollbarModel; + CodeMirror.Pos = Pos; + CodeMirror.cmpPos = cmp; + CodeMirror.modes = modes; + CodeMirror.mimeModes = mimeModes; + CodeMirror.resolveMode = resolveMode; + CodeMirror.getMode = getMode; + CodeMirror.modeExtensions = modeExtensions; + CodeMirror.extendMode = extendMode; + CodeMirror.copyState = copyState; + CodeMirror.startState = startState; + CodeMirror.innerMode = innerMode; + CodeMirror.commands = commands; + CodeMirror.keyMap = keyMap; + CodeMirror.keyName = keyName; + CodeMirror.isModifierKey = isModifierKey; + CodeMirror.lookupKey = lookupKey; + CodeMirror.normalizeKeyMap = normalizeKeyMap; + CodeMirror.StringStream = StringStream; + CodeMirror.SharedTextMarker = SharedTextMarker; + CodeMirror.TextMarker = TextMarker; + CodeMirror.LineWidget = LineWidget; + CodeMirror.e_preventDefault = e_preventDefault; + CodeMirror.e_stopPropagation = e_stopPropagation; + CodeMirror.e_stop = e_stop; + CodeMirror.addClass = addClass; + CodeMirror.contains = contains; + CodeMirror.rmClass = rmClass; + CodeMirror.keyNames = keyNames; +} + +// EDITOR CONSTRUCTOR + +defineOptions(CodeMirror$1); + +addEditorMethods(CodeMirror$1); + +// Set up methods on CodeMirror's prototype to redirect to the editor's document. +var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); +for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror$1.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]); } } + +eventMixin(Doc); + +// INPUT HANDLING + +CodeMirror$1.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; + +// MODE DEFINITION AND QUERYING + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +CodeMirror$1.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror$1.defaults.mode && name != "null") { CodeMirror$1.defaults.mode = name; } + defineMode.apply(this, arguments); +}; + +CodeMirror$1.defineMIME = defineMIME; + +// Minimal default mode. +CodeMirror$1.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }); +CodeMirror$1.defineMIME("text/plain", "null"); + +// EXTENSIONS + +CodeMirror$1.defineExtension = function (name, func) { + CodeMirror$1.prototype[name] = func; +}; +CodeMirror$1.defineDocExtension = function (name, func) { + Doc.prototype[name] = func; +}; + +CodeMirror$1.fromTextArea = fromTextArea; + +addLegacyProps(CodeMirror$1); + +CodeMirror$1.version = "5.32.0"; + +return CodeMirror$1; + +}))); diff --git a/covhtmlreport/vendor/codemirror/mode/verilog/verilog.js b/covhtmlreport/vendor/codemirror/mode/verilog/verilog.js new file mode 100644 index 000000000..340468609 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/mode/verilog/verilog.js @@ -0,0 +1,675 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("verilog", function(config, parserConfig) { + + var indentUnit = config.indentUnit, + statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, + dontAlignCalls = parserConfig.dontAlignCalls, + noIndentKeywords = parserConfig.noIndentKeywords || [], + multiLineStrings = parserConfig.multiLineStrings, + hooks = parserConfig.hooks || {}; + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + /** + * Keywords from IEEE 1800-2012 + */ + var keywords = words( + "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + + "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + + "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + + "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + + "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + + "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + + "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + + "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + + "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + + "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + + "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + + "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + + "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + + "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + + "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + + "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + + "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + + "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); + + /** Operators from IEEE 1800-2012 + unary_operator ::= + + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ + binary_operator ::= + + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** + | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< + | -> | <-> + inc_or_dec_operator ::= ++ | -- + unary_module_path_operator ::= + ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ + binary_module_path_operator ::= + == | != | && | || | & | | | ^ | ^~ | ~^ + */ + var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; + var isBracketChar = /[\[\]{}()]/; + + var unsignedNumber = /\d[0-9_]*/; + var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; + var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; + var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; + var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; + var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; + + var closingBracketOrWord = /^((\w+)|[)}\]])/; + var closingBracket = /[)}\]]/; + + var curPunc; + var curKeyword; + + // Block openings which are closed by a matching keyword in the form of ("end" + keyword) + // E.g. "task" => "endtask" + var blockKeywords = words( + "case checker class clocking config function generate interface module package " + + "primitive program property specify sequence table task" + ); + + // Opening/closing pairs + var openClose = {}; + for (var keyword in blockKeywords) { + openClose[keyword] = "end" + keyword; + } + openClose["begin"] = "end"; + openClose["casex"] = "endcase"; + openClose["casez"] = "endcase"; + openClose["do" ] = "while"; + openClose["fork" ] = "join;join_any;join_none"; + openClose["covergroup"] = "endgroup"; + + for (var i in noIndentKeywords) { + var keyword = noIndentKeywords[i]; + if (openClose[keyword]) { + openClose[keyword] = undefined; + } + } + + // Keywords which open statements that are ended with a semi-colon + var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); + + function tokenBase(stream, state) { + var ch = stream.peek(), style; + if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style; + if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false) + return style; + + if (/[,;:\.]/.test(ch)) { + curPunc = stream.next(); + return null; + } + if (isBracketChar.test(ch)) { + curPunc = stream.next(); + return "bracket"; + } + // Macros (tick-defines) + if (ch == '`') { + stream.next(); + if (stream.eatWhile(/[\w\$_]/)) { + return "def"; + } else { + return null; + } + } + // System calls + if (ch == '$') { + stream.next(); + if (stream.eatWhile(/[\w\$_]/)) { + return "meta"; + } else { + return null; + } + } + // Time literals + if (ch == '#') { + stream.next(); + stream.eatWhile(/[\d_.]/); + return "def"; + } + // Strings + if (ch == '"') { + stream.next(); + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + // Comments + if (ch == "/") { + stream.next(); + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + stream.backUp(1); + } + + // Numeric literals + if (stream.match(realLiteral) || + stream.match(decimalLiteral) || + stream.match(binaryLiteral) || + stream.match(octLiteral) || + stream.match(hexLiteral) || + stream.match(unsignedNumber) || + stream.match(realLiteral)) { + return "number"; + } + + // Operators + if (stream.eatWhile(isOperatorChar)) { + return "meta"; + } + + // Keywords / plain variables + if (stream.eatWhile(/[\w\$_]/)) { + var cur = stream.current(); + if (keywords[cur]) { + if (openClose[cur]) { + curPunc = "newblock"; + } + if (statementKeywords[cur]) { + curPunc = "newstatement"; + } + curKeyword = cur; + return "keyword"; + } + return "variable"; + } + + stream.next(); + return null; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + var indent = state.indented; + var c = new Context(indent, col, type, null, state.context); + return state.context = c; + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") { + state.indented = state.context.indented; + } + return state.context = state.context.prev; + } + + function isClosing(text, contextClosing) { + if (text == contextClosing) { + return true; + } else { + // contextClosing may be multiple keywords separated by ; + var closingKeywords = contextClosing.split(";"); + for (var i in closingKeywords) { + if (text == closingKeywords[i]) { + return true; + } + } + return false; + } + } + + function buildElectricInputRegEx() { + // Reindentation should occur on any bracket char: {}()[] + // or on a match of any of the block closing keywords, at + // the end of a line + var allClosings = []; + for (var i in openClose) { + if (openClose[i]) { + var closings = openClose[i].split(";"); + for (var j in closings) { + allClosings.push(closings[j]); + } + } + } + var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); + return re; + } + + // Interface + return { + + // Regex to force current line to reindent + electricInput: buildElectricInputRegEx(), + + startState: function(basecolumn) { + var state = { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + if (hooks.startState) hooks.startState(state); + return state; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (hooks.token) { + // Call hook, with an optional return value of a style to override verilog styling. + var style = hooks.token(stream, state); + if (style !== undefined) { + return style; + } + } + if (stream.eatSpace()) return null; + curPunc = null; + curKeyword = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta" || style == "variable") return style; + if (ctx.align == null) ctx.align = true; + + if (curPunc == ctx.type) { + popContext(state); + } else if ((curPunc == ";" && ctx.type == "statement") || + (ctx.type && isClosing(curKeyword, ctx.type))) { + ctx = popContext(state); + while (ctx && ctx.type == "statement") ctx = popContext(state); + } else if (curPunc == "{") { + pushContext(state, stream.column(), "}"); + } else if (curPunc == "[") { + pushContext(state, stream.column(), "]"); + } else if (curPunc == "(") { + pushContext(state, stream.column(), ")"); + } else if (ctx && ctx.type == "endcase" && curPunc == ":") { + pushContext(state, stream.column(), "statement"); + } else if (curPunc == "newstatement") { + pushContext(state, stream.column(), "statement"); + } else if (curPunc == "newblock") { + if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { + // The 'function' keyword can appear in some other contexts where it actually does not + // indicate a function (import/export DPI and covergroup definitions). + // Do nothing in this case + } else if (curKeyword == "task" && ctx && ctx.type == "statement") { + // Same thing for task + } else { + var close = openClose[curKeyword]; + pushContext(state, stream.column(), close); + } + } + + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; + if (hooks.indent) { + var fromHook = hooks.indent(state); + if (fromHook >= 0) return fromHook; + } + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; + var closing = false; + var possibleClosing = textAfter.match(closingBracketOrWord); + if (possibleClosing) + closing = isClosing(possibleClosing[0], ctx.type); + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); + else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); + else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; +}); + + CodeMirror.defineMIME("text/x-verilog", { + name: "verilog" + }); + + CodeMirror.defineMIME("text/x-systemverilog", { + name: "verilog" + }); + + + + // TL-Verilog mode. + // See tl-x.org for language spec. + // See the mode in action at makerchip.com. + // Contact: steve.hoover@redwoodeda.com + + // TLV Identifier prefixes. + // Note that sign is not treated separately, so "+/-" versions of numeric identifiers + // are included. + var tlvIdentifierStyle = { + "|": "link", + ">": "property", // Should condition this off for > TLV 1c. + "$": "variable", + "$$": "variable", + "?$": "qualifier", + "?*": "qualifier", + "-": "hr", + "/": "property", + "/-": "property", + "@": "variable-3", + "@-": "variable-3", + "@++": "variable-3", + "@+=": "variable-3", + "@+=-": "variable-3", + "@--": "variable-3", + "@-=": "variable-3", + "%+": "tag", + "%-": "tag", + "%": "tag", + ">>": "tag", + "<<": "tag", + "<>": "tag", + "#": "tag", // Need to choose a style for this. + "^": "attribute", + "^^": "attribute", + "^!": "attribute", + "*": "variable-2", + "**": "variable-2", + "\\": "keyword", + "\"": "comment" + }; + + // Lines starting with these characters define scope (result in indentation). + var tlvScopePrefixChars = { + "/": "beh-hier", + ">": "beh-hier", + "-": "phys-hier", + "|": "pipe", + "?": "when", + "@": "stage", + "\\": "keyword" + }; + var tlvIndentUnit = 3; + var tlvTrackStatements = false; + var tlvIdentMatch = /^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/; // Matches an identifiere. + // Note that ':' is excluded, because of it's use in [:]. + var tlvFirstLevelIndentMatch = /^[! ] /; + var tlvLineIndentationMatch = /^[! ] */; + var tlvCommentMatch = /^\/[\/\*]/; + + + // Returns a style specific to the scope at the given indentation column. + // Type is one of: "indent", "scope-ident", "before-scope-ident". + function tlvScopeStyle(state, indentation, type) { + // Begin scope. + var depth = indentation / tlvIndentUnit; // TODO: Pass this in instead. + return "tlv-" + state.tlvIndentationStyle[depth] + "-" + type; + } + + // Return true if the next thing in the stream is an identifier with a mnemonic. + function tlvIdentNext(stream) { + var match; + return (match = stream.match(tlvIdentMatch, false)) && match[2].length > 0; + } + + CodeMirror.defineMIME("text/x-tlv", { + name: "verilog", + + hooks: { + + electricInput: false, + + + // Return undefined for verilog tokenizing, or style for TLV token (null not used). + // Standard CM styles are used for most formatting, but some TL-Verilog-specific highlighting + // can be enabled with the definition of cm-tlv-* styles, including highlighting for: + // - M4 tokens + // - TLV scope indentation + // - Statement delimitation (enabled by tlvTrackStatements) + token: function(stream, state) { + var style = undefined; + var match; // Return value of pattern matches. + + // Set highlighting mode based on code region (TLV or SV). + if (stream.sol() && ! state.tlvInBlockComment) { + // Process region. + if (stream.peek() == '\\') { + style = "def"; + stream.skipToEnd(); + if (stream.string.match(/\\SV/)) { + state.tlvCodeActive = false; + } else if (stream.string.match(/\\TLV/)){ + state.tlvCodeActive = true; + } + } + // Correct indentation in the face of a line prefix char. + if (state.tlvCodeActive && stream.pos == 0 && + (state.indented == 0) && (match = stream.match(tlvLineIndentationMatch, false))) { + state.indented = match[0].length; + } + + // Compute indentation state: + // o Auto indentation on next line + // o Indentation scope styles + var indented = state.indented; + var depth = indented / tlvIndentUnit; + if (depth <= state.tlvIndentationStyle.length) { + // not deeper than current scope + + var blankline = stream.string.length == indented; + var chPos = depth * tlvIndentUnit; + if (chPos < stream.string.length) { + var bodyString = stream.string.slice(chPos); + var ch = bodyString[0]; + if (tlvScopePrefixChars[ch] && ((match = bodyString.match(tlvIdentMatch)) && + tlvIdentifierStyle[match[1]])) { + // This line begins scope. + // Next line gets indented one level. + indented += tlvIndentUnit; + // Style the next level of indentation (except non-region keyword identifiers, + // which are statements themselves) + if (!(ch == "\\" && chPos > 0)) { + state.tlvIndentationStyle[depth] = tlvScopePrefixChars[ch]; + if (tlvTrackStatements) {state.statementComment = false;} + depth++; + } + } + } + // Clear out deeper indentation levels unless line is blank. + if (!blankline) { + while (state.tlvIndentationStyle.length > depth) { + state.tlvIndentationStyle.pop(); + } + } + } + // Set next level of indentation. + state.tlvNextIndent = indented; + } + + if (state.tlvCodeActive) { + // Highlight as TLV. + + var beginStatement = false; + if (tlvTrackStatements) { + // This starts a statement if the position is at the scope level + // and we're not within a statement leading comment. + beginStatement = + (stream.peek() != " ") && // not a space + (style === undefined) && // not a region identifier + !state.tlvInBlockComment && // not in block comment + //!stream.match(tlvCommentMatch, false) && // not comment start + (stream.column() == state.tlvIndentationStyle.length * tlvIndentUnit); // at scope level + if (beginStatement) { + if (state.statementComment) { + // statement already started by comment + beginStatement = false; + } + state.statementComment = + stream.match(tlvCommentMatch, false); // comment start + } + } + + var match; + if (style !== undefined) { + // Region line. + style += " " + tlvScopeStyle(state, 0, "scope-ident") + } else if (((stream.pos / tlvIndentUnit) < state.tlvIndentationStyle.length) && + (match = stream.match(stream.sol() ? tlvFirstLevelIndentMatch : /^ /))) { + // Indentation + style = // make this style distinct from the previous one to prevent + // codemirror from combining spans + "tlv-indent-" + (((stream.pos % 2) == 0) ? "even" : "odd") + + // and style it + " " + tlvScopeStyle(state, stream.pos - tlvIndentUnit, "indent"); + // Style the line prefix character. + if (match[0].charAt(0) == "!") { + style += " tlv-alert-line-prefix"; + } + // Place a class before a scope identifier. + if (tlvIdentNext(stream)) { + style += " " + tlvScopeStyle(state, stream.pos, "before-scope-ident"); + } + } else if (state.tlvInBlockComment) { + // In a block comment. + if (stream.match(/^.*?\*\//)) { + // Exit block comment. + state.tlvInBlockComment = false; + if (tlvTrackStatements && !stream.eol()) { + // Anything after comment is assumed to be real statement content. + state.statementComment = false; + } + } else { + stream.skipToEnd(); + } + style = "comment"; + } else if ((match = stream.match(tlvCommentMatch)) && !state.tlvInBlockComment) { + // Start comment. + if (match[0] == "//") { + // Line comment. + stream.skipToEnd(); + } else { + // Block comment. + state.tlvInBlockComment = true; + } + style = "comment"; + } else if (match = stream.match(tlvIdentMatch)) { + // looks like an identifier (or identifier prefix) + var prefix = match[1]; + var mnemonic = match[2]; + if (// is identifier prefix + tlvIdentifierStyle.hasOwnProperty(prefix) && + // has mnemonic or we're at the end of the line (maybe it hasn't been typed yet) + (mnemonic.length > 0 || stream.eol())) { + style = tlvIdentifierStyle[prefix]; + if (stream.column() == state.indented) { + // Begin scope. + style += " " + tlvScopeStyle(state, stream.column(), "scope-ident") + } + } else { + // Just swallow one character and try again. + // This enables subsequent identifier match with preceding symbol character, which + // is legal within a statement. (Eg, !$reset). It also enables detection of + // comment start with preceding symbols. + stream.backUp(stream.current().length - 1); + style = "tlv-default"; + } + } else if (stream.match(/^\t+/)) { + // Highlight tabs, which are illegal. + style = "tlv-tab"; + } else if (stream.match(/^[\[\]{}\(\);\:]+/)) { + // [:], (), {}, ;. + style = "meta"; + } else if (match = stream.match(/^[mM]4([\+_])?[\w\d_]*/)) { + // m4 pre proc + style = (match[1] == "+") ? "tlv-m4-plus" : "tlv-m4"; + } else if (stream.match(/^ +/)){ + // Skip over spaces. + if (stream.eol()) { + // Trailing spaces. + style = "error"; + } else { + // Non-trailing spaces. + style = "tlv-default"; + } + } else if (stream.match(/^[\w\d_]+/)) { + // alpha-numeric token. + style = "number"; + } else { + // Eat the next char w/ no formatting. + stream.next(); + style = "tlv-default"; + } + if (beginStatement) { + style += " tlv-statement"; + } + } else { + if (stream.match(/^[mM]4([\w\d_]*)/)) { + // m4 pre proc + style = "tlv-m4"; + } + } + return style; + }, + + indent: function(state) { + return (state.tlvCodeActive == true) ? state.tlvNextIndent : -1; + }, + + startState: function(state) { + state.tlvIndentationStyle = []; // Styles to use for each level of indentation. + state.tlvCodeActive = true; // True when we're in a TLV region (and at beginning of file). + state.tlvNextIndent = -1; // The number of spaces to autoindent the next line if tlvCodeActive. + state.tlvInBlockComment = false; // True inside /**/ comment. + if (tlvTrackStatements) { + state.statementComment = false; // True inside a statement's header comment. + } + } + + } + }); +}); diff --git a/covhtmlreport/vendor/codemirror/mode/vhdl/vhdl.js b/covhtmlreport/vendor/codemirror/mode/vhdl/vhdl.js new file mode 100644 index 000000000..97e086e42 --- /dev/null +++ b/covhtmlreport/vendor/codemirror/mode/vhdl/vhdl.js @@ -0,0 +1,189 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Originally written by Alf Nielsen, re-written by Michael Zhou +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function words(str) { + var obj = {}, words = str.split(","); + for (var i = 0; i < words.length; ++i) { + var allCaps = words[i].toUpperCase(); + var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); + obj[words[i]] = true; + obj[allCaps] = true; + obj[firstCap] = true; + } + return obj; +} + +function metaHook(stream) { + stream.eatWhile(/[\w\$_]/); + return "meta"; +} + +CodeMirror.defineMode("vhdl", function(config, parserConfig) { + var indentUnit = config.indentUnit, + atoms = parserConfig.atoms || words("null"), + hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, + multiLineStrings = parserConfig.multiLineStrings; + + var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + + "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," + + "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + + "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + + "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + + "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + + "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); + + var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); + + var isOperatorChar = /[&|~>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/covhtmlreport/vendor/font-awesome/fonts/FontAwesome.otf b/covhtmlreport/vendor/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 000000000..401ec0f36 Binary files /dev/null and b/covhtmlreport/vendor/font-awesome/fonts/FontAwesome.otf differ diff --git a/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.eot b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 000000000..e9f60ca95 Binary files /dev/null and b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.svg b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..855c845e5 --- /dev/null +++ b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/covhtmlreport/vendor/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/covhtmlreport/vendor/jquery/jquery.min.js b/covhtmlreport/vendor/jquery/jquery.min.js new file mode 100644 index 000000000..644d35e27 --- /dev/null +++ b/covhtmlreport/vendor/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("