un instantané qui dépasse la borne @cap:executer-une-commande/moteur rend le code `snapshot_timeout` ET les faits mesurés du dossier
un instantané qui dépasse la borne @cap:executer-une-commande/moteur dit la phrase actionnable : la taille, le nombre de fichiers, la borne, le geste
un instantané qui dépasse la borne @cap:executer-une-commande/moteur le message du refus ajoute la conséquence, jamais une deuxième version de la cause
1241 more
un instantané qui dépasse la borne @cap:executer-une-commande/moteur la ligne de journal porte le code et chaque mesure
un instantané qui dépasse la borne @cap:executer-une-commande/moteur la borne vient aussi de l’environnement, pour un dossier gros mais légitime
un instantané qui dépasse la borne @cap:executer-une-commande/moteur un chemin très long est raccourci PAR LE MILIEU et la phrase finit par le geste
une PANNE n’est jamais lue comme une réponse @cap:executer-une-commande/moteur une borne dépassée REJETTE au lieu de rendre une chaîne vide
une PANNE n’est jamais lue comme une réponse @cap:executer-une-commande/moteur la chaîne des instantanés ne repart JAMAIS d’un commit racine
une LECTURE du magasin ne ment pas non plus @cap:executer-une-commande/moteur `listCheckpoints` LÈVE au lieu de rendre une liste vide
une LECTURE du magasin ne ment pas non plus @cap:executer-une-commande/moteur `diffFile` LÈVE au lieu de dire qu’un fichier photographié est hors instantané
une LECTURE du magasin ne ment pas non plus @cap:executer-une-commande/moteur la ligne de journal d’une lecture dit son opération
une PANNE n’est jamais lue comme une réponse @cap:executer-une-commande/moteur une ref absente est une RÉPONSE : la lecture rend une chaîne vide
une LECTURE du magasin ne ment pas non plus @cap:executer-une-commande/moteur un dossier jamais photographié rend TOUJOURS une liste vide
une LECTURE du magasin ne ment pas non plus @cap:executer-une-commande/moteur un chemin réellement absent des deux états rend TOUJOURS `not_in_snapshot`
un instantané ordinaire ne change pas @cap:executer-une-commande/moteur rend un checkpoint avec son sha, borne par défaut
un instantané ordinaire ne change pas @cap:executer-une-commande/moteur rend toujours `null` quand rien n’a bougé, borne explicite ou non
un instantané ordinaire ne change pas @cap:executer-une-commande/moteur refuse une borne absurde au lieu de retomber en silence sur le défaut
les autres causes portent un AUTRE code @cap:executer-une-commande/moteur `git_missing` quand le binaire est introuvable
les autres causes portent un AUTRE code @cap:executer-une-commande/moteur `snapshot_failed` quand le magasin est inutilisable
la mesure est bornée et le DIT @cap:executer-une-commande/moteur s’arrête au plafond de fichiers et rend des planchers, pas des totaux
la mesure est bornée et le DIT @cap:executer-une-commande/moteur une mesure arrêtée se lit « more than », jamais comme un total
la mesure est bornée et le DIT @cap:executer-une-commande/moteur saute EXACTEMENT les dossiers que le magasin met dans son fichier d’exclusion
la mesure est bornée et le DIT @cap:executer-une-commande/moteur ne compte pas non plus les FICHIERS que l’instantané exclut
la mesure est bornée et le DIT @cap:executer-une-commande/moteur les suffixes exclus sont EXACTEMENT ceux que le magasin écrit comme motifs
la mesure est bornée et le DIT @cap:executer-une-commande/moteur ne descend pas dans les dossiers que l’instantané exclut déjà
la phrase est bornée SANS perdre son geste @cap:executer-une-commande/moteur une sortie de git interminable est coupée, et le dit
les chiffres se lisent pareil partout @cap:executer-une-commande/moteur les octets, en unités que `du -sh` rendrait
les chiffres se lisent pareil partout @cap:executer-une-commande/moteur les milliers, sans dépendre de la locale du processus
les chiffres se lisent pareil partout @cap:executer-une-commande/moteur les durées, en secondes dès qu’elles en valent une
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un objet libre dont les octets ne hachent pas vers son nom est refusé
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un objet dont l’en-tête annonce une autre taille que son contenu est refusé
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un objet lié en dur depuis le workspace n’est pas adopté : le magasin garde les octets vérifiés
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un objet déjà dans le magasin n’est jamais remplacé, même par les mêmes octets décompressés
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un paquet corrompu est refusé, et rien n’en entre dans le magasin
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur un paquet lié en dur depuis le workspace n’est pas adopté : le magasin garde le paquet vérifié
objects leave the scratch only verified, and bound to what was verified @cap:executer-une-commande/moteur l’import est borné par la borne de l’instantané : une bombe zlib le fait échouer, fort
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur un index marqué « assume-unchanged » par le processus planté est refusé, et l’index du magasin reste le bon
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur un index plus gros que ce qu’un index de cet arbre peut peser est refusé SANS être lu
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur la borne de taille laisse passer l’index honnête d’un arbre large et profond, sous-dépôt compris
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur un index dont une entrée ne correspond pas à l’arbre photographié est refusé
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur un index honnête est gardé, sans les extensions qu’un processus planté pourrait forger
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur l’index repris du jetable garde la date que git lui a donnée : une réécriture du même tic reste vue
the scratch index enters the store only checked against the snapshot and rewritten @cap:executer-une-commande/moteur restoreCheckpoint ne garde pas l’index du jetable : un « assume-unchanged » planté ne cache rien à la photo suivante
scratch and incoming folders are reaped when an operation leaves them @cap:executer-une-commande/moteur un jetable de plus d’un jour est retiré à l’opération suivante ; un jetable récent est laissé
checkpoint store isolation: a worktree-reading git never gets the store as a writable root (#628 pass 5) @cap:executer-une-commande/moteur snapshot: every worktree git runs with the store out of its writable roots
checkpoint store isolation: a worktree-reading git never gets the store as a writable root (#628 pass 5) @cap:executer-une-commande/moteur frozen-index status: the worktree git runs with the store out of its writable roots
checkpoint store isolation: a worktree-reading git never gets the store as a writable root (#628 pass 5) @cap:executer-une-commande/moteur restore: the safety snapshot and the checkout run with the store out of their writable roots
readWorkspaceSandbox @cap:executer-une-commande/moteur a new workspace: the switch on, no gesture on the folders
readWorkspaceSandbox @cap:executer-une-commande/moteur persists the switch and the gestures, and the reader returns what was written
readWorkspaceSandbox @cap:executer-une-commande/moteur a column in an unknown shape fails loud with its code, never read as an empty list, and no gesture writes over it
readWorkspaceSandbox @cap:executer-une-commande/moteur an unknown workspace fails loud, it is never read as on
readWorkspaceSandbox @cap:executer-une-commande/moteur a value the reader would refuse is never written
readWorkspaceSandbox @cap:executer-une-commande/moteur a gesture that changes nothing writes nothing, and says what it found
applySandboxFolderGesture — one gesture on the gestures already made @cap:executer-une-commande/moteur add: a removed folder is restored first, even one that would need a confirmation
applySandboxFolderGesture — one gesture on the gestures already made @cap:executer-une-commande/moteur remove: an addition is forgotten, a detected folder is recorded removed once
applySandboxFolderGesture — one gesture on the gestures already made @cap:executer-une-commande/moteur restore: only a removed folder is restored
migration 0125_shell_checklist @cap:executer-une-commande/moteur démarre un vrai Postgres et applique les VRAIES migrations
migration 0125_shell_checklist @cap:executer-une-commande/moteur agents.shell_policy et approval_requests.gate_reasons existent : jsonb, facultatifs
migration 0125_shell_checklist @cap:executer-une-commande/moteur la reprise : un agent Yolo (sans condition) garde tout ; les autres restent à NULL
migration 0128_shell_policy_retired_kinds @cap:executer-une-commande/moteur démarre un vrai Postgres et applique les VRAIES migrations
migration 0128_shell_policy_retired_kinds @cap:executer-une-commande/moteur le vrai migrateur applique 0128 : sa ligne d’historique porte l’empreinte du fichier
migration 0128_shell_policy_retired_kinds @cap:executer-une-commande/moteur retire les deux sortes, reporte own_script sur inline_code, et laisse les autres lignes
migration 0128_shell_policy_retired_kinds @cap:executer-une-commande/moteur retire les raisons des deux sortes sur les demandes, et vide celles qui n’avaient qu’elles
simultaneous gestures on the allowed folders all land @cap:executer-une-commande/moteur starts a real Postgres and applies the real migrations
simultaneous gestures on the allowed folders all land @cap:executer-une-commande/moteur a removal and an addition at the same time: both are in the base, the removed folder stays removed
simultaneous gestures on the allowed folders all land @cap:executer-une-commande/moteur two additions, and a restoration with a removal, at the same time: nothing is lost
bloc `## Git` : seulement pour qui peut lancer git @cap:executer-une-commande/moteur absent sans run_command ni code_task, présent avec l’un ou l’autre
bloc `## Git` : seulement pour qui peut lancer git @cap:executer-une-commande/moteur une session CLI de code garde le bloc : son shell est le sien, hors de la liste Nodal
buildTeamBlock — ce que chaque agent peut réellement faire (#506) @cap:organiser-equipe/moteur CLI runtime: the shell announced is the one the agent row and the brake give its turn @cap:executer-une-commande/moteur
run-job : l’instantané AVANT binding.run (P11) un tour refusé par la BORNE nomme la taille du dossier et le geste @cap:executer-une-commande/moteur
buildClaudeTurnArgs write mode WITHOUT shell: Bash and PowerShell leave the palette, nothing is pre-allowed @cap:executer-une-commande/moteur
buildClaudeTurnArgs write mode WITH shell: Bash and PowerShell are pre-allowed, never also removed @cap:executer-une-commande/moteur
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur job path, claude CLI: commands only in write mode with shell 'auto', minus what is forbidden
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur job path, brake on: Claude still answers, with no shell; Codex does not start
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur job path: the brake engaged during the PREPARATION decides the turn
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur job path: the brake engaged DURING a turn with a shell cuts the CLI
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur chat path, claude CLI: commands only in write mode with shell 'auto', minus what is forbidden
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur chat path, brake on: Claude still answers, with no shell; Codex does not start
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur chat path: the brake engaged during the PREPARATION decides the turn
CLI runtime shell posture, from the agent row @cap:executer-une-commande/moteur chat path: the brake engaged DURING a turn with a shell cuts the CLI
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur job path: the session and the project registry are written before the brake verdict
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur job path: a Stop that lands with the brake is a cancellation, and the session is kept
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur job path: after another run re-claimed the job, the stale run writes no session and no current project
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur chat path: a Stop that lands with the brake is a stopped answer, not a brake failure
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur job path: a turn that answered while the brake was engaged stays a success
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur chat path: a turn that answered while the brake was engaged stays a success
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur chat path: a turn the brake cut keeps what it said, and what it wrote joins the project
a turn cut by the brake ends like any other turn @cap:executer-une-commande/moteur chat path: a turn the brake cut before it wrote or said anything moves no project
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur job path: a turn with a shell does not start when the brake cannot be read
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur job path: a turn with no shell does not need the brake, and runs
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur job path: a brake that stops being readable DURING the turn cuts the CLI
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur chat path: a turn with a shell does not start when the brake cannot be read
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur chat path: a turn with no shell does not need the brake, and runs
an unreadable brake stops a turn with a shell, and says so @cap:executer-une-commande/moteur chat path: a brake that stops being readable DURING the turn cuts the CLI
commandsPlacement — where the commands of each runtime run (#876) @cap:executer-une-commande/moteur nodal runs them through its tools, in the sandbox
commandsPlacement — where the commands of each runtime run (#876) @cap:executer-une-commande/moteur every CLI runtime this runner serves runs them in its own harness, outside the sandbox
commandsPlacement — where the commands of each runtime run (#876) @cap:executer-une-commande/moteur a runtime this runner does not serve is unknown, never assumed confined
watchBrakeDuringTurn @cap:executer-une-commande/moteur a brake read still in flight when the turn ends does not change what stopped it
watchBrakeDuringTurn @cap:executer-une-commande/moteur while the turn runs, the same read stops it
the auto-run brake acts on rows (#917) @cap:executer-une-commande/moteur engaged: every code-running tool of the agent asks, its Autonomous row dormant
the auto-run brake acts on rows (#917) @cap:executer-une-commande/moteur a rule for every agent on run_command does not stand in for the agent row: the brake still writes one
the auto-run brake acts on rows (#917) @cap:executer-une-commande/moteur a Block row stays Block: the brake only hardens
the auto-run brake acts on rows (#917) @cap:executer-une-commande/moteur released: the rows are applied as they are
releaseIfEnded @cap:executer-une-commande/moteur a job still alive keeps its processes: processing, pending (self-chain), awaiting approval or delegation
releaseIfEnded @cap:executer-une-commande/moteur a finished job releases them, whatever the end: completed, failed, cancelled
releaseIfEnded @cap:executer-une-commande/moteur a job whose row is gone releases them too
releaseIfEnded @cap:executer-une-commande/moteur closing one job leaves the other jobs’ scopes open
releaseIfEnded @cap:executer-une-commande/moteur the periodic sweep releases a job stopped while suspended, which no run sees end
every end of a job kills the process one of its commands left running, without the sandbox, in its command’s group (#750) @cap:executer-une-commande/moteur the job ends completed: the run that saw it end kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, in its command’s group (#750) @cap:executer-une-commande/moteur the job ends failed: the run that saw it end kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, in its command’s group (#750) @cap:executer-une-commande/moteur Stop: the job is cancelled while suspended, the sweep kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, in its command’s group (#750) @cap:executer-une-commande/moteur reclaimed: the job of a runner that stopped beating is failed, and its daemon dies
every end of a job kills the process one of its commands left running, without the sandbox, detached from its command (#750) @cap:executer-une-commande/moteur the job ends completed: the run that saw it end kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, detached from its command (#750) @cap:executer-une-commande/moteur the job ends failed: the run that saw it end kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, detached from its command (#750) @cap:executer-une-commande/moteur Stop: the job is cancelled while suspended, the sweep kills the daemon
every end of a job kills the process one of its commands left running, without the sandbox, detached from its command (#750) @cap:executer-une-commande/moteur reclaimed: the job of a runner that stopped beating is failed, and its daemon dies
a lost job releases its processes before the row can be claimed again (#750) @cap:executer-une-commande/moteur the resumed run’s command, started right after the row went back to pending, survives the reclaim
a reaper whose candidate came back to life releases nothing and writes nothing (#750) @cap:executer-une-commande/moteur 'reclaimJobsOfDeadRunners, a job it wo…': its command survives, its row is untouched
a reaper whose candidate came back to life releases nothing and writes nothing (#750) @cap:executer-une-commande/moteur 'resetOrphanedJobs: the run suspends f…': its command survives, its row is untouched
a reaper whose candidate came back to life releases nothing and writes nothing (#750) @cap:executer-une-commande/moteur 'failStalePendingJobs: a worker claims…': its command survives, its row is untouched
run_command — the agent checklist reaches the gate (#464) @cap:executer-une-commande/moteur under destructive_gate, a delete suspends the job with the kind of action named
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur with no stored policy, a real `curl -o` runs, writes the file, and creates no approval
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a stored `download: ask` still asks, and the file is not written
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur with no stored policy, an install still asks
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur with no stored policy, `node -e` and `python -c` run with no approval row
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a stored `inline_code: ask` still asks
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a target outside the workspaces asks, names the place, and the file is not written
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a stored `download: never` blocks: the agent is told, no one is asked, nothing is written
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a script that installs a package asks, names the line, and does not run (#635)
run_command — an agent nobody configured downloads into its workspace without asking (#614) @cap:executer-une-commande/moteur a script that only writes its own file runs, really, with no approval row (#635)
run_command — what reaches a printer or the screen asks, and a decline says where to go (#667) @cap:executer-une-commande/moteur a print through the shell suspends with its kind named; declined, the model reads the remedy
run_command — what a command starts lives for the JOB, and Stop kills the running command (#628, #750) @cap:executer-une-commande/moteur Stop during a run_command: the command is killed at once and the job ends cancelled
run_command — what a command starts lives for the JOB, and Stop kills the running command (#628, #750) @cap:executer-une-commande/moteur a server started by command 1 answers command 2 of the same job, then dies when the job completes
probeWorkspaceGit runs git in the sandbox: a planted core.fsmonitor and filter never run on the host @cap:executer-une-commande/moteur (Windows, MXC available) TÉMOIN : git status sur l’hôte exécute le piège
probeWorkspaceGit runs git in the sandbox: a planted core.fsmonitor and filter never run on the host @cap:executer-une-commande/moteur (Windows, MXC available) la sonde décrit le dépôt sans rien lancer sur l’hôte
takeCliTurnCheckpoints runs git in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) TÉMOIN : une photo prise sur l’hôte exécute le piège du sous-dépôt
takeCliTurnCheckpoints runs git in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) la photo de deux tours ne lance rien sur l’hôte
GET /api/sandbox @cap:executer-une-commande/moteur says the state, the limits and the perimeter with the real paths of this machine
GET /api/sandbox @cap:executer-une-commande/moteur groups agent folders by real folder, counts each writable folder once, and says where each runtime runs its commands
GET /api/sandbox @cap:executer-une-commande/moteur reads the switch from the base at every call: off is said, and so is unavailable
GET /api/sandbox @cap:executer-une-commande/moteur unknown Nodal ports are said with their code, never left out
GET /api/sandbox @cap:executer-une-commande/moteur an unreadable setting answers 500 with its code, never a guessed state
GET /api/sandbox @cap:executer-une-commande/moteur a session caller reads only its own workspace; another one is not found
sandbox — run_command, run_skill_script and proof commands go through ONE confinement @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'run_command': writes inside its workspace, never outside
sandbox — run_command, run_skill_script and proof commands go through ONE confinement @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'run_skill_script': writes inside its workspace, never outside
sandbox — run_command, run_skill_script and proof commands go through ONE confinement @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'proof command (declare_verification)': writes inside its workspace, never outside
broker Node pin @cap:executer-une-commande/moteur la somme épinglée est un SHA-256 (64 hexa) pour chaque arch Windows
ensureBrokerNode @cap:executer-une-commande/moteur télécharge, vérifie la somme, et garde le node.exe sous le dossier du bac à sable
ensureBrokerNode @cap:executer-une-commande/moteur une somme qui ne correspond pas lève BrokerNodeUnavailable, et n’écrit rien
ensureBrokerNode @cap:executer-une-commande/moteur réseau coupé : BrokerNodeUnavailable avec le code et l’erreur réelle
ensureBrokerNode @cap:executer-une-commande/moteur un node.exe en cache dont la somme CORRESPOND n’est pas retéléchargé
ensureBrokerNode @cap:executer-une-commande/moteur un node.exe ALTÉRÉ est écarté au lancement, puis retéléchargé (vérifié) à l’ouverture suivante
verifyPinnedNodeSync @cap:executer-une-commande/moteur passe sur la somme épinglée ; lève BrokerNodeUnavailable si le fichier manque
verifyPinnedNodeSync @cap:executer-une-commande/moteur le produit vérifie contre la somme épinglée de l’arch, pas contre une valeur reçue
production layout: the sandbox is available with Nodal’s data dir in place @cap:executer-une-commande/moteur (Windows, MXC base-container) the probe, whose scripts live under the data dir, says available
production layout: a confined command cannot read Nodal’s data dir, its workspace stays usable, git works in it @cap:executer-une-commande/moteur (Windows, MXC) secrets.key, config.json and pg-data stay unreadable; only the children NAMES are listed
production layout: a confined command cannot read Nodal’s data dir, its workspace stays usable, git works in it @cap:executer-une-commande/moteur (Windows, MXC) the secrets stay unreadable under their 8.3 alias and through a junction to the data dir (review pass 5)
production layout: a confined command cannot read Nodal’s data dir, its workspace stays usable, git works in it @cap:executer-une-commande/moteur (Windows, MXC) the workspace is readable and writable
production layout: a confined command cannot read Nodal’s data dir, its workspace stays usable, git works in it @cap:executer-une-commande/moteur (Windows, MXC) git init, commit, branch and status work in a workspace under the data dir
production layout: a confined command cannot read Nodal’s data dir, its workspace stays usable, git works in it @cap:executer-une-commande/moteur (Windows, MXC) the worktree-reading container (Nodal’s own git) works on the workspace but CANNOT write the checkpoint store (review pass 5, P1)
the host channel cannot be forged from inside the job container @cap:executer-une-commande/moteur (Windows, MXC base-container) a confined command cannot forge a running command’s result: the victim keeps its real exit code and duration
job host — its channel is its standard streams @cap:executer-une-commande/moteur init → ready ; run → started, la sortie de la commande, son code ; l’entrée fermée, il s’arrête (code 0)
job host — its channel is its standard streams @cap:executer-une-commande/moteur n’ouvre aucune connexion : sa source ne charge ni `net` ni `http`
job host — its channel is its standard streams @cap:executer-une-commande/moteur son entrée fermée, il sort 0 et le dit sur sa sortie d’erreur (jamais une raison vide)
a job owns what a command leaves running, in its command’s process group (#750, #755) @cap:executer-une-commande/moteur a grandchild whose parent exited lives for the next command, then dies when the scope closes
a job owns what a command leaves running, in its command’s process group (#750, #755) @cap:executer-une-commande/moteur closing one job never kills the processes of another job
a job owns what a command leaves running, detached from its command (own session) (#750, #755) @cap:executer-une-commande/moteur a grandchild whose parent exited lives for the next command, then dies when the scope closes
a job owns what a command leaves running, detached from its command (own session) (#750, #755) @cap:executer-une-commande/moteur closing one job never kills the processes of another job
a job owns every process it starts outside the sandbox (#750, #755) @cap:executer-une-commande/moteur the running command itself is killed with its whole tree by kill() (timeout, Stop)
a job owns every process it starts outside the sandbox (#750, #755) @cap:executer-une-commande/moteur a runner killed outright leaves nothing of its job once the reclaiming runner calls killLeftoversOfJob (skipped where a detached descendant cannot be found: macOS)
Windows without the sandbox: the job’s Job Object holds what `start /b` detaches (#755) @cap:executer-une-commande/moteur a `start /b` server outlives its command, then dies with the job
Linux without the sandbox: what the job tag catches, and the limit it leaves (#750) @cap:executer-une-commande/moteur measured: a detached (setsid) daemon has LEFT its command’s process group — only the job tag finds it
Linux without the sandbox: what the job tag catches, and the limit it leaves (#750) @cap:executer-une-commande/moteur documented limit: a descendant started with an EMPTIED environment carries no tag and survives the job
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur chaque ouverture en attente est rejetée avec SANDBOX_BROKER_START_FAILED et l’erreur de l’OS
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur une ouverture APRÈS l’échec relance le courtier et échoue de même, au lieu d’écrire à un processus mort
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur un courtier lancé qui MEURT (ici : le SDK introuvable depuis `resolveFrom`) règle la même attente, avec SANDBOX_BROKER_EXITED et ce qu’il a écrit
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur la somme ÉPINGLÉE du Node est vérifiée à CHAQUE lancement : un binaire changé entre deux lancements est écarté, rien n’est lancé (#628, P1-2)
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur écrire à / tuer un conteneur dont le courtier est MORT ne relance AUCUN courtier (seule une ouverture lance, et vérifie son Node)
MxcBroker — a broker that cannot start leaves nothing pending @cap:executer-une-commande/moteur la sonde du backend rend `unavailable` avec le code SANDBOX_BROKER_START_FAILED
hostPrograms — the host path, unchanged @cap:executer-une-commande/moteur TÉMOIN : sur l’hôte, git exécute le piège (le marqueur de l’hôte apparaît)
hostPrograms — the host path, unchanged @cap:executer-une-commande/moteur rejette comme execFile : code non nul dans `code`, borne de temps dans `killed`
openNodalPrograms — git on a planted repo runs IN the sandbox, nothing on the host @cap:executer-une-commande/moteur (Windows, MXC available) git lance la commande plantée (trace) DANS le conteneur, JAMAIS sur l’hôte ; sa sortie est juste
openNodalPrograms — git on a planted repo runs IN the sandbox, nothing on the host @cap:executer-une-commande/moteur (Windows, MXC available) rejette comme execFile dans le conteneur : `code` non nul, `killed` sur la borne
openNodalPrograms — the workspace switch @cap:executer-une-commande/moteur switched off: the session runs on the host, and the program really runs there
openNodalPrograms — the workspace switch @cap:executer-une-commande/moteur switched on: the session goes through the sandbox (its container is asked for)
openNodalPrograms — the workspace switch @cap:executer-une-commande/moteur an unreadable setting opens no session at all, it is never read as on or off
composeAllowedFolders — detected minus removed plus added @cap:executer-une-commande/moteur applies the gestures to what is detected on a real machine, and the opening uses that list
composeAllowedFolders — detected minus removed plus added @cap:executer-une-commande/moteur only gestures are stored: a store installed later appears on its own
composeAllowedFolders — detected minus removed plus added @cap:executer-une-commande/moteur the tool cache is never removed, even when the stored gestures name it
composeAllowedFolders — detected minus removed plus added @cap:executer-une-commande/moteur an added folder that no longer exists is shown missing, ignored at opening, and logged with a code
composeAllowedFolders — detected minus removed plus added @cap:executer-une-commande/moteur a removal whose store is gone stays shown, so the gesture does not vanish
allowedFolderRefusal — the data folder of Nodal can never be allowed @cap:executer-une-commande/moteur refuses the data folder itself and any folder under it, naming the folder that holds it
allowedFolderRefusal — the data folder of Nodal can never be allowed @cap:executer-une-commande/moteur covers this instance too when it lives elsewhere (NODALAI_HOME), not just ~/.nodalai
allowedFolderRefusal — the data folder of Nodal can never be allowed @cap:executer-une-commande/moteur a stored addition inside the data folder is shown refused and makes the opening fail loud
broadFolder — what asks for a confirmation before it is allowed, decided by what the folder holds @cap:executer-une-commande/moteur a volume root and the home folder are broad, and say the Nodal data they hold; any other folder is not
broadFolder — what asks for a confirmation before it is allowed, decided by what the folder holds @cap:executer-une-commande/moteur a folder that holds the home folder asks too, on this machine
broadFolder — what asks for a confirmation before it is allowed, decided by what the folder holds @cap:executer-une-commande/moteur Windows view: C:\Users holds the home and the data, the home holds the data, C:\ is a volume root
broadFolder — what asks for a confirmation before it is allowed, decided by what the folder holds @cap:executer-une-commande/moteur Windows view: the parent of a moved NODALAI_HOME, and of a moved entry, holds Nodal data
broadFolder — what asks for a confirmation before it is allowed, decided by what the folder holds @cap:executer-une-commande/moteur POSIX view: /home holds the home and the data, / is a volume root, a moved instance makes its parent broad
startNodalProxy @cap:executer-une-commande/moteur forwards to a non-Nodal local port, refuses a denied Nodal port (HTTP)
startNodalProxy @cap:executer-une-commande/moteur refuses the denied port on ::1 and on a LAN address too, not only 127.0.0.1
startNodalProxy @cap:executer-une-commande/moteur a remote host on the same port number is NOT refused (only local endpoints)
startNodalProxy @cap:executer-une-commande/moteur CONNECT to a denied local port is refused, by the RESOLVED address
startNodalProxy @cap:executer-une-commande/moteur refuses the denied port reached through a loopback alias (127.0.0.2) and a mapped IPv6
startNodalProxy @cap:executer-une-commande/moteur refuses the denied port reached through a NAME that resolves to loopback
startNodalProxy — pass 4: current interfaces, fail closed, every address @cap:executer-une-commande/moteur une adresse devenue locale APRÈS le démarrage est refusée sur un port de Nodal (interfaces relues à chaque connexion)
startNodalProxy — pass 4: current interfaces, fail closed, every address @cap:executer-une-commande/moteur un nom qui ne se résout pas est REFUSÉ avec un code, et le nom n’est jamais joint
startNodalProxy — pass 4: current interfaces, fail closed, every address @cap:executer-une-commande/moteur chaque adresse résolue est essayée dans l’ordre : une première adresse morte passe à la suivante
startNodalProxy — an upstream that resets the connection is no unhandled error @cap:executer-une-commande/moteur le proxy tient le socket amont : un RST de l’amont après la réponse ne lève aucune erreur non gérée, et la réponse était entière
sandbox network — the proxy regime: third-party local + internet yes, Nodal no @cap:executer-une-commande/moteur (Windows, proxy reachable) the proxy regime is actually exercised where release:check requires it
sandbox network — the proxy regime: third-party local + internet yes, Nodal no @cap:executer-une-commande/moteur (Windows, proxy reachable) a confined command reaches ComfyUI but not a Nodal port, and raw TCP has no route
sandbox network — the proxy regime: third-party local + internet yes, Nodal no @cap:executer-une-commande/moteur (Windows, proxy reachable) a server one command starts is reached by the next command of the same job, through the proxy
sandbox network — the proxy regime: third-party local + internet yes, Nodal no @cap:executer-une-commande/moteur (Windows, proxy reachable) a server one job starts is reached by a command of ANOTHER job, through the proxy (named limit)
sandbox proxy regime — what an unavailable status must say per tier (all systems) @cap:executer-une-commande/moteur appcontainer-dacl: the probe says SANDBOX_PLATFORM_UNSUPPORTED with the tier, and that is what the suite accepts
sandbox proxy regime — what an unavailable status must say per tier (all systems) @cap:executer-une-commande/moteur a tier the SDK probe could not read: the probe says `isolationTier=unknown`, and that is what the suite accepts
sandbox proxy regime — what an unavailable status must say per tier (all systems) @cap:executer-une-commande/moteur the proxy-unreachable code is NOT an acceptable answer on a tier other than base-container, and the tier code is not one on base-container
claudeShellFlags @cap:executer-une-commande/moteur each shell tool is either granted up front or removed from the palette, never left pending
claudeShellFlags @cap:executer-une-commande/moteur extra disallowed tools join the removed ones
claudeShellFlags @cap:executer-une-commande/moteur Codex has no Claude shell tools: its sandbox decides
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur the issue lines, as the gate receives them
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur powershell -Command "cd decoy" & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur pwsh -c "Set-Location decoy" & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cmd /c "pushd decoy" & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur sh -c "cd decoy"; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur sudo sh -c "cd decoy"; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur env cd decoy; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur nohup sh -c "cd decoy"; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur timeout 5 sh -c "cd decoy"; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur xargs sh -c "cd decoy" < list; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur find . -exec sh -c "cd decoy" ; ; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur start /b cmd /c "cd decoy" & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur python -m cd decoy; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur (cd decoy); ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy | cat; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cat a | cd decoy; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy & ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy && true & ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur { cd decoy; } | cat; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur echo $(cd decoy); ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur echo "$(cd decoy)"; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur echo `cd decoy`; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur diff <(cd decoy) a; ./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur bash <<EOF
cd decoy
EOF
./x.sh
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy | more & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur echo (cd decoy) & x.bat
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a job sent to the background
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: Start-Job { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: Start-Job -ScriptBlock { Set-Location decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: sajb { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: $j = Start-Job { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: $j=Start-Job { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: Start-ThreadJob { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: 1..3 | ForEach-Object -Parallel { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: 1..3 | % -Parallel { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: 1..3 | foreach -Pa { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: 1..3 | ForEach-Object -UseNewRunspace { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: 1..3 | % -UseNew { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: Invoke-Command -ComputerName srv { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: icm -Session $s -ScriptBlock { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur PowerShell: a script block run in another runspace or process: Invoke-Command -AsJob { cd decoy }; .\x.ps1
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur a child's moves still reach its own later commands
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur call cd decoy & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur (cd decoy) & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur cd decoy && x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur { cd decoy; } && ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur eval "cd decoy"; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur command cd decoy; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur cd decoy || exit 1; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur cd decoy && ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur if cd decoy; then echo in; fi; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur true && echo; cd decoy; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur if x; then echo; fi; cd decoy; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur ver && echo & cd decoy & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur (cd decoy); .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur cd decoy | Out-Null; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur iex 'cd decoy'; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur & { cd decoy }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur Invoke-Command { cd decoy }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur Invoke-Command -NoNewScope { cd decoy }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur try { cd decoy } catch { }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: false && . ./env.sh; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: true || . ./env.sh; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: true && (cd sub; ./a.sh) && . ./env.sh; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if false; then . ./env.sh; fi; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if true; then echo; else . ./env.sh; fi; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: while false; do . ./env.sh; done; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: until true; do . ./env.sh; done; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: for i in ; do . ./env.sh; done; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: case $x in a) . ./env.sh;; esac; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: { false && . ./env.sh; }; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: f() { . ./env.sh; }; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: function f { . ./env.sh; }; ./x.sh
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: ver && env.bat & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: ver || env.bat & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if exist a env.bat & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if exist a (env.bat) & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if exist a (echo) else (env.bat) & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: for %d in (a) do env.bat & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: for %d in (a) do (env.bat) & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: ver && prepare.bat & x.bat
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if ($x) { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: if ($x) { } else { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: foreach ($d in $a) { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: while ($x) { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: Get-Item a | ForEach-Object { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: 1..3 | % -Process { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: try { } catch { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: function f { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: { .\env.ps1 }; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: Test-Path a && .\env.ps1; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a script that may not run leaves the line where it was, or where it ends: Test-Path a && { echo } | .\env.ps1; .\x.ps1
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur sh: what only bash runs in its own process leaves the folder unknown
a folder move made in the line's own process moves it (#717) @cap:executer-une-commande/moteur a PowerShell subexpression read twice, when it is not quoted, leaves the folder unknown
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur mkdir out && cd out && ./gen.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur mkdir -p build && cd build && cmake .. && make && ./run.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && ./a.sh; ./x.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && (./a.sh; ./b.sh); ./x.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && ./a.sh | ./b.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && (true; true) && ./a.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur bash -c "false && cd sub"; ./x.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if x; then cd out && ./a.sh; fi; ./x.sh: posix runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur ver && cd out && x.bat: windows runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if exist a (cd out && x.bat) & y.bat: windows runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur Test-Path a && cd out && .\x.ps1: windows runs in the folder moved into
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur mkdir -p build && cd build && make; ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && ./a.sh; ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy && (./a.sh; ./b.sh); ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy
./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur false && cd decoy || ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur true || cd decoy && ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if x; then cd out && ./a.sh; fi; ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if false; then cd decoy; fi && ./x.sh: posix, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur ver && cd out & x.bat: windows, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if exist a cd out && x.bat: windows, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur if exist a (cd out) && x.bat: windows, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur Test-Path a && cd out; .\x.ps1: windows, past it, is in either folder
a move that may not run is made for what follows it through && alone (#717, Nodal review) @cap:executer-une-commande/moteur a download joined to the move by && lands where it moved
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur . ./env.sh; ./x.sh: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur if x; then echo; fi; . ./env.sh; ./x.sh: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur true && echo; . ./env.sh; ./x.sh: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur ver && echo & env.bat & x.bat: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur & { .\env.ps1 }; .\x.ps1: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur Invoke-Command { .\env.ps1 }; .\x.ps1: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur try { .\env.ps1 } catch { }; .\x.ps1: only where the script ends
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur cmd: a batch file run directly or with call
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur cmd: a name without its extension may be a batch file of the folder: the gate looks
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur PowerShell: a path without its extension may be a .ps1; a bare name is not looked for in the folder
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur sh: what `.` reads; a script run directly is a child
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur PowerShell: a .ps1 run directly, dot-sourced or called keeps its location
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur a script run as a child moves nothing of the line
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur a script the text does not name leaves the folder unknown
a script run in the line's own process leaves it where it ends (#717) @cap:executer-une-commande/moteur cmd's setlocal keeps a batch file's moves inside it, in a batch file only
a line whose shell is not known, read as both (#717) @cap:executer-une-commande/moteur where cmd and sh read a move differently, the folder after it is not known
a line whose shell is not known, read as both (#717) @cap:executer-une-commande/moteur where they agree, the move is read
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a child process moves nothing of the line
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur read with PowerShell's grammar, `&` only starts the next command of the same process
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a download inside a child is read from its folder
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur the line's own process moves it
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a script run in the line's process leaves the download where it ends
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a name the shell may resolve to a script of the folder, and a move that may not happen
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a batch file's setlocal
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo done >NUL 2>&1
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur x.bat 2>&1
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur curl -o a.jpg https://x/a 2>&1
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur 1>&2 echo hi
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo hi >&2 & x.bat
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur type a.txt <&0 & x.bat
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo x 2> &1
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo x > out.txt & y.bat
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo x>out.txt
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur dir 2>>err.log
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur dir >> "err log.txt" & y.bat
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo x > "out file.txt" & y.bat
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo "a>b" 2>&1
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo H &>NUL
cmd: a redirection, handle duplication included, is no command and no word (#717, Nodal review pass 5) @cap:executer-une-commande/moteur no word of a redirection is looked for as a script
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Force binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -FORCE binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -force binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Fo binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -For binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Forc binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Rec binds ["recurse"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -r binds ["recurse"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -cf binds ["confirm"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -LP binds ["literalpath"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -PSPath binds ["literalpath"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -wi binds ["whatif"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur –Force binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur —Recurse binds ["recurse"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur ―Fo binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Force:$false binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur -Fo:$true binds ["force"] on Remove-Item
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur an ambiguous prefix counts as each parameter it could bind (PowerShell runs nothing)
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur a word that is not a parameter word is null; an unknown name binds nothing
psParameterNames: one word, as PowerShell binds it @cap:executer-une-commande/moteur the powershell CLI takes `/`, a doubled dash and its own aliases, and no `:` value
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force → true
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Fo → true
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:$true → true
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:1 → true
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force: $true → true
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:$false → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:$FALSE → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:0 → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force: $false → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Recurse → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur C:\x → false
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur -Force:$f → null
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur @params → null
psSwitch: a switch set, cleared, or decided at run time @cap:executer-une-commande/moteur `--` ends the parameters: what follows is positional
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur every guarded program, every spelling of -Recurse and -Force, on a drive root
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur the ticket: `Remove-Item -Recurse -Fo C:\`, and the parameters in any order
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur a splat may set both switches: it asks
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur through every wrapper the floor already sees through
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur a switch cleared with `:$false` or `:0` sets nothing
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur still only a machine-wide target: a project folder or one switch is not the floor
the floor reads Remove-Item as PowerShell binds it (#694) @cap:executer-une-commande/moteur rm's own options, abbreviated as getopt allows, and grouped
Start-Process read as PowerShell binds it (open_or_send, #694) @cap:executer-une-commande/moteur a document handed by -FilePath, its prefix, its alias or another dash opens, window or not
Start-Process read as PowerShell binds it (open_or_send, #694) @cap:executer-une-commande/moteur a shell verb, under any spelling, is a desktop action
Start-Process read as PowerShell binds it (open_or_send, #694) @cap:executer-une-commande/moteur a window kept away by any spelling of -NoNewWindow or -WindowStyle Hidden: no open
Start-Process read as PowerShell binds it (open_or_send, #694) @cap:executer-une-commande/moteur a window not surely kept away opens
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a -OutFile C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a -OutF C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a –OutFile C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a -OutFile: C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Invoke-WebRequest https://x/a -outfile:C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Start-BitsTransfer -Source https://x/a –Destination C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Start-BitsTransfer -Source https://x/a -Dest C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Out-File -Encoding utf8 -Fi C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Out-File -Encoding utf8 C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Set-Content -Encoding utf8 C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Add-Content -LP C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Tee-Object -Pa C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Out-File –FilePath C:\out\a writes ["C:\\out\\a"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur iwr https://x/a | Out-File -Bogus C:\out\a writes [null]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Set-Location -Path D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Set-Location -Pat D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Set-Location -StackName s D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur sl -Path:D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur Push-Location -LP D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd -Path D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd –Path D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd -P D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd /d D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd D:\x; iwr https://x -OutFile a moves into ["D:\\x"]
where a PowerShell line writes, read as PowerShell binds it (#694) @cap:executer-une-commande/moteur cd -; iwr https://x -OutFile a moves into [null]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur -Command and -EncodedCommand, under every spelling, are inline code
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur a script file is not inline code
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -File x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -Fi x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur pwsh /f x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur pwsh --file x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -ExecutionPol Bypass -Fil x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -ExecutionPol Bypass x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -WindowS Hidden -NoProf x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -File x.ps1 -Command y runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -- x.ps1 runs ["x.ps1"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur powershell -ExecutionPol Bypass Get-Date runs ["code:Get-Date"]
the powershell CLI read as it binds its words (#694) @cap:executer-une-commande/moteur -Command, under any spelling, is a command line read by commandUnits, not a source
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur a file given to an interpreter, in every language and form
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur a file run directly: a relative path, a script name, source and call
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur a bare name is looked up on the PATH when it is not in the folder
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur the code written into a command, for an interpreter whose code is not a command line
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur what is not a source: modules, command lines already read, subcommands, programs
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur a path decided when the command runs is named as such, not guessed
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur a cd before the file moves where it is read from
programSources: where the code a command runs is (#635) @cap:executer-une-commande/moteur in the strings of a script, a file name is data unless an interpreter is given it
a shell runs its -c even in a group of options (#635) @cap:executer-une-commande/moteur bash -lc and sh -ec are read like bash -c
a shell runs its -c even in a group of options (#635) @cap:executer-une-commande/moteur an option after the script file is the script's own
the language of a file (#635) @cap:executer-une-commande/moteur by its extension, then by its shebang
a control construct runs the command after its keyword (review of #683) @cap:executer-une-commande/moteur sh: if/then/else, while/do, groups and sub-shells
a control construct runs the command after its keyword (review of #683) @cap:executer-une-commande/moteur cmd: if … ( … ), for … do, call inside a block
a control construct runs the command after its keyword (review of #683) @cap:executer-une-commande/moteur PowerShell: if/foreach/while script blocks
a control construct runs the command after its keyword (review of #683) @cap:executer-une-commande/moteur a bracket inside an argument is not a command (review of PR #474)
a command starts where the shell grammar lets one start (review pass 2 of #683) @cap:executer-une-commande/moteur sh: case patterns, select, function bodies, eval and exec
a command starts where the shell grammar lets one start (review pass 2 of #683) @cap:executer-une-commande/moteur cmd: brackets, else and do
a command starts where the shell grammar lets one start (review pass 2 of #683) @cap:executer-une-commande/moteur PowerShell: every script block, and Invoke-Expression
a command starts where the shell grammar lets one start (review pass 2 of #683) @cap:executer-une-commande/moteur what is quoted is an argument, wherever its brackets and keywords are
cmd conditions without brackets, and here-docs fed to a program (#683) @cap:executer-une-commande/moteur cmd: the command after an if condition, without brackets
cmd conditions without brackets, and here-docs fed to a program (#683) @cap:executer-une-commande/moteur a here-doc or here-string fed to a shell or an interpreter is its source
cmd conditions without brackets, and here-docs fed to a program (#683) @cap:executer-une-commande/moteur a file fed on standard input to a shell or an interpreter is its source
cmd conditions without brackets, and here-docs fed to a program (#683) @cap:executer-une-commande/moteur a here-doc fed to anything else is data to sh, and no source
cmd conditions without brackets, and here-docs fed to a program (#683) @cap:executer-une-commande/moteur destructive_gate and the impact line still see a body fed to a shell
here-document operators as sh reads them (review pass 3 of #683) @cap:executer-une-commande/moteur a << in quotes, in a comment or in arithmetic opens nothing
here-document operators as sh reads them (review pass 3 of #683) @cap:executer-une-commande/moteur a body whose end marker never comes stays judged, line by line
a here-document body is no script grammar (review pass 5 of #683) @cap:executer-une-commande/moteur an apostrophe, a quote or a $(( in a body leaves the next here-document whole
a here-document body is no script grammar (review pass 5 of #683) @cap:executer-une-commande/moteur the substitutions of an unquoted body run; a quoted body is data
a here-document body is no script grammar (review pass 5 of #683) @cap:executer-une-commande/moteur a body fed to a shell runs as its commands, quoted marker or not
a here-document body is no script grammar (review pass 5 of #683) @cap:executer-une-commande/moteur an unterminated body stays read as lines
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur a shell reached through a pipe or a wrapper runs the body
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur an interpreter reached through a pipe reads the body as its source
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur a body is data only when a known data reader reads it, piped to nothing that runs
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur an interpreter behind a wrapper reads the body as its source
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur csh and tcsh are shells everywhere: what they are fed and their -c line
the reader of what a command feeds on its input (review pass 6 of #683) @cap:executer-une-commande/moteur no shell is missing from the readers: every shell runs what it is fed
data readers cannot execute, unreadable interpreters are judged (review pass 7 of #683) @cap:executer-une-commande/moteur sed and awk can execute what they read: their body is judged
data readers cannot execute, unreadable interpreters are judged (review pass 7 of #683) @cap:executer-une-commande/moteur expect, an interpreter Nodal does not read, has its body judged as commands
data readers cannot execute, unreadable interpreters are judged (review pass 7 of #683) @cap:executer-une-commande/moteur no data reader can run anything: not a shell, a launcher, an interpreter or an executor
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur the script of the ticket: pip run by the interpreter itself
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur every way a Python script starts a program
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur a value decided at run time is a `$`: a download into it is unreadable, not inside
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur JavaScript, Ruby, Perl and PHP: the strings a program is started with
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur shell, cmd and PowerShell sources are read line by line, continuations joined
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur comments are not read, in any language
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur a script that only reads and writes its own files runs nothing
readSource: the commands a source runs, with their line (#635) @cap:executer-une-commande/moteur a string that begins with a command is read as one, printed or not; a sentence is not
readSource decodes each language string escapes (review of #683) @cap:executer-une-commande/moteur Python: hex, octal, u and U escapes; a raw string stays as written
readSource decodes each language string escapes (review of #683) @cap:executer-une-commande/moteur JavaScript: hex, u and u-brace escapes, and a line continuation
readSource decodes each language string escapes (review of #683) @cap:executer-une-commande/moteur Ruby, PHP, Perl: double quotes decode; single quotes keep the backslash
a program named with its path, in a string (review pass 3 of #683) @cap:executer-une-commande/moteur is judged by its name; a data file or an address is not a program
splitShellWords @cap:executer-une-commande/moteur keeps a quoted path with a space as one word, and cuts on && and pipes
staticShellCategories @cap:executer-une-commande/moteur names the kind of each heavy action
staticShellCategories @cap:executer-une-commande/moteur covers exactly what destructive_gate has always gated
staticShellCategories @cap:executer-une-commande/moteur a script run from a file is not read, and a path outside is not a kind of action
staticShellCategories @cap:executer-une-commande/moteur comfy: the download subcommand downloads, its status, list and cancel siblings do nothing
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur comfy --json model download --url "https://huggingface.co/x/y.safetensors" --relative-path models/checkpoints is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur pip download torch -d wheels is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur pip3 download numpy==2.1 is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur python -m pip download requests is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur hf download black-forest-labs/FLUX.1-dev flux1-dev.safetensors --local-dir models/unet is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur huggingface-cli download stabilityai/sdxl-turbo --local-dir models is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur ollama pull llama3.3 is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git lfs pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git lfs fetch --all is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker pull comfyui/comfyui:latest is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur podman pull docker.io/library/alpine is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur aria2c -x 16 https://example.com/model.safetensors is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur wget https://example.com/a.zip is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git clone https://github.com/comfyanonymous/ComfyUI is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker image pull comfyui/comfyui:latest is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur podman image pull docker.io/library/alpine is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker compose pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker compose -f stack.yml pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker --context remote pull alpine is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git -C models/unet lfs pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git -c lfs.concurrenttransfers=8 lfs fetch --all is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git --no-pager lfs pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git -C repos clone https://github.com/x/y is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker-compose pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur docker-compose -f stack.yml pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur podman-compose pull is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur huggingface-cli --token hf_x download org/model is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur OLLAMA_HOST=127.0.0.1:11435 ollama pull llama3 is a download, not an install
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur pip install pandas is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur python -m pip install torch is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur npm i express is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur pnpm add lodash is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur go install golang.org/x/tools/gopls@latest is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur cargo install ripgrep is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur uv pip install torch is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur comfy node install comfyui-impact-pack is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur comfy install is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur winget install Git.Git is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur brew install ffmpeg is an install, not a download
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur destructive_gate still gates every one of them: the union did not shrink
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur reading or stopping a download is neither (#552), and neither is a version or help check
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur a --help after the arguments does not excuse a delete, a stop or a system change
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur the catastrophic floor lets a bare version or help check through, nothing more
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur git global options do not hide the destructive VCS commands either
a command is filed by what it does: fetching is download, installing is install_software (#581) @cap:executer-une-commande/moteur a version check chained to a real action still gates the action
resolveShellPolicy @cap:executer-une-commande/moteur when nothing is stored, downloads and inline code run, every other kind asks (#614)
resolveShellPolicy @cap:executer-une-commande/moteur a stored "ask" is kept over the default (#614)
resolveShellPolicy @cap:executer-une-commande/moteur keeps what was set and defaults the rest
resolveShellPolicy @cap:executer-une-commande/moteur refuses a stored value it cannot read, instead of guessing
review of PR #474 (Reviewer A): the program that runs, not a word of the text @cap:executer-une-commande/moteur a MENTION in an argument is not the action (P1, false red)
review of PR #474 (Reviewer A): the program that runs, not a word of the text @cap:executer-une-commande/moteur the action is still read where the shell runs it: wrappers, substitutions, paths
review of PR #474 (Reviewer A): the program that runs, not a word of the text @cap:executer-une-commande/moteur closes the list gaps: npm i, pnpm add, curl > file, chmod, chown, net stop (P1)
review of PR #474 (Reviewer A): the program that runs, not a word of the text @cap:executer-une-commande/moteur inline code is its own kind, whatever it does
review of PR #476 (Reviewer C): the program a command really runs @cap:executer-une-commande/moteur pip run as a Python module installs too (P1, a regression against main)
review of PR #476 (Reviewer C): the program a command really runs @cap:executer-une-commande/moteur a variable set before the program does not hide it (P2)
review of PR #476 (Reviewer C): the program a command really runs @cap:executer-une-commande/moteur curl writing to a file through grouped short options downloads (P2)
review of PR #476 (Reviewer C): the program a command really runs @cap:executer-une-commande/moteur iwr downloads like Invoke-WebRequest (P3)
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl -s -o out/a.jpg https://x/a.jpg
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl --output=/tmp/a https://x/a
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl -sLo C:\Users\k\.ssh\authorized_keys https://x/k
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl -O https://x/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl --output-dir /opt/x -O https://x/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur curl https://x/a.zip > /tmp/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur wget https://x/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur wget -O ../a.zip https://x/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur wget -P /var/tmp https://x/a.zip
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur Invoke-WebRequest -Uri https://x/a -OutFile 'D:\hors\a.jpg'
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur iwr https://x/a -OutFile:a.jpg
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur Start-BitsTransfer -Source https://x/a -Destination C:\temp\a
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur aria2c -d /data -o m.bin https://x/m
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur aria2c https://x/m
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur git clone https://github.com/x/y D:\hors-espace
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur git clone --depth 1 -b main https://github.com/x/y
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur git -C /elsewhere clone https://github.com/x/y z
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur pip download torch -d wheels
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur hf download org/m f.safetensors --local-dir models/unet
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur a target it cannot read is null: a variable, a home path, a sub-shell
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur each target says how many of the line's folders come before it
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur the folders the line moves into are kept in order
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur a value glued to a short option is read, by the same reader for curl, wget and aria2c
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur the null sink of the host is no place, for every form of write (#669)
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur every other name is an ordinary place, on every host, shown as written (#669)
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur what a descriptor alias leads to is never guessed: each of these writes is reported (#669)
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur a null sink in the same line never hides a real place, in any order and any form (#669)
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) every write-capable operator yields its target, attached or spaced
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) the two commands of review pass 3 report the outside file
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) adjacent redirections are each found, in both orders, with a sink on either side
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) a duplication, an input, a here-document and a substitution name no file
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) a redirection is read as each shell reads it: in a payload, past an escaped quote, never in quotes
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur redirection operators are scanned one by one, wherever they stand (#669) the null sink of each host is still nowhere in any operator form
downloadWrites: where a download line writes (#614, review P1b) @cap:executer-une-commande/moteur a program with its own store names no path: nothing to judge
cmd's @ prefix and start's switches with a value (#667, review of #682 pass 6) @cap:executer-une-commande/moteur @ before a command is cmd's prefix, at the start and after & && || (
cmd's @ prefix and start's switches with a value (#667, review of #682 pass 6) @cap:executer-une-commande/moteur a quoted @ is text, and PowerShell keeps its @( @{ @args
cmd's @ prefix and start's switches with a value (#667, review of #682 pass 6) @cap:executer-une-commande/moteur start /D takes a path, spaced, glued or quoted; /NODE, /AFFINITY, /MACHINE take a value
cmd's @ prefix and start's switches with a value (#667, review of #682 pass 6) @cap:executer-une-commande/moteur a quoted value of /D is the value, never the title: one reading of start
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur cmd and PowerShell have no backslash escape: a quote after a backslash closes the string
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur sh keeps its backslash escape: the same text is one echo there
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur cmd's quotes are double quotes only; ^ is its escape; ; is no separator there
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur PowerShell: backtick escapes, '' and "" double a quote, & starts a command
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur ( ) { } start a command, glued or spaced, in sh and PowerShell; ( ) in cmd blocks
command boundaries follow the shell that reads the line (#667, review of #682 pass 3) @cap:executer-une-commande/moteur quoted parentheses and braces are text, and code stays inline code only
delete_files: every delete command, from the floor’s own list (#693) @cap:executer-une-commande/moteur each name of the one list is a delete_files kind, an alias where PowerShell reads it
delete_files: every delete command, from the floor’s own list (#693) @cap:executer-une-commande/moteur and the floor reads each of them, recursive and forced, on a whole disk
delete_files: every delete command, from the floor’s own list (#693) @cap:executer-une-commande/moteur the ticket: `erase file.txt` (cmd) and `ri file.txt` (PowerShell)
delete_files: every delete command, from the floor’s own list (#693) @cap:executer-une-commande/moteur the unix delete commands, and rsync deleting
delete_files: every delete command, from the floor’s own list (#693) @cap:executer-une-commande/moteur what deletes nothing is not delete_files
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur every program the reader knows has its case here, and every case is a program it knows
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows msiexec
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows wusa
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows dism
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows pnputil
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows winget
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows choco
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows scoop
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows setup
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows cinst
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows cuninst
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows cup
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-module
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows inmo
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-module
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows update-module
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows upmo
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-script
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-script
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows update-script
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-package
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-package
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-packageprovider
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-psresource
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows isres
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-psresource
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows usres
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows update-psresource
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows udres
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-appxpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-apppackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-msixpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-appxpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-apppackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-msixpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-windowsfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-windowsfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-windowsfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-windowsfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-appxprovisionedpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-appprovisionedpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-provisionedapppackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-provisionedappxpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-appxprovisionedpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-appprovisionedpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-provisionedapppackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-provisionedappxpackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-windowspackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-windowspackage
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-windowscapability
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-windowscapability
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows enable-windowsoptionalfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows disable-windowsoptionalfeature
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows add-windowsdriver
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows remove-windowsdriver
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows install-language
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur windows uninstall-language
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur macos installer
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur macos softwareupdate
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur macos brew
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur macos port
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur macos mas
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux apt-get
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux apt
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux aptitude
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux dpkg
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux rpm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux dnf
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux dnf5
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux yum
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux microdnf
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux tdnf
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux zypper
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux pacman
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux yay
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux paru
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux xbps-install
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux xbps-remove
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux pkg_add
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux pkg_delete
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux apk
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux emerge
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux snap
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux flatpak
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux pkcon
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux nix-env
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux nix
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur linux pkg
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform npm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pnpm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform yarn
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform bun
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pip
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pip3
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pipx
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform uv
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform go
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform gem
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform cargo
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform rustup
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform conda
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform mamba
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform micromamba
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform bundle
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform bundler
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform composer
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform poetry
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pdm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pipenv
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform dotnet
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform nuget
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform deno
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform nvm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform fnm
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform volta
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform pyenv
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform rbenv
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform nodenv
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform asdf
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform mise
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform sdk
install_software: every standard installer of Windows, macOS and Linux, one case per program (#693) @cap:executer-une-commande/moteur cross-platform comfy
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur Windows
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur macOS
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur Linux
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur a package file run as a program goes to its installer
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur wrapped as each OS runs them: the wrapper does not hide the installer, nor its simulation
install_software: written out by hand, one per OS, outside any table (#693) @cap:executer-une-commande/moteur destructive_gate gates what the kind files, a simulation included
install_software: a simulation asks like the install it simulates (#710, Codex pass 2) @cap:executer-une-commande/moteur Codex: `--simulate` as the value of `-c` installs, and asks
install_software: a simulation asks like the install it simulates (#710, Codex pass 2) @cap:executer-une-commande/moteur the same shape on other programs: a dry-run or read flag taken as a value
install_software: a simulation asks like the install it simulates (#710, Codex pass 2) @cap:executer-une-commande/moteur PowerShell: -WhatIf that is a value is no -WhatIf, and a unit has lost its quotes
install_software: a simulation asks like the install it simulates (#710, Codex pass 2) @cap:executer-une-commande/moteur each OS’s simulations ask, written out by hand
install_software: a simulation asks like the install it simulates (#710, Codex pass 2) @cap:executer-une-commande/moteur a read names no action, and stays unflagged
install_software: a verb of the program anywhere in its words asks (#710) @cap:executer-une-commande/moteur nix: a two-value option before `profile install`
install_software: a verb of the program anywhere in its words asks (#710) @cap:executer-une-commande/moteur an option value hides the verb, on each OS
install_software: a verb of the program anywhere in its words asks (#710) @cap:executer-une-commande/moteur Codex pass 2 still asks
install_software: a verb of the program anywhere in its words asks (#710) @cap:executer-une-commande/moteur accepted over-ask: a read that names a verb word of its program asks
install_software: a verb of the program anywhere in its words asks (#710) @cap:executer-une-commande/moteur a read with no verb of its program anywhere stays unflagged
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur Codex: the verb in a variable
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur sh: a parameter expansion, a command substitution, backticks
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur cmd: %VAR%, a batch parameter, delayed !VAR!
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur PowerShell: a variable, a subexpression, a splat
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur a program name decided at run time is inline code already, not read again here
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur the earlier Codex cases still ask
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur accepted over-ask: a read whose operand is decided at run time asks
install_software: a word decided at run time could be the verb, and asks (#710, Codex pass 3) @cap:executer-une-commande/moteur a runtime word elsewhere on the line, or a literal read, stays unflagged
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur Codex: an alias, then its use
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur sh, bash, zsh, fish: an alias, `hash -p`, the alias arrays
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur PowerShell: Set-Alias, New-Alias, Import-Alias, and the alias: and function: drives
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur PowerShell: the alias and function providers however the path names them (Codex, pass 5)
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur cmd: a doskey macro
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur the earlier Codex cases still ask
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur accepted over-ask: a line that only shows an alias or a function
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur a function written with its body is read where it stands, not redefined
a line that redefines a command name asks, as inline code (#710, Codex pass 4) @cap:executer-une-commande/moteur a line that redefines nothing is unchanged
a program named with the extension Windows runs it by is that program (#710, Codex pass 6) @cap:executer-une-commande/moteur an installer named with .cmd, .bat, .ps1 or .exe, in any case, installs
a program named with the extension Windows runs it by is that program (#710, Codex pass 6) @cap:executer-une-commande/moteur a delete command named with its extension deletes
a program named with the extension Windows runs it by is that program (#710, Codex pass 6) @cap:executer-une-commande/moteur a read named with its extension stays a read
a script named after a folder change moves no folder (#710, Codex pass 8) @cap:executer-une-commande/moteur where a download lands is read from the folder the line is in
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur the reproduction of #667: Start-Process -Verb Print, wrapped in powershell -Command
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur the OS launchers, on Windows, macOS and Linux
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur every -Verb of Start-Process is a desktop action: Print, PrintTo, Open, Edit, RunAs
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur printers and spoolers: lp, lpr, Out-Printer, print, a desktop program told to print
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur mail sent from the shell reaches someone
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur a desktop program opens its window, unless it is told to run headless
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur a document run as a command opens in its program
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur a program started in the background, without a window, is judged by what it starts
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur what a launcher starts is judged for every kind of action
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur cmd's start: the first quoted argument is the window title, never what it starts
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur PowerShell's start alias has no title: its quoted first argument is what it starts
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur cmd /c with one quoted line reads the line, never a program named after it
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur a PowerShell script run by name runs, it is not a document
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur the help or version of a launcher prints and exits
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur a mention is not the action: echo, a string, a file name, a subcommand
open_or_send: what reaches the screen, a printer or someone (#667) @cap:executer-une-commande/moteur false positives over everyday commands: none
open_or_send in the policy (#667) @cap:executer-une-commande/moteur is a kind of its own on the checklist, asked by default
open_or_send in the policy (#667) @cap:executer-une-commande/moteur a stored policy without the key reads "ask", every other state kept
open_or_send in the policy (#667) @cap:executer-une-commande/moteur a stored state for it is read, and a wrong one refused
open_or_send in the policy (#667) @cap:executer-une-commande/moteur the approval card says what the command does
cmd's run-time forms name a program decided at run time (#667, review of #682 pass 5) @cap:executer-une-commande/moteur for variables, batch parameters and delayed expansion
cmd's run-time forms name a program decided at run time (#667, review of #682 pass 5) @cap:executer-une-commande/moteur a percent in an argument, or a literal percent, is not a program
desktop programs open a window, on every OS (#667, closes #686) @cap:executer-une-commande/moteur editors, viewers, office, browsers, mail, file managers and terminals
desktop programs open a window, on every OS (#667, closes #686) @cap:executer-une-commande/moteur their command-line uses open no window
exec wrappers: what they run is read (#667, review of #682 pass 5) @cap:executer-une-commande/moteur the floor sees through them
exec wrappers: what they run is read (#667, review of #682 pass 5) @cap:executer-une-commande/moteur every kind too, and their own uses run nothing
exec wrappers: what they run is read (#667, review of #682 pass 5) @cap:executer-une-commande/moteur a wrapper not in the table stays one unit: what it runs is not read
exec wrappers: what they run is read (#667, review of #682 pass 5) @cap:executer-une-commande/moteur the allowlist refuses them, as every program that runs another
a unit that reaches out is never excused as a help or a version (#667, closes #691) @cap:executer-une-commande/moteur a desktop program, a document or a launcher with a help flag still opens a window
a unit that reaches out is never excused as a help or a version (#667, closes #691) @cap:executer-une-commande/moteur a program that prints and exits is still excused
iex runs code the text may not hold (#667, review of #682 pass 8) @cap:executer-une-commande/moteur iex on a variable, an expression or the pipeline of a command is decided at run time
iex runs code the text may not hold (#667, review of #682 pass 8) @cap:executer-une-commande/moteur a literal piped into iex is the code it runs, read for every kind
VS Code extensions change installed software (#667, review of #682 pass 8) @cap:executer-une-commande/moteur installing, updating or removing an extension is install_software, like a package
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur a program named by a variable or a substitution is decided at run time, in every shell
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur a named program, a variable in an ARGUMENT, or a literal in single quotes is not
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur PowerShell: a variable statement is an expression; the command it assigns from is read
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur what it costs: these everyday forms ask
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur iex and Invoke-Expression evaluate their string: inline code, read for every kind
a program decided at run time asks (#667, review of #682 pass 4) @cap:executer-une-commande/moteur a path-qualified program is that file, never the shell builtin of the same name
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur every program documented as running another one has its grammar
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur wsl, timeout, nohup, nice, time, env, sudo, doas, runas, busybox, exec, call: what they start is read
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur every kind, not only this one: a deletion or an install started through them is one
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur cmd: every switch before /c or /k is cmd's own
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur the shell that reads the payload is the one of the wrapper that runs it, nested both ways
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur everyday commands through a wrapper are not read as reaching out
a program that runs another: what it runs is read (#667, review of #682 pass 2) @cap:executer-une-commande/moteur the outer program stays a unit, and a wrapper never makes a read look like work
the catastrophic floor and inline code read through every wrapper (#667, review of #682) @cap:executer-une-commande/moteur the floor sees a machine-wide destroyer through every program that runs another
the catastrophic floor and inline code read through every wrapper (#667, review of #682) @cap:executer-une-commande/moteur a mention, a project folder or a help is not a destroyer, wrapped or not
the catastrophic floor and inline code read through every wrapper (#667, review of #682) @cap:executer-une-commande/moteur inline code is read through every program that runs another
the catastrophic floor and inline code read through every wrapper (#667, review of #682) @cap:executer-une-commande/moteur a script file or a plain program through a wrapper is not inline code
the catastrophic floor and inline code read through every wrapper (#667, review of #682) @cap:executer-une-commande/moteur a backslash before the last quote ends a path; before an inner quote it escapes it
each kind says what it acts on (#715) @cap:executer-une-commande/moteur every kind of the checklist has a target, and only inline code and a download read theirs apart
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur PowerShell: what a pipeline hands Remove-Item, in every spelling
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur PowerShell: a variable, a splat, the pipeline variable, an environment variable
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur PowerShell: `gci *.tmp | ri` asks: the reading does not establish what an upstream command lists
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur cmd: a loop variable, an environment variable, delayed expansion
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur PowerShell binds its parameters only where PowerShell reads the line
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur programs that run a command with words of their own, read as xargs is: parallel, fd -x
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur sh: xargs, find -exec, a variable, a substitution, a loop, the home folder
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur a target the text establishes runs as before, in every shell
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur a pipeline binds nothing when the text names the path: the target is the one written
delete_files: a target the text does not establish asks (#715) @cap:executer-une-commande/moteur the provider cmdlets that erase content or an entry are deletions, read as Remove-Item is
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur stop_programs
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur system_settings
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur install_software
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur open_or_send
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur inline code: its program, as before (#667)
every other kind: what the text does not establish asks (#715) @cap:executer-une-commande/moteur a download is never judged here: where it writes is judged against the workspaces by the gate
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur opaque: a program decided at run time, which asks under any autonomy
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur opaque never blinds the floor: what may run behind the option is read, and reaches it
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur busybox: `--` ends its options, as every reader’s
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur the options each manual holds still find the command, and its kind
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur a glued optional value is no command: `watch -d1 ls` runs ls, unasked as on main
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur GNU parallel with no command runs its arguments or its input: decided at run time, its arguments read
an option a program’s grammar cannot classify makes what it runs opaque (#715) @cap:executer-une-commande/moteur what manages a program runs nothing: `wsl --list`, `busybox --list`
reading options that hide the command is linear, and bounded across nesting (#715) @cap:executer-une-commande/moteur 60 unknown options: timeout, bash -c, wsl, sudo, each with the verdict of 2
reading options that hide the command is linear, and bounded across nesting (#715) @cap:executer-une-commande/moteur nested programs whose options hide the command: bounded, never an exception, the floor held
reading options that hide the command is linear, and bounded across nesting (#715) @cap:executer-une-commande/moteur unknown options: 8 times the options cost about 8 times, not 64
reading options that hide the command is linear, and bounded across nesting (#715) @cap:executer-une-commande/moteur nested programs: 8 times the nesting costs about 8 times, not 64
a PowerShell alias is one only where PowerShell reads the line (#715) @cap:executer-une-commande/moteur cli, clc, clp, rp and ri name any program elsewhere
a PowerShell alias is one only where PowerShell reads the line (#715) @cap:executer-une-commande/moteur read by PowerShell, each is the cmdlet it names
vitest base: the checker @cap:executer-une-commande/moteur is green on a package whose own config merges the base first
vitest base: the checker @cap:executer-une-commande/moteur is red on a package with no config of its own, even when a parent has one
vitest base: the checker @cap:executer-une-commande/moteur is red on a config that does not import the base at all
vitest base: the checker @cap:executer-une-commande/moteur is red when the base is imported but is not what mergeConfig takes first
vitest base: the checker @cap:executer-une-commande/moteur is red on a default export that is not a mergeConfig call
vitest base: the checker @cap:executer-une-commande/moteur accepts every extension vitest accepts
vitest base: the checker @cap:executer-une-commande/moteur is red on a vite.config next to a good vitest config, in any extension
vitest base: the checker @cap:executer-une-commande/moteur is red on two vitest configs
vitest base: the checker @cap:executer-une-commande/moteur ignores a package whose test script does not run vitest
vitest base: this repository @cap:executer-une-commande/moteur every package that runs vitest has its own config merging the shared base first
vitest base: this repository @cap:executer-une-commande/moteur the base carries a timeout above vitest default of 5 s, for tests and hooks
le refus NOMME sa cause @cap:executer-une-commande/moteur un run_command refusé rend le code, les chiffres mesurés et le geste
le refus NOMME sa cause @cap:executer-une-commande/moteur écrit UNE ligne de journal avec le code et les mesures
code_task argv follows the platform shell rule @cap:executer-une-commande/moteur claude write: the rule, asked for Claude with no setting, decides the shell flags
code_task argv follows the platform shell rule @cap:executer-une-commande/moteur claude write: a rule that grants a shell tool reaches the argv
runCli — Stop @cap:executer-une-commande/moteur the job’s Stop kills the running CLI at once, long before its timeout
executeTool — run_command hardline floor @cap:executer-une-commande/moteur Yolo auto-approves an ordinary command (control)
executeTool — run_command hardline floor @cap:executer-une-commande/moteur Yolo CANNOT auto-approve a catastrophic command → forced to await approval
executeTool — run_command hardline floor @cap:executer-une-commande/moteur floor applies to a chained catastrophic command too
the constat’s git runs in the sandbox: a planted core.fsmonitor and filter never run on the host @cap:executer-une-commande/moteur (Windows, MXC available) TÉMOIN : le même git, sur l’hôte, exécute le piège
the constat’s git runs in the sandbox: a planted core.fsmonitor and filter never run on the host @cap:executer-une-commande/moteur (Windows, MXC available) les deux phases du constat lisent le dépôt piégé sans rien lancer sur l’hôte, et constatent l’écriture
checkpoints’ git runs in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) TÉMOIN : une photo prise sur l’hôte exécute le piège du sous-dépôt
checkpoints’ git runs in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) la photo d’un tour par le vrai executeTool ne lance rien sur l’hôte
checkpoints’ git runs in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) le repli du constat sur l’index figé ne lance rien sur l’hôte
checkpoints’ git runs in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) la restauration ne lance rien sur l’hôte
a link to a network share is refused like the share itself (#614, review of #618) @cap:executer-une-commande/moteur the resolver refuses it as a UNC path
a link to a network share is refused like the share itself (#614, review of #618) @cap:executer-une-commande/moteur file_write through it is refused
a link to a network share is refused like the share itself (#614, review of #618) @cap:executer-une-commande/moteur a download through it asks, and names the place
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur the descriptions of every process-starting tool carry the rule, word for word
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_command, several workspaces, at the root: the exact text
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_command, one workspace, at the root: the same rule, without other workspaces
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_command in a sub-folder: the example is right for THAT folder
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur a workspace configured through a junction: its root is still recognised
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur nested workspaces: the deepest one that contains the cwd is named
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_skill_script, skill folder in no workspace: the exact text
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_skill_script, skill folder INSIDE a workspace: says which one
a process started by a tool says how it addresses files (#592) @cap:executer-une-commande/moteur run_skill_script, agent with no workspace: only where it ran
run_command builtin @cap:executer-une-commande/moteur captures stdout and exit code 0 from a real command
run_command builtin @cap:executer-une-commande/moteur captures stderr and a non-zero exit code (returned, not thrown)
run_command builtin @cap:executer-une-commande/moteur runs a compound command (&&) as a single call
run_command builtin @cap:executer-une-commande/moteur runs in the agent workspace as its working directory
run_command builtin @cap:executer-une-commande/moteur resolves an explicit cwd inside the workspace
run_command builtin @cap:executer-une-commande/moteur times out and kills a long-running command (with its children)
run_command builtin @cap:executer-une-commande/moteur caps very large output (truncated=true, ≤ cap)
run_command builtin @cap:executer-une-commande/moteur fails loud when the agent has no workspace configured
run_command builtin @cap:executer-une-commande/moteur rejects a cwd that escapes the workspace (path_traversal_blocked)
run_command — per-agent command allowlist @cap:executer-une-commande/moteur runs a command that is on the allowlist
run_command — per-agent command allowlist @cap:executer-une-commande/moteur refuses a command that is not on the allowlist, and nothing runs
run_command — per-agent command allowlist @cap:executer-une-commande/moteur refuses the unlisted half of a compound command that starts with a listed one
run_command — per-agent command allowlist @cap:executer-une-commande/moteur leaves behaviour unchanged when no allowlist is configured
run_command with a list runs NO shell @cap:executer-une-commande/moteur runs a listed program and returns its real output
run_command with a list runs NO shell @cap:executer-une-commande/moteur groups an argument with double quotes, and a single quote inside is just a character
run_command with a list runs NO shell @cap:executer-une-commande/moteur refuses chaining: there is no shell to chain with
run_command with a list runs NO shell @cap:executer-une-commande/moteur refuses the caret, which five passes of scanner could never read safely
run_command with a list runs NO shell @cap:executer-une-commande/moteur refuses a variable, which nothing would expand anyway
run_command with a list runs NO shell @cap:executer-une-commande/moteur names the character to remove, so the agent can rewrite its command
run_command with a list runs NO shell @cap:executer-une-commande/moteur runs a multi-word entry (npx vitest) through the launcher the PATH resolves, with every argument
run_command with a list runs NO shell @cap:executer-une-commande/moteur does not start the launcher for a command that only shares the first word of a multi-word entry
run_command with a list runs NO shell @cap:executer-une-commande/moteur resolves the program from the PATH, never from the working directory
run_command with a list runs NO shell @cap:executer-une-commande/moteur leaves an agent with NO list on the shell, unchanged
run_skill_script Stop during a run_skill_script: the script is killed at once and its marker stops growing @cap:executer-une-commande/moteur
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) writes inside its workspace
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) shell redirection outside: refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) overwriting an existing file outside: refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) node -e outside: refused, canary intact, the refusal names the path
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) a Python script outside: refused, canary intact, the refusal names the path
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) a child process outside: refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) a junction created by the command, written through: refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) a symlink created by node, written through: refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) a junction made BEFORE the command (outside the sandbox), written through: refused
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) rename OUT of the workspace (move, fs.renameSync): refused, the file stays inside
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) delete outside (del, fs.unlinkSync, rmdir): refused, canary intact
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'start /b': the server outlives its command, and it dies when the job ends
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'a detached child (spawn detached + un…': the server outlives its command, and it dies when the job ends
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) 'PowerShell Start-Process': the server outlives its command, and it dies when the job ends
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) closing one job does not touch another job’s processes
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) Stop (the job signal) kills the running command at once
sandbox, Windows (MXC) — run_command writes only inside its folders @cap:executer-une-commande/moteur (Windows only: the macOS and Linux backends come in later PRs of #628 — skipped on a Windows without the MXC base-container tier, e.g. the GitHub Windows Server runner) npm install of a local tarball works confined (offline, cache in the Nodal tool cache)
sandbox, Windows without the MXC base-container tier — run_command runs unconfined and the reason is said @cap:executer-une-commande/moteur the status names the tier; the command runs; its result says it was not confined, with the code
runShellCommand — bac à sable indisponible @cap:executer-une-commande/moteur la commande tourne comme avant, le résultat dit `unconfined` avec le code, la raison est journalisée UNE fois
runShellCommand — bac à sable indisponible @cap:executer-une-commande/moteur un backend qui se déclare indisponible : sa raison est citée telle quelle
runShellCommand — bac à sable disponible qui ne démarre pas @cap:executer-une-commande/moteur la commande est REFUSÉE avec la raison du backend, et ne tourne pas sans lui
runShellCommand — bac à sable disponible qui ne démarre pas @cap:executer-une-commande/moteur dans une séquence de preuve, le refus est une panne d’infra (infra_error), jamais un vert
runShellCommand — le Stop du job (#750) @cap:executer-une-commande/moteur le signal tue la commande en cours : ABORTED, bien avant son timeout, et son processus est mort
runShellCommand — le Stop du job (#750) @cap:executer-une-commande/moteur un job déjà arrêté ne lance plus rien
runShellCommand — sans bac à sable, ce qu’une commande laisse tourner vit jusqu’à la fin du JOB @cap:executer-une-commande/moteur la commande 2 joint le serveur que la commande 1 a lancé ; fermer le job le tue
runShellCommand — sans bac à sable, ce qu’une commande laisse tourner vit jusqu’à la fin du JOB @cap:executer-une-commande/moteur fermer UN job ne touche pas aux processus d’un autre
a command that ran without the sandbox says so in its result @cap:executer-une-commande/moteur run_command: `sandbox` = { confined: false, code }
a command that ran without the sandbox says so in its result @cap:executer-une-commande/moteur run_skill_script: `sandbox` = { confined: false, code }
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur on by default: the command goes to the container, with the job folders
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur switched off: run_command runs unconfined, writes for real, and says SANDBOX_DISABLED
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur switched off: run_skill_script says SANDBOX_DISABLED too, its real output intact
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur the setting is re-read at every command: on, off, on again within the same job
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur a folder the user added reaches the writable roots of the next container
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur an unreadable setting refuses the command with its code, and nothing runs
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur a job created without a workspace (an internal /api/agent caller) follows the workspace of its agent
the workspace sandbox switch, through the real tools @cap:executer-une-commande/moteur a job whose agent belongs to no workspace either is refused, never run under a guessed setting
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur the run of the ticket: a Python script that pip-installs asks for installing software
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur the notifier receives what the gate read, the same as the row
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur "never" refuses the script, tells the agent what, and asks no one
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur every interpreter and every way of running a file, on every OS
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur the code written into a command is read the same way
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur a script run by a script is read too, and named where it is
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur a script that only reads and writes its own files runs unasked
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur a binary run directly is a program like any other: judged by its name
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur a download in a script runs inside the workspace, and asks when the script sends it outside
a command that runs a script is judged by the script (#635) @cap:executer-une-commande/moteur past a cd that may fail, the folder the line started in is judged too (#723)
a script that cannot be read is code nobody read ahead (#635) @cap:executer-une-commande/moteur outside the workspaces, missing, too large, or named at run time: asked under "ask", and why
a script that cannot be read is code nobody read ahead (#635) @cap:executer-une-commande/moteur by default it runs, like a script downloaded then run in the same line
a script that cannot be read is code nobody read ahead (#635) @cap:executer-une-commande/moteur a script path decided at run time asks even by default
a script that cannot be read is code nobody read ahead (#635) @cap:executer-une-commande/moteur "never" refuses it
a script that cannot be read is code nobody read ahead (#635) @cap:executer-une-commande/moteur a bare name not in the folder is a program from the PATH, not a missing script
review pass 1 of #683: no source a command runs goes unjudged @cap:executer-une-commande/moteur P1: a source with a NUL byte is still read; one that is not text is unread
review pass 1 of #683: no source a command runs goes unjudged @cap:executer-une-commande/moteur P2: string escapes are decoded as the language decodes them
review pass 1 of #683: no source a command runs goes unjudged @cap:executer-une-commande/moteur P2: the command inside a one-line control construct is judged
review pass 1 of #683: no source a command runs goes unjudged @cap:executer-une-commande/moteur P2: past the reading budget, the rest is unread, never dropped
review pass 2 of #683: a script the system runs is source, and every shell construct is read @cap:executer-une-commande/moteur C1: a script run directly that holds a NUL is still read
review pass 2 of #683: a script the system runs is source, and every shell construct is read @cap:executer-une-commande/moteur C1: an executable (ELF, PE, Mach-O) is a program; bytes that are neither text nor one are unread
review pass 2 of #683: a script the system runs is source, and every shell construct is read @cap:executer-une-commande/moteur C2: case, select, functions, switch, try and trap blocks are read, in sh and PowerShell
cmd conditions and here-docs at the gate (#683) @cap:executer-une-commande/moteur a cmd script with if, without brackets, is read
cmd conditions and here-docs at the gate (#683) @cap:executer-une-commande/moteur a here-doc in a script is read in the language of the program it feeds, at its line
cmd conditions and here-docs at the gate (#683) @cap:executer-une-commande/moteur a here-doc and a here-string in the command itself, and a file on standard input
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur pass 5: an apostrophe in a body does not hide the next here-document
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur C2 (pass 4): a comment after ) and (( )) arithmetic open no here-document
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur P2 (pass 4): destructive_gate holds a here-document fed to a shell
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur C2: a quoted << opens no here-document, and the lines after it are judged
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur C3: a machine-wide destroyer in a script reaches the floor, typed or not
review pass 3 of #683: no line dropped, and the hard floor reads the code too @cap:executer-une-commande/moteur C3: a string that only mentions a destroyer is no command
review pass 6 of #683: the reader of a here-document @cap:executer-une-commande/moteur a body piped to sh, or fed to sudo -u x sh, is judged as commands
isCatastrophicCall needs only the workspaces @cap:executer-une-commande/moteur gives the same verdict from { workspaces } as from a full context
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur delete_files: the forms of the ticket ask, naming the kind and the command
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur delete_files: a target the text establishes runs as before
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur a line read in a script is judged the same way, and the card says where
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur every other kind follows the same rule
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur the two cases that already asked are instances of the rule: their verdicts are unchanged
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur one reading of a word decided at run time for every kind: a download target too
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur several kinds in one line: each asks for its own target, and only for it
an allowed kind asks when the text cannot establish its target (#715) @cap:executer-une-commande/moteur forms that had no kind at all are now deletions, held under the default policy
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur "ask" holds the command, with each kind of action and the command named
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur download allowed, install asked: a model or package download runs, an install is held (#581)
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur "never" blocks, tells the agent what, and asks no one
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur an ordinary command runs as before
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur inline code runs by default, a stored "ask" asks, and "never" refuses it
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur what the owner allows runs: a deletion allowed for this agent is not asked
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur a Yolo rule does not lift a "never": the list only hardens
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur a Yolo agent as migration 0125 leaves it runs everything unasked
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur a Yolo agent as migration 0125 is asked for a deletion whose files the text does not name (#715)
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur without a checklist (a replay a human approved), the command is not judged again
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur a declared proof is judged the same way: its commands will run unasked later
the autonomy checklist at the gate (#464) @cap:executer-une-commande/moteur a mention of rm in a commit message does not refuse the commit (review of PR #474, P1)
an agent nobody configured downloads without asking (#614) @cap:executer-une-commande/moteur under destructive_gate and under a Yolo rule, a download runs with no approval row
an agent nobody configured downloads without asking (#614) @cap:executer-une-commande/moteur a stored "ask" for downloads still asks, naming the download
an agent nobody configured downloads without asking (#614) @cap:executer-une-commande/moteur what a download is chained to is still judged: code runs, an install and a deletion ask
an allowed download asks when it writes outside the workspace (#614, review of #618) @cap:executer-une-commande/moteur a target outside the workspaces asks, and the card says where
an allowed download asks when it writes outside the workspace (#614, review of #618) @cap:executer-une-commande/moteur a target inside the workspace runs, absolute or relative, and a later cd does not move it
an allowed download asks when it writes outside the workspace (#614, review of #618) @cap:executer-une-commande/moteur each place outside is attached to the command that writes there
an allowed download asks when it writes outside the workspace (#614, review of #618) @cap:executer-une-commande/moteur a download through a dangling link is judged where the link points
an allowed download asks when it writes outside the workspace (#614, review of #618) @cap:executer-une-commande/moteur a stored "never" for downloads blocks, inside the workspace too
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur the exact command of 02/10, from a resolved folder, runs with no approval row
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a download sent to the null sink of the host asks no one, in any form
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a download really outside the workspace still asks, naming the place
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur the card names the place as written: never a path the command did not write (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur the null sink in the line never hides the real place, in any form (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur $null is a plain file name for the shell run_command uses, so it asks (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a redirection inside a wrapper or after an escaped quote still asks (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur every name that is not the null sink is a place, and asks, shown as written (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a Windows device name is a device on Windows and a real file elsewhere (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur the host the commands run on decides what a Windows device name is, on any machine running the tests (#669)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a script named after an interpreter is read as the script it is (#710, Codex pass 7)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur a script named after cd moves no folder of the reading (#710, Codex pass 8)
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur run_command with no cwd and several workspaces: the agent is told, no one is asked
nowhere is not a place, and an unaddressed start never reaches a person (#669) @cap:executer-une-commande/moteur code_task, the other tool with a starting folder, refuses the same way
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur with the default policy, each is held for the person, under destructive_gate and under a Yolo rule
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur an agent stored before #667, even with every kind allowed, is asked
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur allowed by the owner, it runs; a background dev server is never held
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur "never" refuses, asks no one, and points the agent to a tool that asks the person
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur a program decided at run time asks under the default policy, and "never" on inline code refuses it
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur "never" refuses what a group or a block starts, glued or spaced
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur every kind refused says the same remedy, never naming a tool
what reaches the screen, a printer or someone is asked (#667) @cap:executer-une-commande/moteur after a decline, the model reads which kinds held the command and the same remedy
a line that redefines a command name asks (#710, Codex pass 4) @cap:executer-une-commande/moteur asks under the default policy, and "never" on inline code refuses it
a line that redefines a command name asks (#710, Codex pass 4) @cap:executer-une-commande/moteur a helper function written with its body runs unasked
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur cmd: the batch file after one that changes folder is read from that folder
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur cmd: a batch file's setlocal takes its moves back at its end, and at endlocal
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur sh: what `.` reads moves the line; a script run directly does not
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur sh: after `source`, which only bash has, the folder is not known: what follows asks
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur PowerShell: a .ps1 a script runs leaves it in the location the .ps1 ends in
a script run in the line's own process leaves the line where it ends (#717) @cap:executer-une-commande/moteur a script of the line that is not read leaves the folder unknown: what follows asks
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cmd /c "cd decoy" & cleanup.bat reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur powershell -Command "cd decoy" & cleanup.bat reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy | more & cleanup.bat reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur bash -c "cd decoy" && ./cleanup.sh reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur (cd decoy) && ./cleanup.sh reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy | cat; ./cleanup.sh reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur cd decoy & ./cleanup.sh reads the starting folder’s cleanup
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur a child's own later commands run where it moved
a folder move made in a child process stays there (#717) @cap:executer-une-commande/moteur a script line's child keeps its move from the script's next lines
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a script run in the line's process that leaves the workspace takes the download out with it
where a download lands follows the same folder moves (#717) @cap:executer-une-commande/moteur a child that leaves the workspace does not take the download with it
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur false && cd decoy; ./cleanup.sh reads the starting folder’s cleanup.sh
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur if false; then cd decoy; fi; ./cleanup.sh reads the starting folder’s cleanup.sh
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur for i in ; do cd decoy; done; ./cleanup.sh reads the starting folder’s cleanup.sh
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur cd nonexistent; ./cleanup.sh reads the starting folder’s cleanup.sh
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur mkdir out; cd out; ./cleanup.sh reads the starting folder’s cleanup.sh
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur the folder moved into too
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur a file in no folder of the line runs nothing, as in the starting folder
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur a script's move, on an earlier line of it, is a move too
past its && chain, a move may not have been made: the files of every folder the line may be in are read (#717, Nodal review passes 1 and 3) @cap:executer-une-commande/moteur cmd: a move on the right of && or in an if body
a move joined by && to what follows is made for it (#717, Nodal review) @cap:executer-une-commande/moteur mkdir out && cd out && ./gen.sh reads out/gen.sh only
a move joined by && to what follows is made for it (#717, Nodal review) @cap:executer-une-commande/moteur mkdir -p build && cd build && cmake .. && make, and a download there, ask nothing
a script named without its extension is the script the shell finds (#717, Nodal review pass 1) @cap:executer-une-commande/moteur cmd: a bare name or a path that is a batch file of the folder is read, and leaves the line where it ends
a script named without its extension is the script the shell finds (#717, Nodal review pass 1) @cap:executer-une-commande/moteur a batch file found that may not run: both folders; a program: the one the line is in
a script named without its extension is the script the shell finds (#717, Nodal review pass 1) @cap:executer-une-commande/moteur a folder the gate cannot look into: what the word is, and the folder after it, are not known
a script named without its extension is the script the shell finds (#717, Nodal review pass 1) @cap:executer-une-commande/moteur cmd: an .exe of the same name comes first; a name not in the folder is a program
a script named without its extension is the script the shell finds (#717, Nodal review pass 1) @cap:executer-une-commande/moteur PowerShell: a path without .ps1 is the .ps1 of the folder
a bare name not found after a move is a program of the PATH (#717, Nodal review pass 2) @cap:executer-une-commande/moteur cd sub && npm.cmd test asks nothing
a bare name not found after a move is a program of the PATH (#717, Nodal review pass 2) @cap:executer-une-commande/moteur cd sub & npm.cmd test asks nothing
a bare name not found after a move is a program of the PATH (#717, Nodal review pass 2) @cap:executer-une-commande/moteur cd out && run.bat asks nothing
a bare name not found after a move is a program of the PATH (#717, Nodal review pass 2) @cap:executer-une-commande/moteur cd sub; deploy.sh asks nothing
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur sh: past `cd sub;`, a download and a script are judged from the starting folder too
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur cmd: #723's line, the starting folder's prepare.bat read after a cd that may fail
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur PowerShell: `cd missing; .\run` reads the starting folder's run.ps1
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur PowerShell: a Set-Location, then a download, judged from both folders
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur a word that may be a script, in a folder the gate cannot look into, asks (pass 4): a harmless prepare.bat in the workspace
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur a word that may be a script, in a folder the gate cannot look into, asks (pass 4): none
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur in a folder not known, a word that may be a script of it asks
a cd may fail whatever the disk holds when the gate judges: every folder the line may be in is judged (#723, Nodal review pass 3) @cap:executer-une-commande/moteur a line may be in at most MAX_FOLDERS folders: past that, not known
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo done >NUL 2>&1 reads no decoy
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur x.bat 2>&1 reads no decoy
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur curl -o a.jpg https://x/a 2>&1 reads no decoy
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur 1>&2 echo hi reads no decoy
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur echo hi >&2 & x.bat reads no decoy
cmd: the & of a handle duplication separates nothing (#717, Nodal review pass 5) @cap:executer-une-commande/moteur cd .. & echo done >NUL 2>&1 asks nothing
the gate judges the text, not the machine it runs on (#717) @cap:executer-une-commande/moteur cmd: a download target written with backslashes leaves the workspace
the gate judges the text, not the machine it runs on (#717) @cap:executer-une-commande/moteur PowerShell: a Set-Location, then a download, judged from both folders
the gate judges the text, not the machine it runs on (#717) @cap:executer-une-commande/moteur PowerShell on a POSIX host: a backslash still separates folders
the gate judges the text, not the machine it runs on (#717) @cap:executer-une-commande/moteur a folder move written with backslashes enters each folder it names
the gate judges the text, not the machine it runs on (#717) @cap:executer-une-commande/moteur a download from a folder entered with backslashes is judged from there
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: curl -o .\./evil.zip https://x/f writes outside, and asks
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: curl https://x/f > .\./out writes outside, and asks
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: curl -o \.\./evil.zip https://x/f writes outside, and asks
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: curl -o .\.\/evil.zip https://x/f writes outside, and asks
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: wget -O .\./evil.zip https://x/f writes outside, and asks
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: a cd written with escapes moves where sh goes
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: a program name written with escapes is the program sh runs
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur each reading is judged from where the line starts, never from the other's folders
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: a script written with escapes is the one sh runs
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: an escaped backslash inside the workspace stays inside
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur sh: a backslash sh keeps (in quotes) is still read as a separator: one question too many
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur PowerShell on a POSIX host, inline: a backslash still separates folders
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur cmd: a caret is taken out as cmd takes it (`echo .^.\evil.zip` prints `..\evil.zip`)
a path is judged as the shell that runs the line hands it on (#717, Nodal review pass 7) @cap:executer-une-commande/moteur cmd and PowerShell keep a backslash: #669 unchanged on a Windows host
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: cur\l https://x/f > .\./out asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: \curl https://x/f > .\./out asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: ir\m https://x/f > .\./out asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: cu^rl https://x/f > ..\out asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: curl https://x/f > .^.\out asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: curl https://x/f > ""../x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: curl https://x/f > ""../x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: curl https://x/f > ''..\x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: curl https://x/f > ''..\x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: curl https://x/f > "a"/../../x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: curl https://x/f > "a"/../../x asks
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur posix: curl URL > out.txt asks nothing
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur windows: curl URL > out.txt asks nothing
a redirection is read with its command, by each shell that reads the line (#717, Nodal review pass 8) @cap:executer-une-commande/moteur a sh script on a Windows host: its line is read by sh, the download seen there
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: ( curl https://x/a ) > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: { curl https://x/a; } > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: ( ( curl https://x/a ) ) > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: { ( curl https://x/a ); } > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: for i in 1; do curl https://x/a; done > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: while true; do curl https://x/a; done > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: if true; then curl https://x/a; fi > ../outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur windows: ( curl https://x/a ) > ..\outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur windows: ( ( curl https://x/a ) ) > ..\outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur windows: if 1==1 ( curl https://x/a ) > ..\outside.txt asks
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur PowerShell: a parenthesis redirected writes its output
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: ( cd ..; curl https://x/a ) > out.txt is opened before the group runs, in the folder the line is in
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur windows: (cd .. & curl https://x/a) > out.txt is opened before the group runs, in the folder the line is in
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur posix: ( npm test ) > log.txt 2>&1 asks nothing
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur windows: ( npm test ) > log.txt 2>&1 asks nothing
a group's redirection is its commands' (#717, Nodal review pass 9) @cap:executer-une-commande/moteur a redirection alone runs nothing and lands no download
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur for u in "$@"; do if [[ $u == https* ]]; then curl "$u"; fi; done > ../log asks
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur while read l; do case $l in a) curl https://x/a;; esac; done > ../log asks
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur for i in 1; do while true; do if true; then curl https://x/a; fi; break; done; done > ../log asks
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur if true; then while true; do ! curl https://x/a; break; done; fi > ../log asks
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur ! for i in 1; do curl https://x/a; done > ../log asks
sh compounds nest on every word in command position (#717, Nodal review pass 10) @cap:executer-une-commande/moteur a loop's redirection inside an if is the loop's, not the if's first command's
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
done) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
if) curl https://x/a;;
for) echo;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
(done) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
\done) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
d\one) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
"done") curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
a) echo;&
done) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in done) curl https://x/a;; esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
done) ( curl https://x/a ) > ../f;;
esac asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in done) ( curl https://x/a ) > ../f;; esac asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur case $x in
start|done) curl https://x/a;;
esac > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur time for i in 1; do curl https://x/a; done > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur time -p for i in 1; do curl https://x/a; done > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur coproc { curl https://x/a; } > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur coproc NAME { curl https://x/a; } > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur coproc while true; do curl https://x/a; break; done > ../f asks
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur a pattern named after a closer closes nothing: the loop's redirection is the loop's
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur `;&` falls through in the same shell: a cd before it moves what follows
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur a pattern keeps its clause's commands may-not-run: the folder before the move is read too
a case pattern is no reserved word, and time, coproc, ! lead to a command (#717, Nodal review pass 11) @cap:executer-une-commande/moteur an ordinary case on several lines asks nothing
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur case $mode in @(dev|prod)) (rm -rf build);; esac: the clause after an extglob pattern is read
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur case $x in !(z)) (rm -rf build);; esac: the clause after an extglob pattern is read
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur case $x in @(a|b(c))) (rm -rf build);; esac: the clause after an extglob pattern is read
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if true; then case $x in done) curl https://x/a;; esac > ../f; fi: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur for f in 1; do case $f in done) curl https://x/a;; esac > ../f; done: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if false; then :; else case $x in done) curl https://x/a;; esac > ../f; fi: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if case $x in done) curl https://x/a;; esac > ../f; then :; fi: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur ! case $x in done) curl https://x/a;; esac > ../f: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur time case $x in done) curl https://x/a;; esac > ../f: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur coproc case $x in done) curl https://x/a;; esac > ../f: the case, wherever a command starts, ends at `in`; `done)` is its pattern
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur (case $x in a) curl https://x/a;; esac) > ../f asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if true; then case $x in done) curl https://x/a;; esac > ../f; fi asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur for f in 1; do case $f in done) curl https://x/a;; esac > ../f; done asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if false; then :; else case $x in done) curl https://x/a;; esac > ../f; fi asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur if case $x in done) curl https://x/a;; esac > ../f; then :; fi asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur ! case $x in done) curl https://x/a;; esac > ../f asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur time case $x in done) curl https://x/a;; esac > ../f asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur coproc case $x in done) curl https://x/a;; esac > ../f asks
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur a case in a substitution asks nothing
one reader of case patterns, as bash reads them (#717, Nodal review pass 12) @cap:executer-une-commande/moteur a pattern that never ends is said: the line asks
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur case $x in $(rm -rf / $(echo x))) :;; esac: the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur bash -c 'case $x in $(rm -rf / $(echo x))) :;; esac': the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur case $x in `rm -rf /`) :;; esac: the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur cat <<EOF
$(rm -rf / $(echo x))
EOF: the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur echo "$(case $x in a) rm -rf /;; esac)": the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur echo "$(echo '(' ; rm -rf /)": the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur echo "$(echo "(" ; rm -rf /)": the floor sees rm -rf /
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur an arithmetic expansion is no code: a variable named like a program runs nothing
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur a substitution with a quoted parenthesis in a pattern is read
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur an arithmetic pattern asks nothing
a substitution is code wherever it stands, nested ones read whole (#717, Nodal review pass 13) @cap:executer-une-commande/moteur every command of nested substitutions is read, quoted or not
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo case; rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(grep case x; rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(rm -rf /; echo $'a\'b')": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo $'a\'b'; rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo $'a\'b'; rm -rf /: the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo ${x//)/}; rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo $[1)]; rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(case $x in a) echo esac;; b) rm -rf /;; esac)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo a # )
rm -rf /)": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo hi; rm -rf /": the floor sees rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur PowerShell: Write-Output "$(Write-Output a # )
Remove-Item -Recurse build)", a comment closes nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur PowerShell: Write-Output "$(<# ) #> Remove-Item -Recurse build)", a comment closes nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur nested ten thousand deep: no crash, and the line asks
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur posix: echo $((a+b)) asks nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur posix: echo "$(date)" asks nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur posix: git commit -m "$(cat msg)" asks nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur posix: echo "$(case $x in a) echo hi;; esac)" asks nothing
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur PowerShell: "$($x.Name)" is no action
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo case in x) ; rm -rf / ": the floor sees no rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(echo $'a\'b') ; rm -rf / ": the floor sees no rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur echo "$(case $x in a) echo hi;; esac) ; rm -rf / ": the floor sees no rm -rf /
a substitution is never dropped, and read with the grammar the scan knows (#717, Nodal review pass 14) @cap:executer-une-commande/moteur PowerShell: a comment in the line is no code
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur rm -rf / ; echo (((((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))))): the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur ((((((((((((((((((((((((((((((((( rm -rf / ))))))))))))))))))))))))))))))))): the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur rm -rf / ; echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo "$(echo x)")")")")")")")")")")")")")")")")")")")")")")")")")")")")")")")")": the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { rm -rf /; } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }: the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur rm -rf / ; echo $(((((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))))): the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur bash -c 'bash -c '\''bash -c '\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''rm -rf /'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\'''\''': the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur bash -c 'bash -c '\''bash -c '\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''bash -c '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''echo hi'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\''\'\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'''\''\'\'''\'''\''': the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur (((((((((((((((((((( rm -rf / )))))))))))))))))))): the floor holds it
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur what stands within the limit is read as any line
a reading limit takes nothing away, and what it cannot read reaches the floor (#717, Nodal review pass 15) @cap:executer-une-commande/moteur a line no reading follows never runs without a human, whatever is allowed
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur pwsh -Command $c: decided at run time, asked, never the floor
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur powershell -Command $c: decided at run time, asked, never the floor
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur iex $c: decided at run time, asked, never the floor
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur & (Get-Item x): decided at run time, asked, never the floor
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur a line that writes the text of the mark is no unread text
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur env nine times: past the depth every reading follows, unread, and the floor holds it
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur wsl nine times: past the depth every reading follows, unread, and the floor holds it
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur busybox nine times: past the depth every reading follows, unread, and the floor holds it
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur source nine times: past the depth every reading follows, unread, and the floor holds it
unread text has a mark of its own, and one depth rule for every reading (#717, Nodal review pass 16) @cap:executer-une-commande/moteur payloads and wrappers mixed past the depth: unread
checkpoints restore runs git in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) TÉMOIN : la même restauration, git sur l’hôte, exécute le piège
checkpoints restore runs git in the sandbox: a planted sub-repository never runs on the host @cap:executer-une-commande/moteur (Windows, MXC available) la commande du CLI restaure sans rien lancer sur l’hôte