# flag-finder (rev) ## Summary The web page is a 1919‑checkbox grid. The JavaScript validates the grid against a massive regex; if the regex matches, it prints "Flag found". That regex encodes a nonogram: each column and row has run‑length constraints for `#` blocks. Solve the nonogram and read the rendered text to recover the flag. ## Steps ### 1) Fetch the regex The page serves `script.js` which builds a 1919‑char string of `.` and `#` (one per checkbox) and tests it against `theFlag`. ``` const len = 1919; const theFlag = /^(?=...)(?=^.{1919}$)...$/; ``` ### 2) Parse constraints The regex is a pile of lookaheads. Two parts matter: - **Column constraints**: there are 101 lookaheads of the form `(?=(?:.{c}\..{100-c}){19}...)` which force a fixed `.`/`#` run pattern down each column (19 rows). - **Row constraints**: later, it uses blocks like `(?<=.{101})(?