diff --git a/.DS_Store b/.DS_Store index 6c75e0b5..1e0fbd09 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index e69de29b..51b4cfda 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +local/ diff --git a/LICENSE.txt b/LICENSE.txt index cd1efd53..e011632e 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) [2021] [Cesar Sanchez, Borzoo Bonakdarpour, Tzu-Han Hsu] +Copyright (c) [2021] [César Sánchez, Borzoo Bonakdarpour, Tzu-Han Hsu] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 7a8f059c..2fdf741b 100644 --- a/Makefile +++ b/Makefile @@ -7,3 +7,7 @@ clean: find . -name "*.quabs" -delete find . -name "*.qcir" -delete find . -name "*.cex" -delete + find . -name "*QS" -delete + find . -name "*.cex" -delete + find . -name "P.hq" -delete + find . -name "*.hoa" -delete diff --git a/README.md b/README.md index d8a7871e..2033f537 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ -# Welcome to HyperQube! - -HyperQube is a home-grown tool of Bounded Model Checking for Hyperproperties. +# Welcome to HyperQB! +HyperQB is a home-grown tool of Bounded Model Checking for Hyperproperties. Hyperproperty specifies and reasons about important requirements among multiple traces. -We implement our algorithm for Bounded Model Checking for Hyperproperty as a tool, HyperQube. +We implement our QBF-based algorithm for Bounded Model Checking for Hyperproperty as a tool, HyperQB. -HyperQube includes several parts: +HyperQB includes several parts: - NuSMV model parsing and Boolean encoding of transition relation and specification, - HyperLTL formula translation, - QBF encoding of unfolding with bound k using specific semantics, @@ -17,39 +16,43 @@ while the existing tool, QuAbs, is under AGPL license. -## HOW TO USE -To run HyperQube, install [docker](https://docs.docker.com/get-docker/) then execute ```hyperqube.sh``` with one of the following two scenarios: - - 1. BMC with single model:
- ```./hyperqube.sh ``` - - 2. BMC with multi-model:
- ```./hyperqube.sh ``` - -Note that is a natural number specifies the length of unrolling. +## Get Started +You can start using HyperQB in 2 simple steps: +1. First install [docker](https://docs.docker.com/get-docker/). +HyperQB will automatically pull the image and execute the scripts to avoid possible hassle of compiling dependencies! +2. Next, clone the repository and step into the repo: +- ```git clone https://github.com/TART-MSU/HyperQB.git``` +- ```cd HyperQB``` -To observe the tool outputs, all model checking results with counterexample will output as *_OUTPUT_formatted.cex. The parsed outputs have variables, time stamps, and values neatly presented. - +You are now ready to run HyperQB!:D -## GET STARTED -You can start using HyperQube in 2 simple steps: -1. First make sure DOCKER is installed from: https://docs.docker.com/get-docker/ . HyperQube will automatically pull the image and execute the scripts to avoid possible hassle of compiling dependencies. -2. Next, clone the repository and step into the repo: -- ```git clone https://github.com/TART-MSU/HyperQube.git``` -- ```cd HyperQube``` -You are now ready to run HyperQube! +## How to Use +To run HyperQB, execute ```hyperqb.sh``` with the following inputs: +- `` written in NuSMV format (as .smv files), +- `` written in the grammar described in Sec. 4 (as a .hq file), +- `` a natural number 0, specifying the unrolling bound, +- `` the semantics, which can be -pes, -opt, -hpes or -hopt, and +- `` to say performing classic BMC (i.e., negating the formula) or not, which can be -bughunt or -find (we use the former as default value). + +RUN HyperQB in the following format: + ```./hyperqube ``` -We provide two demo examples. To run, execute each of the followings: -- (Example 1: bakery with symmetry:)
```./hyperqube.sh demo/bakery.smv demo/symmetry 10 pes -single``` -- (Example 2: SNARK with linearizability)
```./hyperqube.sh demo/SNARK_conc.smv demo/SNARK_seq.smv demo/linearizability 18 pes -multi``` +To observe the tool outputs (i.e., counterexample or witness) + See ```*_OUTPUT_formatted.cex``` for parsed outputs have variables, time stamps, and values neatly presented. + +Demo Examples: +1. [demo 1: run bakery algorithm with symmetry property] +```./hyperqb.sh demo/bakery.smv demo/bakery.smv demo/symmetry.hq 10 -pes``` +2. [dem0 2: run SNARK algorithm with linearizability propoerty] +```./hyperqb.sh demo/SNARK_conc.smv demo/SNARK_seq.smv demo/lin.hq 18 -pes``` ## Experiments -(all models and formulas are in directory tacas21_cases) +(all models and formulas are in directory cases_bmc) Our evaluations include the following cases,
- Case #1.1-#1.4: Symmetry in the Bakery Algorithm
@@ -58,10 +61,26 @@ Our evaluations include the following cases,
- Case #4.1-#4.2: Fairness in Non-repudiation Protocols
- Case #5.1-#5.2: Privacy-Preserving Path Synthesis for Robots
- Case #6.1: Mutant Synthesis for Mutation Testing
+- Case #7.1: Co-termination of multiple programs
+- Case #6.1: Mutant Synthesis for Mutation Testing
+- Case #6.1: Mutant Synthesis for Mutation Testing
+- Case #6.1: Mutant Synthesis for Mutation Testing
+- Case #6.1: Mutant Synthesis for Mutation Testing
+- Case #7.1: Co-termination
+- Case #8.1: Deniability
+- Case #9.1 - #9.3: Intransitive Non-interference
+- Case #10.1 - #10.2: TINI and TSNI +- Case #11.1: K-safety -We also provide all the command lines needed for each experiment in the document *RUN.txt* +## One-click Scripts +We provide several convenient scripts for executing exeperiments. +- run ```./run_demos.sh``` to run demo examples +- run ```./run_tacas21.sh``` to run all experiments for TACAS21 +- run ```./run_cav23.sh``` to run all experiments for CAV23 + +We also provide all the command lines needed for each experiment in the document *RUN.txt* ## People @@ -69,3 +88,7 @@ Authors: - [Tzu-Han Hsu](https://tzuhancs.github.io/), Michigan State University. - [Borzoo Bonakdarpour](http://www.cse.msu.edu/~borzoo/), Michigan State University. - [César Sánchez](https://software.imdea.org/~cesar/), IMDEA Software Institute. + +Publication: +- [Bounded Model Checking for Hyperproperties (TACAS'21)](https://link.springer.com/content/pdf/10.1007/978-3-030-72016-2_6.pdf) + diff --git a/RUN.txt b/RUN.txt index 596932a9..a500e31e 100644 --- a/RUN.txt +++ b/RUN.txt @@ -5,60 +5,60 @@ This file provide the command lines to run specific experiments we provided in t Small demos in the tool paper: -./hyperqube.sh demo/simple.smv demo/simple.hq 1 pes -single -./hyperqube.sh demo/mini.smv demo/mini.hq 1 pes -single +./hyperqb.sh demo/simple.smv demo/simple.hq 1 pes -single +./hyperqb.sh demo/mini.smv demo/mini.hq 1 pes -single [run bakery algorithm with symmetry property] - ./hyperqube.sh demo/bakery.smv demo/symmetry.hq 10 pes -single + ./hyperqb.sh demo/bakery.smv demo/symmetry.hq 10 pes -single [run SNARK algorithm with linearizability propoerty] - ./hyperqube.sh demo/SNARK_conc.smv demo/SNARK_seq.smv demo/linearizability 18 pes -multi + ./hyperqb.sh demo/SNARK_conc.smv demo/SNARK_seq.smv demo/linearizability 18 pes -multi Experiments in the tool paper: [run simple_krip with simple_krip_formula] - ./hyperqube.sh cases_bmc/simple_krip.smv cases_bmc/simple_krip_formula.hq 5 pes + ./hyperqb.sh cases_bmc/simple_krip.smv cases_bmc/simple_krip_formula.hq 5 pes [BAKERY] -- 1.1 BAKERY 3PROC SYM1 -- - ./hyperqube.sh cases_bmc/bakery_3procs.smv cases_bmc/bakery_formula_sym1_3proc.hq 10 pes + ./hyperqb.sh cases_bmc/bakery_3procs.smv cases_bmc/bakery_formula_sym1_3proc.hq 10 pes -- 1.2 BAKERY 3PROC SYM2 -- - ./hyperqube.sh cases_bmc/bakery_3procs.smv cases_bmc/bakery_formula_sym2_3proc.hq 10 pes + ./hyperqb.sh cases_bmc/bakery_3procs.smv cases_bmc/bakery_formula_sym2_3proc.hq 10 pes -- 1.3 BAKERY 5PROC SYM1 -- - ./hyperqube.sh cases_bmc/bakery_5procs.smv cases_bmc/bakery_formula_sym1_5proc.hq 10 pes + ./hyperqb.sh cases_bmc/bakery_5procs.smv cases_bmc/bakery_formula_sym1_5proc.hq 10 pes -- 1.4 BAKERY 5PROC SYM2 -- - ./hyperqube.sh cases_bmc/bakery_5procs.smv cases_bmc/bakery_formula_sym2_5proc.hq 10 pes + ./hyperqb.sh cases_bmc/bakery_5procs.smv cases_bmc/bakery_formula_sym2_5proc.hq 10 pes [SNARK] -- 2.1 SNARK_BUG 1 -- - ./hyperqube.sh cases_bmc/snark1_M1_concurrent.smv cases_bmc/snark1_M2_sequential.smv cases_bmc/snark1_formula.hq 18 pes + ./hyperqb.sh cases_bmc/snark1_M1_concurrent.smv cases_bmc/snark1_M2_sequential.smv cases_bmc/snark1_formula.hq 18 pes -- 2.2 SNARK_BUG 2 -- - ./hyperqube.sh cases_bmc/snark2_new_M1_concurrent.smv cases_bmc/snark2_new_M2_sequential.smv cases_bmc/snark2_formula.hq 30 pes + ./hyperqb.sh cases_bmc/snark2_new_M1_concurrent.smv cases_bmc/snark2_new_M2_sequential.smv cases_bmc/snark2_formula.hq 30 pes [3-thread] -- 3.1 3-thread incorrect -- - ./hyperqube.sh cases_bmc/NI_incorrect.smv cases_bmc/NI_formula.hq 50 hpes + ./hyperqb.sh cases_bmc/NI_incorrect.smv cases_bmc/NI_formula.hq 50 hpes -- 3.2 3-thread correct -- - ./hyperqube.sh cases_bmc/NI_correct.smv cases_bmc/NI_formula.hq 50 hopt + ./hyperqb.sh cases_bmc/NI_correct.smv cases_bmc/NI_formula.hq 50 hopt [Non-repudiation Protocol] -- 4.1 NRP incorrect - ./hyperqube.sh cases_bmc/NRP_incorrect.smv cases_bmc/NRP_formula.hq 15 hpes + ./hyperqb.sh cases_bmc/NRP_incorrect.smv cases_bmc/NRP_formula.hq 15 hpes -- 4.2 NRP_correct -- - ./hyperqube.sh cases_bmc/NRP_correct.smv cases_bmc/NRP_formula.hq 15 hopt + ./hyperqb.sh cases_bmc/NRP_correct.smv cases_bmc/NRP_formula.hq 15 hopt @@ -66,35 +66,35 @@ Experiments in the tool paper: [Shortest Path] -- Shortest Path 10x10 -- - ./hyperqube.sh cases_bmc/robotic_sp_100.smv cases_bmc/robotic_sp_formula.hq 20 hpes -find + ./hyperqb.sh cases_bmc/robotic_sp_100.smv cases_bmc/robotic_sp_formula.hq 20 hpes -find -- Shortest Path 20x20 -- - ./hyperqube.sh cases_bmc/robotic_sp_400.smv cases_bmc/robotic_sp_formula.hq 40 hpes -find + ./hyperqb.sh cases_bmc/robotic_sp_400.smv cases_bmc/robotic_sp_formula.hq 40 hpes -find -- Shortest Path 40x40 -- - ./hyperqube.sh cases_bmc/robotic_sp_1600.smv cases_bmc/robotic_sp_formula.hq 80 hpes -find + ./hyperqb.sh cases_bmc/robotic_sp_1600.smv cases_bmc/robotic_sp_formula.hq 80 hpes -find -- Shortest Path 60x60 -- - ./hyperqube.sh cases_bmc/robotic_sp_3600.smv cases_bmc/robotic_sp_formula.hq 120 hpes -find + ./hyperqb.sh cases_bmc/robotic_sp_3600.smv cases_bmc/robotic_sp_formula.hq 120 hpes -find [Initial State Robustness] -- Robustness 10x10 -- - ./hyperqube.sh cases_bmc/robotic_robustness_100.smv cases_bmc/robotic_robustness_formula.hq 20 hpes -find + ./hyperqb.sh cases_bmc/robotic_robustness_100.smv cases_bmc/robotic_robustness_formula.hq 20 hpes -find -- Robustness 20x20 -- - ./hyperqube.sh cases_bmc/robotic_robustness_400.smv cases_bmc/robotic_robustness_formula.hq 40 hpes -find + ./hyperqb.sh cases_bmc/robotic_robustness_400.smv cases_bmc/robotic_robustness_formula.hq 40 hpes -find -- Robustness 40x40 -- - ./hyperqube.sh cases_bmc/robotic_robustness_1600.smv cases_bmc/robotic_robustness_formula.hq 80 hpes -find + ./hyperqb.sh cases_bmc/robotic_robustness_1600.smv cases_bmc/robotic_robustness_formula.hq 80 hpes -find -- Robustness 60x60 -- - ./hyperqube.sh cases_bmc/robotic_robustness_3600.smv cases_bmc/robotic_robustness_formula.hq 120 hpes -find + ./hyperqb.sh cases_bmc/robotic_robustness_3600.smv cases_bmc/robotic_robustness_formula.hq 120 hpes -find [Mutation Testing] - ./hyperqube.sh cases_bmc/mutation_testing.smv cases_bmc/mutation_testing.hq 10 hpes -find + ./hyperqb.sh cases_bmc/mutation_testing.smv cases_bmc/mutation_testing.hq 10 hpes -find diff --git a/cases_bmc/.DS_Store b/cases_bmc/.DS_Store index 49cc29fe..34938882 100644 Binary files a/cases_bmc/.DS_Store and b/cases_bmc/.DS_Store differ diff --git a/cases_bmc/bakery/bakery_3procs.smv b/cases_bmc/bakery/bakery_3procs.smv deleted file mode 100644 index a5bb37b6..00000000 --- a/cases_bmc/bakery/bakery_3procs.smv +++ /dev/null @@ -1,206 +0,0 @@ ---BAKERY ALGORITHM -MODULE main - VAR - -- p1_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical - -- p2_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical - -- p3_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical - - p1_ticket: 0..3; -- the ticket number of p1 - p2_ticket: 0..3; -- the ticket number of p2 - p3_ticket: 0..3; -- the ticket number of p2 - - MAX_ticket: 0..3; -- let's say max ticket number is 3 - - -- TOKEN: 1..3; - - p1_line: 0..4; - p2_line: 0..4; - p3_line: 0..4; - - - --- (problmatic) - -- proc1: process a_process(p1_ticket, p2_ticket, p1_status, p2_status, MAX_ticket); - -- proc2: process a_process(p2_ticket, p1_ticket, p2_status, p1_status, MAX_ticket); - - -- FirstID: 1..2; - -- SecondID: 1..2; - -- proc1: process a_process(p1_ticket, p2_ticket, p1_status, p2_status, MAX_ticket, FirstID,TOKEN); - -- proc2: process a_process(p2_ticket, p1_ticket, p2_status, p1_status, MAX_ticket, SecondID,TOKEN); - - - ASSIGN - - - -- case - -- (TOKEN=1) : {2,3}; - -- (TOKEN=2) : {1,3}; - -- (TOKEN=3) : {1,2}; - -- esac; - -- init(p1_status) := 0; - -- init(p2_status) := 0; - -- init(p3_status) := 0; - - init(p1_ticket) := 3; -- set to MAX - init(p2_ticket) := 3; -- set to MAX - init(p3_ticket) := 3; -- set to MAX - - - - init(p1_line) := 0; - init(p2_line) := 0; - init(p3_line) := 0; - -- init(p3_line) := 1; - - - - -- init(TOKEN) := 1; - -- next(TOKEN) := - -- case - -- -- (p1_ticket > p2) - -- (p1_line=3) : {1}; -- p1 has priority - -- (p2_line=3) : {2}; - -- (p3_line=3) : {3}; - -- TRUE: {1,2,3}; - -- esac; - init(MAX_ticket):= 0; - next(MAX_ticket):= - case - (MAX_ticket=3): 0; --reset - (p1_line=1 | p2_line=1 | p3_line=1): MAX_ticket+1; - TRUE: MAX_ticket; - esac; - - -- This assignment tells me which line I execute next - next(p1_line) := - case - -- (TOKEN!=1) : p1_line; - (p1_line=0) : {0,1}; -- stay, or proceed - -- (p1_line=2 & !(TOKEN=1)) : {2}; -- draw ticket - (p1_line=1) : {2}; -- draw ticket - (p1_line=2 & !p1-TOKEN) : {2}; -- check TOKEN - (p1_line=2 & p1-TOKEN) : {3}; -- check TOKEN - (p1_line=3) : {4}; -- stay in critical section, or leave - (p1_line=4) : {0}; -- back to starting point - TRUE: p1_line; - esac; - - next(p1_ticket):= - case - (MAX_ticket=3): 0; --reset - (p1_line=1): MAX_ticket+1; - TRUE: p1_ticket; - esac; - - - next(p2_line) := - case - (p2_line=0) : {0,1}; -- stay, or proceed - (p2_line=1) : {2}; - (p2_line=2 & !p2-TOKEN): {2}; -- check TOKEN - (p2_line=2 & p2-TOKEN): {3}; -- check TOKEN - (p2_line=3) : {4}; -- stay in critical section, or leave - (p2_line=4) : {0}; -- back to starting point - TRUE: p2_line; - esac; - - next(p2_ticket):= - case - (MAX_ticket=3): 0; --reset - (p2_line=1): MAX_ticket+1; - TRUE: p2_ticket; - esac; - - - next(p3_line) := - case - (p3_line=0) : {0}; -- stay, or proceed - (p3_line=1) : {2}; - (p3_line=2 & !p3-TOKEN) : 2 ; -- check TOKEN - (p3_line=2 & p3-TOKEN) : 3 ; -- check TOKEN - (p3_line=3) : {4}; -- stay in critical section, or leave - (p3_line=4) : {0}; -- back to starting point - TRUE: p3_line; - esac; - - - next(p3_ticket):= - case - (MAX_ticket=3): 0; --reset - (p3_line=1): MAX_ticket+1; - TRUE: p3_ticket; - esac; - - - DEFINE - STARTED := (p1_line!=0 | p2_line!=0 | p3_line!=0); - p1-TOKEN := STARTED & (p1_line=2) & ((p1_ticket <= p2_ticket) & (p1_ticket <= p3_ticket)); - p2-TOKEN := STARTED & (p2_line=2) & ((((p2_ticket <= p1_ticket) & (p2_ticket <= p3_ticket))) | !p1-TOKEN); - p3-TOKEN := STARTED & (p3_line=2) & ((((p3_ticket <= p1_ticket) & (p3_ticket <= p2_ticket))) | !p1-TOKEN & !p2-TOKEN); - - - - -- DEFINE - -- CRITICAL := (proc1.line=3); - -- SYM_SELECTED := - --- --- MODULE a_process(my_ticket, others_ticket, my_status, others_status, MAX_ticket, ProcID, TOKEN) --- VAR --- line: 1..5; --- --- - - -- ASSIGN - -- init(line) := 1; - -- -- This assignment tells me which line I execute next - -- next(line) := - -- case - -- (ProcID!=TOKEN) : line; - -- (line=1) : {1,2}; -- stay, or proceed - -- (line=2) : 3; - -- (line=3) & (others_status=2 | (others_status=1 & ProcID=2)) : 3 ; -- if some smaller IDs are trying - -- -- keep waiting - -- (line=3) & !(others_status=2 | (others_status=1 & ProcID=2)) : 4 ; -- go to critical section - -- (line=4) : {5}; -- stay in critical section, or leave - -- (line=5) : 1; -- back to starting point - -- esac; - -- - -- next(my_status) := - -- case - -- (line=1) : 0; - -- (line=2) : 0; - -- (line=3) : 1; - -- (line=4) : 2; - -- (line=5) : 0; - -- TRUE : my_status; -- default case - -- esac; - -- - -- next(MAX_ticket):= - -- case - -- (MAX_ticket=3): 0; --reset - -- (line=2): MAX_ticket+1; - -- !(line=2): MAX_ticket; - -- esac; - -- - -- next(my_ticket):= - -- case - -- (MAX_ticket=3): 0; --reset - -- (line=2): MAX_ticket+1; - -- !(line=2): my_ticket; - -- esac; - -- - -- - -- next(others_ticket) := others_ticket; -- don't change it. - -- next(others_status) := others_status; -- don't change it. - -- - -- DEFINE - -- -- CHOSED:= (TOKEN=ProcID); - -- STAND_BY := line=1; - -- DRAW_TICKET := line=2; - -- ATTEMPT := line=3; - -- CRITICAL_SECTION := line=4; - -- FINISHED := line=5; - - --- For TESTING only --- LTLSPEC F(proc1.my_status=1) diff --git a/cases_bmc/continuity/alignment.hq b/cases_bmc/cav_continuity/alignment.hq similarity index 100% rename from cases_bmc/continuity/alignment.hq rename to cases_bmc/cav_continuity/alignment.hq diff --git a/cases_bmc/continuity/alignment1.smv b/cases_bmc/cav_continuity/alignment1.smv similarity index 100% rename from cases_bmc/continuity/alignment1.smv rename to cases_bmc/cav_continuity/alignment1.smv diff --git a/cases_bmc/continuity/alignment2.smv b/cases_bmc/cav_continuity/alignment2.smv similarity index 100% rename from cases_bmc/continuity/alignment2.smv rename to cases_bmc/cav_continuity/alignment2.smv diff --git a/cases_bmc/continuity/sorting.smv b/cases_bmc/cav_continuity/sorting.smv similarity index 100% rename from cases_bmc/continuity/sorting.smv rename to cases_bmc/cav_continuity/sorting.smv diff --git a/cases_bmc/cav_coterm/coterm.hq b/cases_bmc/cav_coterm/coterm.hq new file mode 100644 index 00000000..c9dbfbfd --- /dev/null +++ b/cases_bmc/cav_coterm/coterm.hq @@ -0,0 +1,2 @@ +forall A. forall B. +(F(halt[A]))<->(F(halt[B])) diff --git a/cases_bmc/cav_coterm/coterm1.smv b/cases_bmc/cav_coterm/coterm1.smv new file mode 100644 index 00000000..59626b48 --- /dev/null +++ b/cases_bmc/cav_coterm/coterm1.smv @@ -0,0 +1,43 @@ +MODULE main + +-- 0 while (x>0){ +-- 1 x = x - y +-- 2 } + + VAR + x:-5..100; + t: 0..1; + location: 0..2; + + FROZENVAR + y: 0..5; + + ASSIGN + init(location) := 1; + init(x) := 100; + init(t) := 0; + init(y) := 2; + + next(location) := + case + ((location = 1) & (x > 0)): 1; + ((location = 1) & (x <= 0)) : 2; + TRUE: location ; + esac; + + next(x) := + case + ((location = 1) & (x > 0)): x - y; + ((location = 1) & (x <= 0)) : x; + TRUE : x; + esac; + + next(t) := + case + (location = 1): 0; + (location = 2): 1; + TRUE : t; + esac; + + DEFINE + halt := location = 2 ; diff --git a/cases_bmc/cav_coterm/coterm2.smv b/cases_bmc/cav_coterm/coterm2.smv new file mode 100644 index 00000000..eb3600bb --- /dev/null +++ b/cases_bmc/cav_coterm/coterm2.smv @@ -0,0 +1,43 @@ +MODULE main + +-- 0 while (x>0){ +-- 1 x = x - (2 x y) +-- 2 } + + VAR + x:-10..100; + t: 0..1; + location: 0..2; + + FROZENVAR + y: 0..5; + + ASSIGN + init(location) := 1; + init(x) := 100; + init(t) := 0; + init(y) := 2; + + next(location) := + case + ((location = 1) & (x > 0)): 1; + ((location = 1) & (x <= 0)) : 2; + TRUE: location ; + esac; + + next(x) := + case + ((location = 1) & (x > 0)): (x - (2 * y)); + ((location = 1) & (x <= 0)) : x; + TRUE : x; + esac; + + next(t) := + case + (location = 1): 0; + (location = 2): 1; + TRUE : t; + esac; + + DEFINE + halt := location = 2 ; diff --git a/cases_bmc/cav_deniability/den.hq b/cases_bmc/cav_deniability/den.hq new file mode 100644 index 00000000..572eaca7 --- /dev/null +++ b/cases_bmc/cav_deniability/den.hq @@ -0,0 +1,3 @@ +forall A. exists B. exists C. +G((*debits_amount[A]=debits_amount[B]*)/\(*debits_amount[A]=debits_amount[C]*)/\ +(*init_balance[B]=init_balance[C]*)) diff --git a/cases_bmc/deniability/electronic_wallet.smv b/cases_bmc/cav_deniability/electronic_wallet.smv similarity index 92% rename from cases_bmc/deniability/electronic_wallet.smv rename to cases_bmc/cav_deniability/electronic_wallet.smv index 81eea46f..d43a4ed4 100644 --- a/cases_bmc/deniability/electronic_wallet.smv +++ b/cases_bmc/cav_deniability/electronic_wallet.smv @@ -1,14 +1,14 @@ MODULE main VAR - init_balance: 0..10; + init_balance: 0..20; debits_amount: 1..10; PC: 1..6; num_itr: 0..11; halt: boolean; ASSIGN -- Initial Conditions - init(init_balance):= 10; - init(debits_amount) := 3..5; + init(init_balance):= 0..20; + init(debits_amount) := 1..10; init(num_itr):= 0; init(PC):= 1; -- but program counter starts at 1. init(halt) := FALSE; diff --git a/cases_bmc/cav_ksafety/arrayInsert.hq b/cases_bmc/cav_ksafety/arrayInsert.hq new file mode 100644 index 00000000..980475f3 --- /dev/null +++ b/cases_bmc/cav_ksafety/arrayInsert.hq @@ -0,0 +1,2 @@ +forall A. forall B. +G(*i[A] = i[B]*) diff --git a/cases_bmc/cav_ksafety/arrayInsert.smv b/cases_bmc/cav_ksafety/arrayInsert.smv new file mode 100644 index 00000000..d61f2624 --- /dev/null +++ b/cases_bmc/cav_ksafety/arrayInsert.smv @@ -0,0 +1,81 @@ +MODULE main + VAR + location: 1..7; + i: 0..5; + arr: array 0..5 of 0..10; + + FROZENVAR + h: 0..10; + + ASSIGN + init(location) := 1; + init(arr[0]) := 0; + init(arr[1]) := 2; + init(arr[2]) := 4; + init(arr[3]) := 6; + init(arr[4]) := 10; + --init(len) := 5; + init(i) := 0; + init(h) := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + next(location) := case + (location = 1 & arr[i] < h): 2; + (location = 1): 3; + (location = 1 & arr[i] >= h): 3; + (location = 2): 3; + (location = 3): 4; + (location = 4): 5; + (location = 5 & i < 5): 6; + (location = 5 & i >= 5): 7; + (location = 6) : 5; + TRUE: location ; + esac; + + next(i) := case + (location = 2 & i < 5) : i + 1; + (location = 6 & i < 5) : i + 1; + TRUE: i; + esac; + + next(arr[0]) := case + (location = 3 & i = 0) : h; + (location = 3 & i >= 1) : arr[0]; + TRUE: arr[0]; + esac; + + next(arr[1]) := case + (location = 3 & i = 0) : arr[0]; + (location = 3 & i = 1) : h; + (location = 3 & i >= 2) : arr[1]; + TRUE: arr[0]; + esac; + + next(arr[2]) := case + (location = 3 & i <= 1) : arr[1]; + (location = 3 & i = 2) : h; + (location = 3 & i >= 3) : arr[2]; + TRUE: arr[0]; + esac; + + next(arr[3]) := case + (location = 3 & i <= 2) : arr[2]; + (location = 3 & i = 3) : h; + (location = 3 & i >= 4) : arr[3]; + TRUE: arr[0]; + esac; + + next(arr[4]) := case + (location = 3 & i <= 3) : arr[3]; + (location = 3 & i = 4) : h; + (location = 3 & i >= 5) : arr[4]; + TRUE: arr[0]; + esac; + + next(arr[5]) := case + (location = 3 & i <= 4) : arr[4]; + (location = 3 & i = 5) : h; + TRUE: arr[0]; + esac; + + DEFINE + halt := location = 7 ; \ No newline at end of file diff --git a/cases_bmc/cav_ksafety/doubleSquare.smv b/cases_bmc/cav_ksafety/doubleSquare.smv new file mode 100644 index 00000000..6c855055 --- /dev/null +++ b/cases_bmc/cav_ksafety/doubleSquare.smv @@ -0,0 +1,57 @@ +MODULE main +-- calculating 2^x +-- doubleSquare(bool h, int x) { +-- INIT: int z, y=0; +-- 1 if (h) +-- 2 { z = 2 * x; } +-- 3 else { z = x; } +-- 4 while (z>0) +-- 5 { z - - ; y = y+x; } +-- 6 if (!h) { y = 2 * y; } +-- 7 return y; +-- } + VAR + location: 1..7; + y: 0..50; + z: 0..20; + + FROZENVAR + h: boolean; + x: 0..10; + + ASSIGN + init(location) := 1 ; + init(h) := {TRUE, FALSE} ; + init(x) := 0..5; + init(y) := 0; + init(z) := 0; + + next(location) := case + (location = 1 & !h): 3; + (location = 1 & h): 2; + (location = 3) : 4; + (location = 2) : 4; + (location = 4 & z > 0) : 5; + (location = 4 & z = 0) : 6; + (location = 5) : 4; -- jump back + (location = 6): 7; + TRUE: location ; + esac; + + next(y) := + case + (location = 5 & (y <= 50 - x) & z > 0) : y + x; + (location = 6 & !h & (y <= 25)): 2 * y; + TRUE: y; + esac; + + next(z) := + case + (h & location = 1) : 2 * x; + (!h & location = 1) : x; + (location = 5 & z > 0) : (z - 1); + TRUE: z; + esac; + +DEFINE + halt := location = 7 ; diff --git a/cases_bmc/cav_ksafety/doubleSquare1.hq b/cases_bmc/cav_ksafety/doubleSquare1.hq new file mode 100644 index 00000000..8a53e6c4 --- /dev/null +++ b/cases_bmc/cav_ksafety/doubleSquare1.hq @@ -0,0 +1,3 @@ +forall A. forall B. +(F(halt[A]/\halt[B]))/\ +((F(*x[A] = x[B]*)) -> (G((halt[A]/\halt[B]) -> (*y[A] = y[B]*)))) diff --git a/cases_bmc/cav_ksafety/doubleSquare_tbd.hq b/cases_bmc/cav_ksafety/doubleSquare_tbd.hq new file mode 100644 index 00000000..f8a49314 --- /dev/null +++ b/cases_bmc/cav_ksafety/doubleSquare_tbd.hq @@ -0,0 +1,2 @@ +forall A. exists B. +G(!(h[A] <-> h[B]) /\ (*x[A] = x[B]*) /\ halt[A] /\ halt[B]) -> G(*y[A] = y[B]*) \ No newline at end of file diff --git a/cases_bmc/cav_shared_buffer/buffer.png b/cases_bmc/cav_shared_buffer/buffer.png new file mode 100644 index 00000000..596c9cbb Binary files /dev/null and b/cases_bmc/cav_shared_buffer/buffer.png differ diff --git a/cases_bmc/cav_shared_buffer/classic_OD.hq b/cases_bmc/cav_shared_buffer/classic_OD.hq new file mode 100644 index 00000000..1d7b1e76 --- /dev/null +++ b/cases_bmc/cav_shared_buffer/classic_OD.hq @@ -0,0 +1,4 @@ +forall A. forall B. +G((*P2_unclass_in[A]=P2_unclass_in[B]*) +-> +(*P2_unclass_out[A]=P2_unclass_out[B]*)) diff --git a/cases_bmc/cav_shared_buffer/intrans_GMNI.hq b/cases_bmc/cav_shared_buffer/intrans_GMNI.hq new file mode 100644 index 00000000..42311d0d --- /dev/null +++ b/cases_bmc/cav_shared_buffer/intrans_GMNI.hq @@ -0,0 +1,8 @@ +forall A. exists B. +(G((!(*P1_sec_in[A]=P1_sec_in[B]*))) +/\ +(G(((sec_read[A]<->sec_read[B]) /\ + (sec_write[A]<->sec_write[B])/\ + (unclass_read[A]<->unclass_read[B])/\ + (unclass_write[A]<->unclass_write[B]))\/ +(*P2_unclass_out[A]=P2_unclass_out[B]*)))) diff --git a/cases_bmc/cav_shared_buffer/intrans_OD.hq b/cases_bmc/cav_shared_buffer/intrans_OD.hq new file mode 100644 index 00000000..35426a21 --- /dev/null +++ b/cases_bmc/cav_shared_buffer/intrans_OD.hq @@ -0,0 +1,9 @@ +forall A. forall B. +G(((*P2_unclass_in[A]=P2_unclass_in[B]*)) +-> +((no_conflict[A]/\no_conflict[B])-> +(((sec_read[A]<->sec_read[B]) /\ + (sec_write[A]<->sec_write[B])/\ + (unclass_read[A]<->unclass_read[B])/\ + (unclass_write[A]<->unclass_write[B]))-> +(*P2_unclass_out[A]=P2_unclass_out[B]*)))) diff --git a/cases_bmc/cav_shared_buffer/scheduled_buffer.smv b/cases_bmc/cav_shared_buffer/scheduled_buffer.smv new file mode 100644 index 00000000..eb4dde17 --- /dev/null +++ b/cases_bmc/cav_shared_buffer/scheduled_buffer.smv @@ -0,0 +1,79 @@ +MODULE main +VAR + P1_sec_in: 0..3; + P2_unclass_in: 0..3; + P1_sec_out: 0..3; + P2_unclass_out: 0..3; + + shared_buffer: 0..3; + + sec_write: boolean; + sec_read: boolean; + + unclass_write: boolean; + unclass_read: boolean; + + PC: 1..3; +ASSIGN + -- Initial Conditions + init(P1_sec_in):= 0..3; + init(P1_sec_out):= 0; + init(P2_unclass_in):= 0..3; + init(P2_unclass_out):= 0; + init(shared_buffer) := 0; + init(sec_write):= {TRUE, FALSE}; + init(sec_read):= {FALSE}; + init(unclass_write):= {TRUE, FALSE}; + init(unclass_read):= {FALSE}; + init(PC) := 1; + + -- Transition Relations + next(P1_sec_in) := P1_sec_in; + next(P2_unclass_in) := P2_unclass_in; + next(sec_write) := sec_write; + next(unclass_write) := unclass_write; + + --scheduled + next(sec_read) := + case + (sec_write): TRUE; + (unclass_write): FALSE; + TRUE: sec_read; + esac; + next(unclass_read) := + case + (unclass_write): TRUE; + (sec_write): FALSE; + TRUE: unclass_read; + esac; + + next(shared_buffer) := + case + ((PC=2) & (sec_write)): P1_sec_in; + ((PC=2) & (unclass_write)): P2_unclass_in; + TRUE: shared_buffer; + esac; + + next(P1_sec_out) := + case + ((PC=3) & (sec_read)) : shared_buffer; + TRUE: P1_sec_out; + esac; + + next(P2_unclass_out) := + case + ((PC=3) & (unclass_read)) : shared_buffer; + TRUE: P2_unclass_out; + esac; + + next(PC) := + case + (PC=1): 2; + (PC=2): 3; + (PC=3): 3; + TRUE: PC; + esac; + +DEFINE + halt := PC = 3 ; + no_conflict := !(sec_read & unclass_read); diff --git a/cases_bmc/cav_shared_buffer/unscheduled_buffer.smv b/cases_bmc/cav_shared_buffer/unscheduled_buffer.smv new file mode 100644 index 00000000..62ebdecf --- /dev/null +++ b/cases_bmc/cav_shared_buffer/unscheduled_buffer.smv @@ -0,0 +1,68 @@ +MODULE main +VAR + -- P1_Mode: 0..1; -- 0: secure, 1: unclassified + -- P2_Mode: 0..1; -- 0: secure, 1: unclassified + P1_sec_in: 0..3; + P2_unclass_in: 0..3; + P1_sec_out: 0..3; + P2_unclass_out: 0..3; + + shared_buffer: 0..3; + + sec_write: boolean; + sec_read: boolean; + + unclass_write: boolean; + unclass_read: boolean; + + PC: 1..3; +ASSIGN + -- Initial Conditions + init(P1_sec_in):= 0..3; + init(P1_sec_out):= 0; + init(P2_unclass_in):= 0..3; + init(P2_unclass_out):= 0; + init(shared_buffer) := 0; + init(sec_write):= {TRUE, FALSE}; + init(sec_read):= {TRUE, FALSE}; + init(unclass_write):= {TRUE, FALSE}; + init(unclass_read):= {TRUE, FALSE}; + init(PC) := 1; + + -- Transition Relations + next(P1_sec_in) := P1_sec_in; + next(P2_unclass_in) := P2_unclass_in; + next(sec_write) := sec_write; + next(sec_read) := sec_read; + next(unclass_write) := unclass_write; + next(unclass_read) := unclass_read; + + next(shared_buffer) := + case + ((PC=2) & (sec_write)): P1_sec_in; + ((PC=2) & (unclass_write)): P2_unclass_in; + TRUE: shared_buffer; + esac; + + next(P1_sec_out) := + case + ((PC=3) & (sec_read)) : shared_buffer; + TRUE: P1_sec_out; + esac; + + next(P2_unclass_out) := + case + ((PC=3) & (unclass_read)) : shared_buffer; + TRUE: P2_unclass_out; + esac; + + next(PC) := + case + (PC=1): 2; + (PC=2): 3; + (PC=3): 3; + TRUE: PC; + esac; + +DEFINE + halt := PC = 3 ; diff --git a/cases_bmc/cav_tini/.DS_Store b/cases_bmc/cav_tini/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/cases_bmc/cav_tini/.DS_Store differ diff --git a/cases_bmc/cav_tini/ni_example.smv b/cases_bmc/cav_tini/ni_example.smv new file mode 100644 index 00000000..71e132e3 --- /dev/null +++ b/cases_bmc/cav_tini/ni_example.smv @@ -0,0 +1,56 @@ +MODULE main +-- gniEx(bool high, int low) { +-- 1 if (high) +-- { int x = ndet_int ; // here we assign at the beginning +-- 2 if (x >= low) +-- 3 { return x; } +-- 4 else { while (true) {} } } +-- else { +-- 5 int x = low; +-- while ( ndet_bool ) { +-- 6 x++; } +-- return x; +-- } + + VAR + location: 1..7; + x: 0..10; + nondet: boolean; + + FROZENVAR + high: boolean; + low: 0..5; + + ASSIGN + init(location) := 1 ; + init(nondet) := {TRUE, FALSE}; + init(x) := 0..10; + init(low) := {0, 1, 2, 3, 4, 5}; + init(high) := {TRUE, FALSE}; + + next(location) := case + (location = 1 & high): 2; + (location = 1 & !high): 5; + (location = 2 & x >= low) : 3; + (location = 2 & x < low) : 4; + (location = 5 & !nondet) : 3; + (location = 5 & nondet) : 6; + (location = 6 & !nondet) : 3; + (location = 6 & nondet & x < 10) : 6; + (location = 6 & nondet & x = 10) : 7; + TRUE: location ; + esac; + + next(x) := case + (location = 5): low; + (location = 6 & x < 10): x + 1; + TRUE: x; + esac; + + next(nondet) := case + (location = 5 | location = 6): {TRUE, FALSE}; + TRUE: nondet; + esac; + +DEFINE + halt := location = 3 ; diff --git a/cases_bmc/cav_tini/tini.hq b/cases_bmc/cav_tini/tini.hq new file mode 100644 index 00000000..d422615a --- /dev/null +++ b/cases_bmc/cav_tini/tini.hq @@ -0,0 +1,3 @@ +forall A. exists B. +F(halt[A]) -> +G(~halt[B] \/ ((halt[B])->((~(high[A]<->high[B])) /\ (*x[A]=x[B]*)))) diff --git a/cases_bmc/cav_tsni/.DS_Store b/cases_bmc/cav_tsni/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/cases_bmc/cav_tsni/.DS_Store differ diff --git a/cases_bmc/cav_tsni/ni_example.smv b/cases_bmc/cav_tsni/ni_example.smv new file mode 100644 index 00000000..2497a5aa --- /dev/null +++ b/cases_bmc/cav_tsni/ni_example.smv @@ -0,0 +1,56 @@ +MODULE main +-- gniEx(bool high, int low) { +-- 1 if (high) +-- { int x = ndet_int ; // here we assign at the beginning +-- 2 if (x >= low) +-- 3 { return x; } +-- 4 else { while (true) {} } } +-- else { +-- 5 int x = low; +-- while ( ndet_bool ) { +-- 6 x++; } +-- return x; +-- } + + VAR + location: 1..7; + x: 0..10; + nondet: boolean; + + FROZENVAR + high: boolean; + low: 0..5; + + ASSIGN + init(location) := 1 ; + init(nondet) := {TRUE, FALSE}; + init(x) := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + init(low) := {0, 1, 2, 3, 4, 5}; + init(high) := {TRUE, FALSE}; + + next(location) := case + (location = 1 & high): 2; + (location = 1 & !high): 5; + (location = 2 & x >= low) : 3; + (location = 2 & x < low) : 4; + (location = 5 & !nondet) : 3; + (location = 5 & nondet) : 6; + (location = 6 & !nondet) : 3; + (location = 6 & nondet & x < 10) : 6; + (location = 6 & nondet & x = 10) : 7; + TRUE: location ; + esac; + + next(x) := case + (location = 5): low; + (location = 6 & x < 10): x + 1; + TRUE: x; + esac; + + next(nondet) := case + (location = 5 | location = 6): {TRUE, FALSE}; + TRUE: nondet; + esac; + +DEFINE + halt := location = 3 ; diff --git a/cases_bmc/cav_tsni/tsni.hq b/cases_bmc/cav_tsni/tsni.hq new file mode 100644 index 00000000..e7688061 --- /dev/null +++ b/cases_bmc/cav_tsni/tsni.hq @@ -0,0 +1,3 @@ +forall A. exists B. +F(halt[A]) -> +G(((halt[B])->((~(high[A]<->high[B])) /\ (*x[A]=x[B]*)))) diff --git a/cases_bmc/dummy.hq b/cases_bmc/dummy.hq new file mode 100644 index 00000000..82a8505e --- /dev/null +++ b/cases_bmc/dummy.hq @@ -0,0 +1 @@ +exists A. exists B. F(~halt[A]) diff --git a/cases_bmc/nrp/NRP_correct.smv b/cases_bmc/nrp/NRP_correct.smv deleted file mode 100644 index ccd9183b..00000000 --- a/cases_bmc/nrp/NRP_correct.smv +++ /dev/null @@ -1,99 +0,0 @@ --- Non-repudiation Protocol - --- (1) skip until P->T: m ; --- (2) skip until P->T: NRO ; --- (3) T-.Q: m ; --- (4) skip until Q->T: NRR; --- (5) T->Q: NRO; --- (6) T->P: NRR; - - -MODULE main - VAR - sender_actions: 0..4; -- 0: skip; - -- 1: send receiver msg; - -- 2: send third-party msg: - -- 3: send receiver NRO; - -- 4: send send third-party NRO; - - - receiver_actions: 0..2; -- 0: skip; - -- 1: send sender NRR; - -- 2: send third-party NRR: - - - thirdparty_actions: 0..3; -- 0: skip; - -- 1: send receiver msg - -- 2: send sender NRO; - -- 3: send receiver NRR: - - - take_turns: 0..2; -- 0: sender, 1:receiver, 2:thridparty - - line: 1..7; - - - - ASSIGN - init(sender_actions) := 0; - init(receiver_actions) := 0; - init(thirdparty_actions) := 0; - - init(take_turns) := 0; - init(line) := 1; - - - next(line) := - case - (line=1 & !(sender_actions=2)) : {1}; -- skip - (line=1 & sender_actions=2) : {2}; -- P->T NRO - (line=2 & !(sender_actions=4)) : {2} ; -- skip - (line=2 & (sender_actions=4)) : {3} ;-- P->T: NRO - -- (line=3 & !(thirdparty_actions=1)) : {3} ;-- keep waiting - -- (line=3 & (thirdparty_actions=1)) : {4}; -- T->Q m - line=3 : {4} ; - (line=4 & !(receiver_actions=2)) : {4}; -- skip - (line=4 & (receiver_actions=2)) : {5} ;-- Q->T NRR - -- (line=5 & !(take_turns=2)) : {6} ;-- wait - -- (line=5 & (take_turns=2)) : {6} ;-- T->Q NRO - -- (line=6 & !(take_turns=2)) : {7} ;-- wait - -- (line=6 & (take_turns=2)) : {7} ;-- T->P NRR - line=5 : {6} ; - line=6 : {7} ; - line=7 : {7} ;-- terminate - esac; - - next(take_turns) := - case - (line=3) : (take_turns); - (line=6) : (take_turns); - (line=7) : (take_turns); - (take_turns=0) : 1; - (take_turns=1) : 2; - (take_turns=2) : 0; - esac; - - next(sender_actions) := - case - (take_turns=0) : {0,1,2,3,4}; - !(take_turns=0) : 0; - esac; - - next(receiver_actions) := - case - (take_turns=1) : {0,1,2}; - !(take_turns=1) : 0; - esac; - - next(thirdparty_actions) := - case - (line=3) : {1}; - (line=5) : {2}; - (line=6) : {3}; - (take_turns=2) : {0,1,2,3}; - !(take_turns=2) : 0; - esac; - - --- For TESTING only --- LTLSPEC F(proc1.my_status=1) diff --git a/cases_bmc/nrp/NRP_formula.hq b/cases_bmc/nrp/NRP_formula.hq deleted file mode 100644 index f6ef7166..00000000 --- a/cases_bmc/nrp/NRP_formula.hq +++ /dev/null @@ -1,3 +0,0 @@ -exists A. forall B. (F*line[A]=3* /\ F*line[A]=5* /\ F*line[A]=6* ) /\ -( (G(*sender_actions[A]=sender_actions[B]*)) -> ((F(*line[B]=5*))<-> (F(*line[B]=6*))) ) /\ -( (G(*receiver_actions[A]=receiver_actions[B]*)) -> ((F(*line[B]=5*))<-> (F(*line[B]=6*))) ) diff --git a/cases_bmc/nrp/NRP_incorrect.smv b/cases_bmc/nrp/NRP_incorrect.smv deleted file mode 100644 index 57b7d3e9..00000000 --- a/cases_bmc/nrp/NRP_incorrect.smv +++ /dev/null @@ -1,94 +0,0 @@ --- Non-repudiation Protocol - --- (1) skip until P->T: m ; --- (2) skip until P->T: NRO ; --- (3) T-.Q: m ; --- (4) skip until Q->T: NRR; --- (5) T->Q: NRO; --- (6) T->P: NRR; - - -MODULE main - VAR - sender_actions: 0..4; -- 0: skip; - -- 1: send receiver msg; - -- 2: send third-party msg: - -- 3: send receiver NRO; - -- 4: send send third-party NRO; - - receiver_actions: 0..2; -- 0: skip; - -- 1: send sender NRR; - -- 2: send third-party NRR: - - - thirdparty_actions: 0..3; -- 0: skip; - -- 1: send receiver msg - -- 2: send sender NRO; - -- 3: send receiver NRR: - - - take_turns: 0..2; -- 0: sender, 1:receiver, 2:thridparty - - line: 1..7; - - - - ASSIGN - init(sender_actions) := 0; - init(receiver_actions) := 0; - init(thirdparty_actions) := 0; - - init(take_turns) := 0; - init(line) := 1; - - - next(line) := - case - (line=1 & !(sender_actions=2)) : {1}; -- skip - (line=1 & sender_actions=2) : {2}; -- P->T NRO - (line=2 & !(sender_actions=4)) : {2} ; -- skip - (line=2 & (sender_actions=4)) : {3} ;-- P->T: NRO - -- (line=3 & !(thirdparty_actions=1)) : {3} ;-- keep waiting - -- (line=3 & (thirdparty_actions=1)) : {4}; -- T->Q m - line=3 : {4} ; - line=4 : {5} ; - (line=5 & !(receiver_actions=2)) : {5}; -- skip - (line=5 & (receiver_actions=2)) : {6} ;-- Q->T NRR - line=6 : {7} ; - line=7 : {7} ;-- terminate - esac; - - next(take_turns) := - case - (line=3) : (take_turns); - (line=6) : (take_turns); - (line=7) : (take_turns); - (take_turns=0) : 1; - (take_turns=1) : 2; - (take_turns=2) : 0; - esac; - - next(sender_actions) := - case - (take_turns=0) : {0,1,2,3,4}; - !(take_turns=0) : 0; - esac; - - next(receiver_actions) := - case - (take_turns=1) : {0,1,2}; - !(take_turns=1) : 0; - esac; - - next(thirdparty_actions) := - case - (line=3) : {1}; - (line=4) : {2}; - (line=6) : {3}; - (take_turns=2) : {0,1,2,3}; - !(take_turns=2) : 0; - esac; - - --- For TESTING only --- LTLSPEC F(proc1.my_status=1) diff --git a/cases_bmc/shared_buffer/buffer.smv b/cases_bmc/shared_buffer/buffer.smv deleted file mode 100644 index 94f50367..00000000 --- a/cases_bmc/shared_buffer/buffer.smv +++ /dev/null @@ -1,18 +0,0 @@ -MODULE main - VAR - Mode: 0..1; -- 0: secure, 1: unclassified - PC: 1..3; - ASSIGN - -- Initial Conditions - -- init(Mode): 0..1; - init(PC): 1; -- but program counter starts at 1. - - -- Transition Relations - next(Mode) := Mode; - next(PC) := - case - (PC=1): 2; - (PC=2): 3; - (PC=3): 3; - TRUE: PC; - esac; diff --git a/cases_bmc/tacas_bakery/bakery_3procs.smv b/cases_bmc/tacas_bakery/bakery_3procs.smv new file mode 100644 index 00000000..2bdb8451 --- /dev/null +++ b/cases_bmc/tacas_bakery/bakery_3procs.smv @@ -0,0 +1,97 @@ +--BAKERY ALGORITHM +MODULE main + VAR + -- p1_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical + -- p2_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical + -- p3_status: 0..2; -- 0: non-critical, 1: waiting, 2: critical + p1_ticket: 0..3; -- the ticket number of p1 + p2_ticket: 0..3; -- the ticket number of p2 + p3_ticket: 0..3; -- the ticket number of p2 + MAX_ticket: 0..3; -- let's say max ticket number is 3 + -- TOKEN: 1..3; + p1_line: 0..4; + p2_line: 0..4; + p3_line: 0..4; + + ASSIGN + init(p1_ticket) := 3; -- set to MAX + init(p2_ticket) := 3; -- set to MAX + init(p3_ticket) := 3; -- set to MAX + + init(p1_line) := 0; + init(p2_line) := 0; + init(p3_line) := 0; + + init(MAX_ticket):= 0; + + next(MAX_ticket):= + case + (MAX_ticket=3): 0; --reset + (p1_line=1 | p2_line=1 | p3_line=1): MAX_ticket+1; + TRUE: MAX_ticket; + esac; + + next(p1_line) := + case + (p1_line=0) : {0,1}; -- stay, or proceed + (p1_line=1) : {2}; -- draw ticket + (p1_line=2 & !p1-TOKEN) : {2}; -- check TOKEN + (p1_line=2 & p1-TOKEN) : {3}; -- check TOKEN + (p1_line=3) : {4}; -- stay in critical section, or leave + (p1_line=4) : {0}; -- back to starting point + TRUE: p1_line; + esac; + + next(p1_ticket):= + case + (MAX_ticket=3): 0; --reset + (p1_line=1): MAX_ticket+1; + TRUE: p1_ticket; + esac; + + + next(p2_line) := + case + (p2_line=0) : {0,1}; -- stay, or proceed + (p2_line=1) : {2}; + (p2_line=2 & !p2-TOKEN): {2}; -- check TOKEN + (p2_line=2 & p2-TOKEN): {3}; -- check TOKEN + (p2_line=3) : {4}; -- stay in critical section, or leave + (p2_line=4) : {0}; -- back to starting point + TRUE: p2_line; + esac; + + next(p2_ticket):= + case + (MAX_ticket=3): 0; --reset + (p2_line=1): MAX_ticket+1; + TRUE: p2_ticket; + esac; + + + next(p3_line) := + case + (p3_line=0) : {0}; -- stay, or proceed + (p3_line=1) : {2}; + (p3_line=2 & !p3-TOKEN) : 2 ; -- check TOKEN + (p3_line=2 & p3-TOKEN) : 3 ; -- check TOKEN + (p3_line=3) : {4}; -- stay in critical section, or leave + (p3_line=4) : {0}; -- back to starting point + TRUE: p3_line; + esac; + + + next(p3_ticket):= + case + (MAX_ticket=3): 0; --reset + (p3_line=1): MAX_ticket+1; + TRUE: p3_ticket; + esac; + + + DEFINE + STARTED := (p1_line!=0 | p2_line!=0 | p3_line!=0); + SELECTING := (p1_line=3 | p2_line=3 | p3_line=3); + p1-TOKEN := STARTED & ((p1_line=2) | (p1_line=3)) & ((p1_ticket <= p2_ticket) & (p1_ticket <= p3_ticket)); + p2-TOKEN := STARTED & ((p2_line=2) | (p2_line=3)) & ((((p2_ticket <= p1_ticket) & (p2_ticket <= p3_ticket))) | !p1-TOKEN); + p3-TOKEN := STARTED & ((p3_line=2) | (p3_line=3)) & ((((p3_ticket <= p1_ticket) & (p3_ticket <= p2_ticket))) | !p1-TOKEN & !p2-TOKEN); diff --git a/cases_bmc/bakery/bakery_5procs.smv b/cases_bmc/tacas_bakery/bakery_5procs.smv similarity index 100% rename from cases_bmc/bakery/bakery_5procs.smv rename to cases_bmc/tacas_bakery/bakery_5procs.smv diff --git a/cases_bmc/bakery/bakery_formula_S1_3proc.hq b/cases_bmc/tacas_bakery/bakery_formula_S1_3proc.hq similarity index 80% rename from cases_bmc/bakery/bakery_formula_S1_3proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_S1_3proc.hq index 06e2171b..de3c42b7 100644 --- a/cases_bmc/bakery/bakery_formula_S1_3proc.hq +++ b/cases_bmc/tacas_bakery/bakery_formula_S1_3proc.hq @@ -5,4 +5,4 @@ G((*p1_line[A]=0* <-> *p2_line[B]=0*) /\ (*p2_line[A]=1* <-> *p1_line[B]=1*) /\ (*p1_line[A]=4* <-> *p2_line[B]=4*) /\ (*p2_line[A]=4* <-> *p1_line[B]=4*))/\ -F(~(*p1_line[A] = p2_line[B]*) \/ ~(*p2_line[A] = p1_line[B]*)) +F(~(*p1_line[A]=p2_line[B]*) \/ ~(*p2_line[A]=p1_line[B]*)) diff --git a/cases_bmc/bakery/bakery_formula_S2_3proc.hq b/cases_bmc/tacas_bakery/bakery_formula_S2_3proc.hq similarity index 56% rename from cases_bmc/bakery/bakery_formula_S2_3proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_S2_3proc.hq index 72174607..70999c9d 100644 --- a/cases_bmc/bakery/bakery_formula_S2_3proc.hq +++ b/cases_bmc/tacas_bakery/bakery_formula_S2_3proc.hq @@ -1,10 +1,10 @@ -forall A. exists B. +exists A. exists B. G((*p1_line[A]=0* <-> *p2_line[B]=0*) /\ (*p2_line[A]=0* <-> *p1_line[B]=0*) /\ (*p1_line[A]=1* <-> *p2_line[B]=1*) /\ (*p2_line[A]=1* <-> *p1_line[B]=1*) -/\ (*p1_line[A]=3* <-> *p2_line[B]=3*) -/\ (*p2_line[A]=3* <-> *p1_line[B]=3*) /\ (*p1_line[A]=4* <-> *p2_line[B]=4*) -/\ (*p2_line[A]=4* <-> *p1_line[B]=4*))/\ +/\ (*p2_line[A]=4* <-> *p1_line[B]=4*) +/\ ((SELECTING[A]) -> (p1-TOKEN[A] \/ p2-TOKEN[A] \/ p3-TOKEN[A])) +/\ ((SELECTING[B]) -> (p1-TOKEN[B] \/ p2-TOKEN[B] \/ p3-TOKEN[B])))/\ F(~(*p1_line[A] = p2_line[B]*) \/ ~(*p2_line[A] = p1_line[B]*)) diff --git a/cases_bmc/bakery/bakery_formula_S3_3proc.hq b/cases_bmc/tacas_bakery/bakery_formula_S3_3proc.hq similarity index 71% rename from cases_bmc/bakery/bakery_formula_S3_3proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_S3_3proc.hq index 904da22d..7e44a5f4 100644 --- a/cases_bmc/bakery/bakery_formula_S3_3proc.hq +++ b/cases_bmc/tacas_bakery/bakery_formula_S3_3proc.hq @@ -1,12 +1,14 @@ -exists A. forall B. +exists A. exists B. G((p1-TOKEN[A] <-> p2-TOKEN[B]) /\(p2-TOKEN[A] <-> p1-TOKEN[B]) +/\(p1-TOKEN[A] <-> p3-TOKEN[B]) +/\(p3-TOKEN[A] <-> p1-TOKEN[B]) +/\(p2-TOKEN[A] <-> p3-TOKEN[B]) +/\(p3-TOKEN[A] <-> p2-TOKEN[B]) /\ (*p1_line[A]=0* <-> *p2_line[B]=0*) /\ (*p2_line[A]=0* <-> *p1_line[B]=0*) /\ (*p1_line[A]=1* <-> *p2_line[B]=1*) /\ (*p2_line[A]=1* <-> *p1_line[B]=1*) -/\ (*p1_line[A]=3* <-> *p2_line[B]=3*) -/\ (*p2_line[A]=3* <-> *p1_line[B]=3*) /\ (*p1_line[A]=4* <-> *p2_line[B]=4*) /\ (*p2_line[A]=4* <-> *p1_line[B]=4*))/\ F(~(*p1_line[A] = p2_line[B]*) \/ ~(*p2_line[A] = p1_line[B]*)) diff --git a/cases_bmc/bakery/bakery_formula_sym1_3proc.hq b/cases_bmc/tacas_bakery/bakery_formula_sym1_3proc.hq similarity index 100% rename from cases_bmc/bakery/bakery_formula_sym1_3proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_sym1_3proc.hq diff --git a/cases_bmc/bakery/bakery_formula_sym1_5proc.hq b/cases_bmc/tacas_bakery/bakery_formula_sym1_5proc.hq similarity index 100% rename from cases_bmc/bakery/bakery_formula_sym1_5proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_sym1_5proc.hq diff --git a/cases_bmc/bakery/bakery_formula_sym2_3proc.hq b/cases_bmc/tacas_bakery/bakery_formula_sym2_3proc.hq similarity index 100% rename from cases_bmc/bakery/bakery_formula_sym2_3proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_sym2_3proc.hq diff --git a/cases_bmc/bakery/bakery_formula_sym2_5proc.hq b/cases_bmc/tacas_bakery/bakery_formula_sym2_5proc.hq similarity index 100% rename from cases_bmc/bakery/bakery_formula_sym2_5proc.hq rename to cases_bmc/tacas_bakery/bakery_formula_sym2_5proc.hq diff --git a/cases_bmc/bakery/bakery_try.smv b/cases_bmc/tacas_bakery/bakery_try.smv similarity index 100% rename from cases_bmc/bakery/bakery_try.smv rename to cases_bmc/tacas_bakery/bakery_try.smv diff --git a/cases_bmc/multi_threaded/NI.smv b/cases_bmc/tacas_multi_threaded/NI.smv similarity index 100% rename from cases_bmc/multi_threaded/NI.smv rename to cases_bmc/tacas_multi_threaded/NI.smv diff --git a/cases_bmc/multi_threaded/NI_correct.smv b/cases_bmc/tacas_multi_threaded/NI_correct.smv similarity index 100% rename from cases_bmc/multi_threaded/NI_correct.smv rename to cases_bmc/tacas_multi_threaded/NI_correct.smv diff --git a/cases_bmc/multi_threaded/NI_formula.hq b/cases_bmc/tacas_multi_threaded/NI_formula.hq similarity index 100% rename from cases_bmc/multi_threaded/NI_formula.hq rename to cases_bmc/tacas_multi_threaded/NI_formula.hq diff --git a/cases_bmc/multi_threaded/NI_incorrect.smv b/cases_bmc/tacas_multi_threaded/NI_incorrect.smv similarity index 100% rename from cases_bmc/multi_threaded/NI_incorrect.smv rename to cases_bmc/tacas_multi_threaded/NI_incorrect.smv diff --git a/cases_bmc/mutation_testing/mutation_testing.hq b/cases_bmc/tacas_mutation_testing/mutation_testing.hq similarity index 100% rename from cases_bmc/mutation_testing/mutation_testing.hq rename to cases_bmc/tacas_mutation_testing/mutation_testing.hq diff --git a/cases_bmc/mutation_testing/mutation_testing.smv b/cases_bmc/tacas_mutation_testing/mutation_testing.smv similarity index 100% rename from cases_bmc/mutation_testing/mutation_testing.smv rename to cases_bmc/tacas_mutation_testing/mutation_testing.smv diff --git a/cases_bmc/tacas_nrp/NRP_correct.smv b/cases_bmc/tacas_nrp/NRP_correct.smv new file mode 100644 index 00000000..d87d6e75 --- /dev/null +++ b/cases_bmc/tacas_nrp/NRP_correct.smv @@ -0,0 +1,78 @@ +-- NON-REPUDIATION PROTOCOL (correct) +MODULE main + VAR + sender_act: 0..4; -- 0: skip; + -- 1: send receiver msg; + -- 2: send third-party msg: + -- 3: send receiver NRO; + -- 4: send send third-party NRO; + + receiver_act: 0..2; -- 0: skip; + -- 1: send sender NRR; + -- 2: send third-party NRR: + + thirdparty_act: 0..3; -- 0: skip; + -- 1: send receiver msg + -- 2: send sender NRO; + -- 3: send receiver NRR: + + take_turns: 0..2; -- 0: sender, 1:receiver, 2:thridparty + line: 1..7; + + + ASSIGN + init(sender_act) := 0; + init(receiver_act) := 0; + init(thirdparty_act) := 0; + init(take_turns) := 0; + init(line) := 1; + + -- (1) skip until P->T: m ; + -- (2) skip until P->T: NRO ; + -- (3) T->Q: m ; + -- (4) skip until Q->T: NRR; + -- (5) T->Q: NRO; + -- (6) T->P: NRR; + -- (7) TERMINATE; + next(line) := + case + (line=1 & !(sender_act=2)) : {1}; -- skip + (line=1 & sender_act=2) : {2}; -- P->T: m + (line=2 & !(sender_act=4)) : {2} ; -- skip + (line=2 & (sender_act=4)) : {3} ; -- P->T: NRO + line=3 : {4} ; + (line=4 & !(receiver_act=2)) : {4}; -- skip + (line=4 & (receiver_act=2)) : {5} ; -- Q->T NRR + line=5 : {6} ; + line=6 : {7} ; + line=7 : {7} ; -- terminate + esac; + + next(take_turns) := + case + (take_turns=0) : 1; + (take_turns=1) : 2; + (take_turns=2) : 0; + TRUE: take_turns; + esac; + + next(sender_act) := + case + (take_turns=0) : {0,1,2,3,4}; + !(take_turns=0) : 0; + esac; + + next(receiver_act) := + case + (take_turns=1) : {0,1,2}; + !(take_turns=1) : 0; + esac; + + next(thirdparty_act) := + case + (line=3) : {1}; + (line=5) : {2}; + (line=6) : {3}; + (take_turns=2) : {0,1,2,3}; + !(take_turns=2) : 0; + esac; diff --git a/cases_bmc/tacas_nrp/NRP_formula.hq b/cases_bmc/tacas_nrp/NRP_formula.hq new file mode 100644 index 00000000..54dc7c67 --- /dev/null +++ b/cases_bmc/tacas_nrp/NRP_formula.hq @@ -0,0 +1,4 @@ +exists A. forall B. +( F(*line[A]=3*) /\ F(*line[A]=5*) /\ F(*line[A]=6*)) /\ +( (G(*sender_act[A]=sender_act[B]*)) -> ((F(*line[B]=5*))<-> (F(*line[B]=6*))) ) /\ +( (G(*receiver_act[A]=receiver_act[B]*)) -> ((F(*line[B]=5*))<-> (F(*line[B]=6*))) ) diff --git a/cases_bmc/tacas_nrp/NRP_incorrect.smv b/cases_bmc/tacas_nrp/NRP_incorrect.smv new file mode 100644 index 00000000..0ad300be --- /dev/null +++ b/cases_bmc/tacas_nrp/NRP_incorrect.smv @@ -0,0 +1,79 @@ +-- NON-REPUDIATION PROTOCOL (incorrect) +MODULE main + VAR + sender_act: 0..4; -- 0: skip; + -- 1: send receiver msg; + -- 2: send third-party msg: + -- 3: send receiver NRO; + -- 4: send send third-party NRO; + + receiver_act: 0..2; -- 0: skip; + -- 1: send sender NRR; + -- 2: send third-party NRR: + + + thirdparty_act: 0..3; -- 0: skip; + -- 1: send receiver msg + -- 2: send sender NRO; + -- 3: send receiver NRR: + + + take_turns: 0..2; -- 0: sender, 1:receiver, 2:thridparty + line: 1..7; + + ASSIGN + init(sender_act) := 0; + init(receiver_act) := 0; + init(thirdparty_act) := 0; + init(take_turns) := 0; + init(line) := 1; + + -- (1) skip until P->T: m ; + -- (2) skip until P->T: NRO ; + -- (3) T->Q: m ; + -- (4) does not skip until Q->T: NRR here! (incorrect) + -- (5) T->Q: NRO; instead, skip until Q->T: NRR here! + -- (6) T->P: NRR; + -- (7) TERMINATE; + next(line) := + case + (line=1 & !(sender_act=2)) : {1}; -- skip + (line=1 & sender_act=2) : {2}; -- P->T: m + (line=2 & !(sender_act=4)) : {2} ; -- skip + (line=2 & (sender_act=4)) : {3} ; -- P->T: NRO + line=3 : {4} ; + line=4 : {5} ; + (line=5 & !(receiver_act=2)) : {5}; -- skip + (line=5 & (receiver_act=2)) : {6} ; -- Q->T NRR + line=6 : {7} ; + line=7 : {7} ; -- terminate + esac; + + next(take_turns) := + case + (take_turns=0) : 1; + (take_turns=1) : 2; + (take_turns=2) : 0; + TRUE: take_turns; + esac; + + next(sender_act) := + case + (take_turns=0) : {0,1,2,3,4}; + !(take_turns=0) : 0; + esac; + + next(receiver_act) := + case + (take_turns=1) : {0,1,2}; + !(take_turns=1) : 0; + esac; + + next(thirdparty_act) := + case + (line=3) : {1}; + (line=4) : {2}; + (line=6) : {3}; + (take_turns=2) : {0,1,2,3}; + !(take_turns=2) : 0; + esac; diff --git a/cases_bmc/robotic_planning/robotic.smv b/cases_bmc/tacas_robotic/robotic.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic.smv rename to cases_bmc/tacas_robotic/robotic.smv diff --git a/cases_bmc/robotic_planning/robotic_help_rb.py b/cases_bmc/tacas_robotic/robotic_help_rb.py similarity index 100% rename from cases_bmc/robotic_planning/robotic_help_rb.py rename to cases_bmc/tacas_robotic/robotic_help_rb.py diff --git a/cases_bmc/robotic_planning/robotic_help_sp.py b/cases_bmc/tacas_robotic/robotic_help_sp.py similarity index 100% rename from cases_bmc/robotic_planning/robotic_help_sp.py rename to cases_bmc/tacas_robotic/robotic_help_sp.py diff --git a/cases_bmc/robotic_planning/robotic_robustness_100.smv b/cases_bmc/tacas_robotic/robotic_robustness_100.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_robustness_100.smv rename to cases_bmc/tacas_robotic/robotic_robustness_100.smv diff --git a/cases_bmc/robotic_planning/robotic_robustness_1600.smv b/cases_bmc/tacas_robotic/robotic_robustness_1600.smv similarity index 99% rename from cases_bmc/robotic_planning/robotic_robustness_1600.smv rename to cases_bmc/tacas_robotic/robotic_robustness_1600.smv index 84ec1588..f46cc87b 100644 --- a/cases_bmc/robotic_planning/robotic_robustness_1600.smv +++ b/cases_bmc/tacas_robotic/robotic_robustness_1600.smv @@ -13,8 +13,11 @@ next(act):= case -- init - (x_axis=0 & y_axis=0): {1,4}; - + --- the boundary of the whole environment + (x_axis=0): {1,4}; + (x_axis=39): {2,3}; + (y_axis=0): {1,4}; + (y_axis=39): {2,3}; (x_axis=0 & ((y_axis=5) | (y_axis=6) | (y_axis=7) | (y_axis=8) | (y_axis=9) | (y_axis=10) | (y_axis=11) | (y_axis=12) | (y_axis=13) | (y_axis=14) | (y_axis=15) | (y_axis=16) | (y_axis=17) | (y_axis=18) | (y_axis=19) | (y_axis=20) | (y_axis=21) | (y_axis=22) | (y_axis=23) | (y_axis=24) | (y_axis=25) | (y_axis=26) | (y_axis=27) | (y_axis=28) | (y_axis=29) | (y_axis=30) | (y_axis=31) | (y_axis=32) | (y_axis=33) | (y_axis=34) | (y_axis=35) | (y_axis=36) | (y_axis=37) | (y_axis=38) | (y_axis=39)) ): act; (x_axis=1 & ((y_axis=6) | (y_axis=7) | (y_axis=8) | (y_axis=9) | (y_axis=10) | (y_axis=11) | (y_axis=12) | (y_axis=13) | (y_axis=14) | (y_axis=15) | (y_axis=16) | (y_axis=17) | (y_axis=18) | (y_axis=19) | (y_axis=20) | (y_axis=21) | (y_axis=22) | (y_axis=23) | (y_axis=24) | (y_axis=25) | (y_axis=26) | (y_axis=27) | (y_axis=28) | (y_axis=29) | (y_axis=30) | (y_axis=31) | (y_axis=32) | (y_axis=33) | (y_axis=34) | (y_axis=35) | (y_axis=36) | (y_axis=37) | (y_axis=38) | (y_axis=39)) ): act; @@ -170,13 +173,6 @@ -----4 - - --- the boundary of the whole environment - (x_axis=0): {1,4}; - (x_axis=39): {2,3}; - (y_axis=0): {1,4}; - (y_axis=39): {2,3}; - -- else, move to all four directions TRUE: {1,2,3,4}; esac; @@ -267,9 +263,6 @@ (x_axis=38 & act=3) : 37 ; (x_axis=38 & act=4) : 39 ; (x_axis=39 & act=3) : 38 ; - - - TRUE: x_axis; esac; diff --git a/cases_bmc/robotic_planning/robotic_robustness_3600.smv b/cases_bmc/tacas_robotic/robotic_robustness_3600.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_robustness_3600.smv rename to cases_bmc/tacas_robotic/robotic_robustness_3600.smv diff --git a/cases_bmc/robotic_planning/robotic_robustness_400.smv b/cases_bmc/tacas_robotic/robotic_robustness_400.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_robustness_400.smv rename to cases_bmc/tacas_robotic/robotic_robustness_400.smv diff --git a/cases_bmc/robotic_planning/robotic_robustness_formula.hq b/cases_bmc/tacas_robotic/robotic_robustness_formula.hq similarity index 100% rename from cases_bmc/robotic_planning/robotic_robustness_formula.hq rename to cases_bmc/tacas_robotic/robotic_robustness_formula.hq diff --git a/cases_bmc/robotic_planning/robotic_shortestpath.smv b/cases_bmc/tacas_robotic/robotic_shortestpath.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_shortestpath.smv rename to cases_bmc/tacas_robotic/robotic_shortestpath.smv diff --git a/cases_bmc/robotic_planning/robotic_sp_100.smv b/cases_bmc/tacas_robotic/robotic_sp_100.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_sp_100.smv rename to cases_bmc/tacas_robotic/robotic_sp_100.smv diff --git a/cases_bmc/robotic_planning/robotic_sp_1600.smv b/cases_bmc/tacas_robotic/robotic_sp_1600.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_sp_1600.smv rename to cases_bmc/tacas_robotic/robotic_sp_1600.smv diff --git a/cases_bmc/robotic_planning/robotic_sp_3600.smv b/cases_bmc/tacas_robotic/robotic_sp_3600.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_sp_3600.smv rename to cases_bmc/tacas_robotic/robotic_sp_3600.smv diff --git a/cases_bmc/robotic_planning/robotic_sp_400.smv b/cases_bmc/tacas_robotic/robotic_sp_400.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_sp_400.smv rename to cases_bmc/tacas_robotic/robotic_sp_400.smv diff --git a/cases_bmc/robotic_planning/robotic_sp_formula.hq b/cases_bmc/tacas_robotic/robotic_sp_formula.hq similarity index 100% rename from cases_bmc/robotic_planning/robotic_sp_formula.hq rename to cases_bmc/tacas_robotic/robotic_sp_formula.hq diff --git a/cases_bmc/robotic_planning/robotic_test.smv b/cases_bmc/tacas_robotic/robotic_test.smv similarity index 100% rename from cases_bmc/robotic_planning/robotic_test.smv rename to cases_bmc/tacas_robotic/robotic_test.smv diff --git a/cases_bmc/snark/snark1_M1_concurrent.smv b/cases_bmc/tacas_snark/snark1_M1_concurrent.smv similarity index 100% rename from cases_bmc/snark/snark1_M1_concurrent.smv rename to cases_bmc/tacas_snark/snark1_M1_concurrent.smv diff --git a/cases_bmc/snark/snark1_M2_sequential.smv b/cases_bmc/tacas_snark/snark1_M2_sequential.smv similarity index 100% rename from cases_bmc/snark/snark1_M2_sequential.smv rename to cases_bmc/tacas_snark/snark1_M2_sequential.smv diff --git a/cases_bmc/snark/snark1_formula.hq b/cases_bmc/tacas_snark/snark1_formula.hq similarity index 100% rename from cases_bmc/snark/snark1_formula.hq rename to cases_bmc/tacas_snark/snark1_formula.hq diff --git a/cases_bmc/snark/snark2_M1_concurrent.smv b/cases_bmc/tacas_snark/snark2_M1_concurrent.smv similarity index 100% rename from cases_bmc/snark/snark2_M1_concurrent.smv rename to cases_bmc/tacas_snark/snark2_M1_concurrent.smv diff --git a/cases_bmc/snark/snark2_M2_sequential.smv b/cases_bmc/tacas_snark/snark2_M2_sequential.smv similarity index 100% rename from cases_bmc/snark/snark2_M2_sequential.smv rename to cases_bmc/tacas_snark/snark2_M2_sequential.smv diff --git a/cases_bmc/snark/snark2_formula.hq b/cases_bmc/tacas_snark/snark2_formula.hq similarity index 100% rename from cases_bmc/snark/snark2_formula.hq rename to cases_bmc/tacas_snark/snark2_formula.hq diff --git a/cases_bmc/snark/snark2_new_M1_concurrent.smv b/cases_bmc/tacas_snark/snark2_new_M1_concurrent.smv similarity index 100% rename from cases_bmc/snark/snark2_new_M1_concurrent.smv rename to cases_bmc/tacas_snark/snark2_new_M1_concurrent.smv diff --git a/cases_bmc/snark/snark2_new_M2_sequential.smv b/cases_bmc/tacas_snark/snark2_new_M2_sequential.smv similarity index 100% rename from cases_bmc/snark/snark2_new_M2_sequential.smv rename to cases_bmc/tacas_snark/snark2_new_M2_sequential.smv diff --git a/cases_bmc/snark/snark2_with_collision_M1_concurrent.smv b/cases_bmc/tacas_snark/snark2_with_collision_M1_concurrent.smv similarity index 100% rename from cases_bmc/snark/snark2_with_collision_M1_concurrent.smv rename to cases_bmc/tacas_snark/snark2_with_collision_M1_concurrent.smv diff --git a/cases_bmc/snark/snark2_with_collision_M2_sequential.smv b/cases_bmc/tacas_snark/snark2_with_collision_M2_sequential.smv similarity index 100% rename from cases_bmc/snark/snark2_with_collision_M2_sequential.smv rename to cases_bmc/tacas_snark/snark2_with_collision_M2_sequential.smv diff --git a/cases_bmc/snark/snark2_withtoken_M1_concurrent.smv b/cases_bmc/tacas_snark/snark2_withtoken_M1_concurrent.smv similarity index 100% rename from cases_bmc/snark/snark2_withtoken_M1_concurrent.smv rename to cases_bmc/tacas_snark/snark2_withtoken_M1_concurrent.smv diff --git a/cases_bmc/snark/snark_notes.txt b/cases_bmc/tacas_snark/snark_notes.txt similarity index 100% rename from cases_bmc/snark/snark_notes.txt rename to cases_bmc/tacas_snark/snark_notes.txt diff --git a/cases_bmc/snark/snark_overflow.smv b/cases_bmc/tacas_snark/snark_overflow.smv similarity index 100% rename from cases_bmc/snark/snark_overflow.smv rename to cases_bmc/tacas_snark/snark_overflow.smv diff --git a/cases_compare/.DS_Store b/cases_compare/.DS_Store new file mode 100644 index 00000000..1c915ecb Binary files /dev/null and b/cases_compare/.DS_Store differ diff --git a/cases_compare/NI_f1.hq b/cases_compare/NI_f1.hq new file mode 100644 index 00000000..a2f3ab3d --- /dev/null +++ b/cases_compare/NI_f1.hq @@ -0,0 +1,4 @@ +forall A. exists B. +F~(*HIGH[A] = HIGH[B]*) +/\ +G(*LOW[A] = LOW[B]*) diff --git a/cases_compare/NI_f2.hq b/cases_compare/NI_f2.hq new file mode 100644 index 00000000..95e94cde --- /dev/null +++ b/cases_compare/NI_f2.hq @@ -0,0 +1,4 @@ +forall A. exists B. +F!(*HIGH*_A = *HIGH*_B) +& +G(*LOW*_A = *LOW*_B) diff --git a/cases_compare/NI_v1.smv b/cases_compare/NI_v1.smv new file mode 100644 index 00000000..f8cfa67d --- /dev/null +++ b/cases_compare/NI_v1.smv @@ -0,0 +1,31 @@ +MODULE main +-- A simple program that violates non-interference +-- +-- 1: LOW=false, HIGH={false, true} +-- 2: if(HIGH): +-- 3: LOW=true +-- + +VAR + HIGH: 0..1; + LOW: 0..1; + PC: 1..3; +ASSIGN + -- Initial Conditions + init(HIGH):= {0, 1}; + init(LOW):= {0}; + init(PC):= 1; -- program counter starts at 1. + + -- Transition Relations + next(HIGH) := HIGH; + next(LOW) := + case + ((PC=2) & (HIGH=1)): 1; + TRUE: LOW; + esac; + next(PC) := + case + (PC=3): 3; + TRUE: PC+1; + esac; +DEFINE diff --git a/cases_compare/NI_v2.smv b/cases_compare/NI_v2.smv new file mode 100644 index 00000000..73fbd0d2 --- /dev/null +++ b/cases_compare/NI_v2.smv @@ -0,0 +1,30 @@ +MODULE main +-- A simple program that violates non-interference +-- +-- 1: LOW=0, HIGH={0....10} +-- 2: if(HIGH>5): +-- 3: LOW=HIGH +-- +VAR + HIGH: 0..10; + LOW: 0..10; + PC: 1..3; +ASSIGN + -- Initial Conditions + init(HIGH):= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + init(LOW):= {0}; + init(PC):= 1; -- program counter starts at 1. + + -- Transition Relations + next(HIGH) := HIGH; + next(LOW) := + case + ((PC=2) & (HIGH>5)): HIGH; + TRUE: LOW; + esac; + next(PC) := + case + (PC=3): 3; + TRUE: PC+1; + esac; +DEFINE diff --git a/cases_compare/NI_v3.smv b/cases_compare/NI_v3.smv new file mode 100644 index 00000000..0f390bac --- /dev/null +++ b/cases_compare/NI_v3.smv @@ -0,0 +1,36 @@ +MODULE main +-- A simple program that violates non-interference +-- +-- 1: LOW=0, HIGH={0} +-- 2: HIGH={0...10} +-- 3: if(HIGH>5): +-- 4: LOW=HIGH +-- +VAR + HIGH: 0..10; + LOW: 0..10; + PC: 1..4; +ASSIGN + -- Initial Conditions + init(HIGH):= {0}; + init(LOW):= {0}; + init(PC):= 1; -- program counter starts at 1. + + -- Transition Relations + next(HIGH):= + case + (PC=2): {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + TRUE: HIGH; + esac; + + next(LOW) := + case + ((PC=3) & (HIGH>5)): HIGH; + TRUE: LOW; + esac; + next(PC) := + case + (PC=4): 4; + TRUE: PC+1; + esac; +DEFINE diff --git a/cases_compare/adv_f1.hq b/cases_compare/adv_f1.hq new file mode 100644 index 00000000..a784b717 --- /dev/null +++ b/cases_compare/adv_f1.hq @@ -0,0 +1,8 @@ +forall A. exists B. +(G~(WALL[A])) +-> +( + ((G~(WALL[B])) /\ (F(GOAL[B]))) + /\ + (G(~((*x-axis[A] = x-axis[B]*) /\ (*y-axis[A] = y-axis[B]*)))) +) diff --git a/cases_compare/adv_f2.hq b/cases_compare/adv_f2.hq new file mode 100644 index 00000000..88f99a11 --- /dev/null +++ b/cases_compare/adv_f2.hq @@ -0,0 +1,8 @@ +forall A. exists B. +(G!(*WALL*_A)) +-> +( + ((G!(*WALL*_B)) & (F(*GOAL*_B))) + & + (G(!((*x-axis*_A = *x-axis*_B) & (*y-axis*_A = *y-axis*_B)))) +) diff --git a/cases_compare/adv_v1.smv b/cases_compare/adv_v1.smv new file mode 100644 index 00000000..ba1f41b8 --- /dev/null +++ b/cases_compare/adv_v1.smv @@ -0,0 +1,39 @@ +MODULE main +VAR + x-axis: 0..2; + y-axis: 0..2; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 1; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=2): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=2): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=2): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=2): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; + +DEFINE + GOAL := (x-axis=1) & (y-axis=2); + WALL := (x-axis=2) & (y-axis=1); diff --git a/cases_compare/adv_v2.smv b/cases_compare/adv_v2.smv new file mode 100644 index 00000000..eb5d7b9b --- /dev/null +++ b/cases_compare/adv_v2.smv @@ -0,0 +1,39 @@ +MODULE main +VAR + x-axis: 0..3; + y-axis: 0..3; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 0; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=3): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=3): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=3): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=2): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; -- for now don't allow noop + +DEFINE + GOAL := (x-axis=1) & (y-axis=2); + WALL := (x-axis=2) & (y-axis=1); diff --git a/cases_compare/counting_f1.hq b/cases_compare/counting_f1.hq new file mode 100644 index 00000000..e24a0445 --- /dev/null +++ b/cases_compare/counting_f1.hq @@ -0,0 +1,7 @@ +forall A. exists B. exists C. +(F(GOALA[B])) /\ (F(GOALB[C])) + /\ +G( + (STARTED[B]/\STARTED[C]) + -> + (~((*x-axis[B] = x-axis[C]*) /\ (*y-axis[B] = y-axis[C]*)))) diff --git a/cases_compare/counting_f2.hq b/cases_compare/counting_f2.hq new file mode 100644 index 00000000..1c957d51 --- /dev/null +++ b/cases_compare/counting_f2.hq @@ -0,0 +1,7 @@ +forall A. exists B. exists C. +(F(*GOALA*_B)) & (F(*GOALB*_C)) +& +G( + (*STARTED*_B & *STARTED*_C) + -> + (!((*x-axis*_B = *x-axis*_C) & (*y-axis*_B = *y-axis*_C)))) diff --git a/cases_compare/counting_opt_v1.smv b/cases_compare/counting_opt_v1.smv new file mode 100644 index 00000000..ba1f41b8 --- /dev/null +++ b/cases_compare/counting_opt_v1.smv @@ -0,0 +1,39 @@ +MODULE main +VAR + x-axis: 0..2; + y-axis: 0..2; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 1; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=2): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=2): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=2): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=2): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; + +DEFINE + GOAL := (x-axis=1) & (y-axis=2); + WALL := (x-axis=2) & (y-axis=1); diff --git a/cases_compare/counting_v1.smv b/cases_compare/counting_v1.smv new file mode 100644 index 00000000..7916007b --- /dev/null +++ b/cases_compare/counting_v1.smv @@ -0,0 +1,40 @@ +MODULE main +VAR + x-axis: 0..5; + y-axis: 0..5; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 0; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=5): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=5): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=5): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=5): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; + +DEFINE + STARTED := !((x-axis=0) & (y-axis=0)); + GOALA := (x-axis=0) & (y-axis=5); + GOALB := (x-axis=5) & (y-axis=0); diff --git a/cases_compare/counting_v2.smv b/cases_compare/counting_v2.smv new file mode 100644 index 00000000..45f42bca --- /dev/null +++ b/cases_compare/counting_v2.smv @@ -0,0 +1,40 @@ +MODULE main +VAR + x-axis: 0..7; + y-axis: 0..7; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 0; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=7): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=7): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=7): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=7): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; + +DEFINE + STARTED := !((x-axis=0) & (y-axis=0)); + GOALA := (x-axis=0) & (y-axis=7); + GOALB := (x-axis=7) & (y-axis=0); diff --git a/cases_compare/den.smv b/cases_compare/den.smv new file mode 100644 index 00000000..300ba3c5 --- /dev/null +++ b/cases_compare/den.smv @@ -0,0 +1,52 @@ +MODULE main + VAR + init_balance: 0..20; + debits_amount: 1..10; + PC: 1..6; + num_itr: 0..11; + halt: boolean; + ASSIGN + -- Initial Conditions + init(init_balance):= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + init(debits_amount) := {1,2,3,4,5,6,7,8,9,10}; + init(num_itr):= 0; + init(PC):= 1; -- but program counter starts at 1. + init(halt) := FALSE; + + -- Transition Relations + next(init_balance) := + case + ((PC=3) & (init_balance - debits_amount > 0)): (init_balance - debits_amount); + TRUE: init_balance; + esac; + + next(debits_amount) := + case + TRUE: debits_amount; + esac; + + next(num_itr) := + case + (PC=4): num_itr; + TRUE: num_itr; + esac; + + next(PC) := + case + (PC=1): 2; -- num_itr = 0 + ((PC=2) & (init_balance>debits_amount)): 3; -- while (init_balance >= debits amount) + ((PC=2) & (init_balance<=debits_amount)): 5; + (PC=3): 4; -- init_balance -= debits_amount + (PC=4): 2; -- num_itr += 1 + (PC=5): 6; -- Return num_itr += 1 + (PC=6): 6; -- (END) + TRUE: PC; + esac; + + next(halt) := + case + (PC=6): TRUE; + TRUE: halt; + esac; + +DEFINE diff --git a/cases_compare/den.zip b/cases_compare/den.zip new file mode 100644 index 00000000..c85aff63 Binary files /dev/null and b/cases_compare/den.zip differ diff --git a/cases_compare/den_f1.hq b/cases_compare/den_f1.hq new file mode 100644 index 00000000..b2115419 --- /dev/null +++ b/cases_compare/den_f1.hq @@ -0,0 +1,8 @@ +forall A. exists B. exists C. +G( + (*debits_amount[A]=debits_amount[B]*) + /\ + (*debits_amount[A]=debits_amount[C]*) + /\ + ~(*init_balance[B]=init_balance[C]*) +) diff --git a/cases_compare/den_f2.hq b/cases_compare/den_f2.hq new file mode 100644 index 00000000..ff4d7aef --- /dev/null +++ b/cases_compare/den_f2.hq @@ -0,0 +1,8 @@ +forall A. exists B. exists C. +G( + (*debits_amount*_A=*debits_amount*_B) + & + (*debits_amount*_A=*debits_amount*_C) + & + !(*init_balance*_B=*init_balance*_C) +) diff --git a/cases_compare/den_small.smv b/cases_compare/den_small.smv new file mode 100644 index 00000000..16eef935 --- /dev/null +++ b/cases_compare/den_small.smv @@ -0,0 +1,52 @@ +MODULE main + VAR + init_balance: 0..10; + debits_amount: 1..5; + PC: 1..6; + num_itr: 0..11; + halt: boolean; + ASSIGN + -- Initial Conditions + init(init_balance):= {0,1,2,3,4,5,6,7,8,9,10}; + init(debits_amount) := {1,2,3,4,5}; + init(num_itr):= 0; + init(PC):= 1; -- but program counter starts at 1. + init(halt) := FALSE; + + -- Transition Relations + next(init_balance) := + case + ((PC=3) & (init_balance - debits_amount > 0)): (init_balance - debits_amount); + TRUE: init_balance; + esac; + + next(debits_amount) := + case + TRUE: debits_amount; + esac; + + next(num_itr) := + case + (PC=4): num_itr; + TRUE: num_itr; + esac; + + next(PC) := + case + (PC=1): 2; -- num_itr = 0 + ((PC=2) & (init_balance>debits_amount)): 3; -- while (init_balance >= debits amount) + ((PC=2) & (init_balance<=debits_amount)): 5; + (PC=3): 4; -- init_balance -= debits_amount + (PC=4): 2; -- num_itr += 1 + (PC=5): 6; -- Return num_itr += 1 + (PC=6): 6; -- (END) + TRUE: PC; + esac; + + next(halt) := + case + (PC=6): TRUE; + TRUE: halt; + esac; + +DEFINE diff --git a/cases_compare/mapsynth2.zip b/cases_compare/mapsynth2.zip new file mode 100644 index 00000000..6f6b8cfa Binary files /dev/null and b/cases_compare/mapsynth2.zip differ diff --git a/cases_compare/msynth2_MA.smv b/cases_compare/msynth2_MA.smv new file mode 100644 index 00000000..bcaa15ae --- /dev/null +++ b/cases_compare/msynth2_MA.smv @@ -0,0 +1,45 @@ +MODULE main + +VAR + secret: 0..1; + Alice_Bob_sec: boolean; + Bob_Eve_pub: boolean; + Bob_sec: boolean; + Eve_secisnotempty: boolean; + STATE: 0..6; + +ASSIGN + -- Initial Conditions + init(secret) := {0,1}; + init(Alice_Bob_sec):= FALSE; + init(Bob_Eve_pub):= FALSE; + init(Bob_sec):= FALSE; + init(Eve_secisnotempty):= FALSE; + init(STATE):= 0; + + -- Transition Relations + next(secret) := secret; + + next(Alice_Bob_sec) := {TRUE, FALSE}; + next(Bob_Eve_pub) := {TRUE, FALSE}; + next(Bob_sec):= {TRUE, FALSE}; + next(Eve_secisnotempty) := {TRUE, FALSE}; + + next(STATE) := + case + (STATE=0) : {1, 2}; + (STATE=1) : {3, 4}; + (STATE=2) : {2, 1}; + (STATE=3) : {3, 4}; + (STATE=4) : {5, 6}; + TRUE: STATE; + esac; + +DEFINE + VALID := ((STATE=0) -> (!Alice_Bob_sec& !Bob_Eve_pub & !Bob_sec & !Eve_secisnotempty)) + & ((STATE=1) -> (Alice_Bob_sec & !Bob_Eve_pub & !Bob_sec & !Eve_secisnotempty)) + & ((STATE=2) -> (!Alice_Bob_sec & Bob_Eve_pub & !Bob_sec & !Eve_secisnotempty)) + & ((STATE=3) -> (Alice_Bob_sec & !Bob_Eve_pub & Bob_sec & !Eve_secisnotempty)) + & ((STATE=4) -> (!Alice_Bob_sec & Bob_Eve_pub & Bob_sec & !Eve_secisnotempty)) + & ((STATE=5) -> (!Alice_Bob_sec & Bob_Eve_pub & Bob_sec & !Eve_secisnotempty & (secret=0))) + & ((STATE=6) -> (!Alice_Bob_sec & Bob_Eve_pub & Bob_sec & Eve_secisnotempty & (secret=1))); diff --git a/cases_compare/msynth2_MB.smv b/cases_compare/msynth2_MB.smv new file mode 100644 index 00000000..e9869816 --- /dev/null +++ b/cases_compare/msynth2_MB.smv @@ -0,0 +1,38 @@ +MODULE main + +VAR + S_R_sec: boolean; + S_R_pub: boolean; + R_pub: boolean; + R_sec: boolean; + STATE: 0..3; + +ASSIGN + -- Initial Conditions + init(S_R_sec):= FALSE; + init(S_R_pub):= FALSE; + init(R_pub):= FALSE; + init(R_sec):= FALSE; + init(STATE):= 0; + + -- Transition Relations + next(S_R_sec) := {TRUE, FALSE}; + next(S_R_pub) := {TRUE, FALSE}; + next(R_pub) := {TRUE, FALSE}; + next(R_sec) := {TRUE, FALSE}; + + + next(STATE) := + case + (STATE=0) : {1, 2}; + (STATE=1) : {1, 3}; + (STATE=2) : {2}; + (STATE=3) : {3}; + TRUE: STATE; + esac; + +DEFINE + VALID := ((STATE=0) -> (!S_R_sec & !S_R_pub & !R_pub & !R_sec )) + & ((STATE=1) -> (!S_R_sec & S_R_pub & R_pub & !R_sec )) + & ((STATE=2) -> ( S_R_sec & !S_R_pub & !R_pub & R_sec )) + & ((STATE=3) -> ( S_R_sec & !S_R_pub & R_pub & R_sec )); diff --git a/cases_compare/msynth2_MM.smv b/cases_compare/msynth2_MM.smv new file mode 100644 index 00000000..3b110be4 --- /dev/null +++ b/cases_compare/msynth2_MM.smv @@ -0,0 +1,35 @@ +MODULE main + +VAR + ABs_SRs: boolean; + ABs_SRp: boolean; + BEp_SRs: boolean; + BEp_SRp: boolean; + Bs_Rp: boolean; + Bs_Rs: boolean; + Es_Rp: boolean; + Es_Rs: boolean; + + +ASSIGN + -- Initial Conditions is arbitrary in mapping synth + init(ABs_SRs) := {TRUE, FALSE}; + init(ABs_SRp) := {TRUE, FALSE}; + init(BEp_SRs) := {TRUE, FALSE}; + init(BEp_SRp) := {TRUE, FALSE}; + init(Bs_Rp) := {TRUE, FALSE}; + init(Bs_Rs) := {TRUE, FALSE}; + init(Es_Rp) := {TRUE, FALSE}; + init(Es_Rs) := {TRUE, FALSE}; + + -- Transition Relations + next(ABs_SRs) := ABs_SRs; + next(ABs_SRp) := ABs_SRp; + next(BEp_SRs) := BEp_SRs; + next(BEp_SRp) := BEp_SRp; + next(Bs_Rp) := Bs_Rp; + next(Bs_Rs) := Bs_Rs; + next(Es_Rp) := Es_Rp; + next(Es_Rs) := Es_Rs; + +DEFINE diff --git a/cases_compare/msynth2_f1.hq b/cases_compare/msynth2_f1.hq new file mode 100644 index 00000000..b36864c1 --- /dev/null +++ b/cases_compare/msynth2_f1.hq @@ -0,0 +1,27 @@ +exists A. forall B. forall C. exists D. exists E. +(G ( + ((ABs_SRs[A]) -> ((Alice_Bob_sec[B]) -> (S_R_sec[C]))) /\ + ((ABs_SRp[A]) -> ((Alice_Bob_sec[B]) -> (S_R_pub[C]))) /\ + ((BEp_SRs[A]) -> ((Bob_Eve_pub[B]) -> (S_R_sec[C]))) /\ + ((BEp_SRp[A]) -> ((Bob_Eve_pub[B]) -> (S_R_pub[C]))) /\ + ((Bs_Rp[A]) -> ((Bob_sec[B]) -> (R_pub[C]))) /\ + ((Bs_Rs[A]) -> ((Bob_sec[B]) -> (R_sec[C]))) /\ + ((Es_Rp[A]) -> ((Eve_secisnotempty[B]) -> (R_pub[C]))) /\ + ((Es_Rs[A]) -> ((Eve_secisnotempty[B]) -> (R_sec[C]))) +) +-> +( + G ( + ((ABs_SRs[A]) -> ((Alice_Bob_sec[D]) -> (S_R_sec[E]))) /\ + ((ABs_SRp[A]) -> ((Alice_Bob_sec[D]) -> (S_R_pub[E]))) /\ + ((BEp_SRs[A]) -> ((Bob_Eve_pub[D]) -> (S_R_sec[E]))) /\ + ((BEp_SRp[A]) -> ((Bob_Eve_pub[D]) -> (S_R_pub[E]))) /\ + ((Bs_Rp[A]) -> ((Bob_sec[D]) -> (R_pub[E]))) /\ + ((Bs_Rs[A]) -> ((Bob_sec[D]) -> (R_sec[E]))) /\ + ((Es_Rp[A]) -> ((Eve_secisnotempty[D]) -> (R_pub[E]))) /\ + ((Es_Rs[A]) -> ((Eve_secisnotempty[D]) -> (R_sec[E]))) + ) + /\ + G ( ~(*secret[B] = secret[D]*) /\ (Eve_secisnotempty[B] <-> Eve_secisnotempty[D])) +) +) diff --git a/cases_compare/msynth2_f2.hq b/cases_compare/msynth2_f2.hq new file mode 100644 index 00000000..a986718b --- /dev/null +++ b/cases_compare/msynth2_f2.hq @@ -0,0 +1,27 @@ +exists A. forall B. forall C. exists D. exists E. +(G ( + ((*ABs_SRs*_A) -> ((*Alice_Bob_sec*_B) -> (*S_R_sec*_C))) & + ((*ABs_SRp*_A) -> ((*Alice_Bob_sec*_B) -> (*S_R_pub*_C))) & + ((*BEp_SRs*_A) -> ((*Bob_Eve_pub*_B) -> (*S_R_sec*_C))) & + ((*BEp_SRp*_A) -> ((*Bob_Eve_pub*_B) -> (*S_R_pub*_C))) & + ((*Bs_Rp*_A) -> ((*Bob_sec*_B) -> (*R_pub*_C))) & + ((*Bs_Rs*_A) -> ((*Bob_sec*_B) -> (*R_sec*_C))) & + ((*Es_Rp*_A) -> ((*Eve_secisnotempty*_B) -> (*R_pub*_C))) & + ((*Es_Rs*_A) -> ((*Eve_secisnotempty*_B) -> (*R_sec*_C))) +) +-> +( + G ( + ((*ABs_SRs*_A) -> ((*Alice_Bob_sec*_D) -> (*S_R_sec*_E))) & + ((*ABs_SRp*_A) -> ((*Alice_Bob_sec*_D) -> (*S_R_pub*_E))) & + ((*BEp_SRs*_A) -> ((*Bob_Eve_pub*_D) -> (*S_R_sec*_E))) & + ((*BEp_SRp*_A) -> ((*Bob_Eve_pub*_D) -> (*S_R_pub*_E))) & + ((*Bs_Rp*_A) -> ((*Bob_sec*_D) -> (*R_pub*_E))) & + ((*Bs_Rs*_A) -> ((*Bob_sec*_D) -> (*R_sec*_E))) & + ((*Es_Rp*_A) -> ((*Eve_secisnotempty*_D) -> (*R_pub*_E))) & + ((*Es_Rs*_A) -> ((*Eve_secisnotempty*_D) -> (*R_sec*_E))) + ) + & + G ( !(*secret*_B = *secret*_D) & (*Eve_secisnotempty*_B = *Eve_secisnotempty*_D)) +) +) diff --git a/cases_compare/msynth_MA.smv b/cases_compare/msynth_MA.smv new file mode 100644 index 00000000..dc6c4f54 --- /dev/null +++ b/cases_compare/msynth_MA.smv @@ -0,0 +1,38 @@ +MODULE main + +VAR + atom_p: boolean; + atom_q: boolean; + PC: 0..3; + +ASSIGN + -- Initial Conditions + init(atom_p):= FALSE; + init(atom_q):= FALSE; + init(PC) := 0; + + -- Transition Relations + next(atom_p) := + case + (PC=0): {TRUE, FALSE}; + (PC=1): {TRUE, FALSE}; + (PC=2): FALSE; + TRUE: atom_p; + esac; + + next(atom_q) := + case + (PC=0): {TRUE, FALSE}; + (PC=1): {TRUE, FALSE}; + (PC=2): FALSE; + TRUE: atom_q; + esac; + + next(PC) := + case + (PC=3): 3; + TRUE: PC+1; + esac; + +DEFINE + FAIL := (atom_p & atom_q); diff --git a/cases_compare/msynth_MB.smv b/cases_compare/msynth_MB.smv new file mode 100644 index 00000000..6374393e --- /dev/null +++ b/cases_compare/msynth_MB.smv @@ -0,0 +1,39 @@ +MODULE main + +VAR + atom_r: boolean; + atom_s: boolean; + PC: 0..3; + +ASSIGN + -- Initial Conditions + init(atom_r):= FALSE; + init(atom_s):= FALSE; + init(PC) := 0; + + -- Transition Relations + next(atom_r) := + case + (PC=0): {TRUE, FALSE}; + (PC=1): FALSE; + (PC=2): FALSE; + TRUE: atom_r; + esac; + + next(atom_s) := + case + (PC=0): {TRUE, FALSE}; + (PC=1): TRUE; + (PC=2): FALSE; + TRUE: atom_s; + esac; + + next(PC) := + case + (PC=3): 3; + TRUE: PC+1; + esac; + + +DEFINE + FAIL := (atom_r & atom_s); diff --git a/cases_compare/msynth_MM.smv b/cases_compare/msynth_MM.smv new file mode 100644 index 00000000..08f8b9fb --- /dev/null +++ b/cases_compare/msynth_MM.smv @@ -0,0 +1,22 @@ +MODULE main + +VAR + pr: boolean; + ps: boolean; + qr: boolean; + qs: boolean; + +ASSIGN + -- Initial Conditions is arbitrary in mapping synth + init(pr) := {TRUE, FALSE}; + init(ps) := {TRUE, FALSE}; + init(qr) := {TRUE, FALSE}; + init(qs) := {TRUE, FALSE}; + + -- Transition Relations + next(pr) := pr; + next(ps) := ps; + next(qr) := qr; + next(qs) := qs; + +DEFINE diff --git a/cases_compare/msynth_f1.hq b/cases_compare/msynth_f1.hq new file mode 100644 index 00000000..1eaccc68 --- /dev/null +++ b/cases_compare/msynth_f1.hq @@ -0,0 +1,22 @@ +exists A. forall B. forall C. exists D. exists E. +G ((pr[A]/\~ps[A] /\ ~qr[A]/\qs[A]) \/ (~pr[A]/\ps[A] /\ qr[A]/\~qs[A])) +/\ +(G ( + ((pr[A]) -> ((atom_p[B]) -> (atom_r[C]))) /\ + ((ps[A]) -> ((atom_p[B]) -> (atom_s[C]))) /\ + ((qr[A]) -> ((atom_q[B]) -> (atom_r[C]))) /\ + ((qs[A]) -> ((atom_q[B]) -> (atom_s[C]))) /\ + (~FAIL[B] /\ ~FAIL[C]) +) +-> +( + G ( ((pr[A]) -> ((atom_p[D]) -> (atom_r[E]))) /\ + ((ps[A]) -> ((atom_p[D]) -> (atom_s[E]))) /\ + ((qr[A]) -> ((atom_q[D]) -> (atom_r[E]))) /\ + ((qs[A]) -> ((atom_q[D]) -> (atom_s[E]))) /\ + (~FAIL[D] /\ ~FAIL[E]) + ) + /\ + G ((atom_p[B]) -> (~atom_p[D])) +) +) diff --git a/cases_compare/msynth_f2.hq b/cases_compare/msynth_f2.hq new file mode 100644 index 00000000..759e163c --- /dev/null +++ b/cases_compare/msynth_f2.hq @@ -0,0 +1,22 @@ +exists A. forall B. forall C. exists D. exists E. +G ((*pr*_A & !*ps*_A & !*qr*_A & *qs*_A) | (!*pr*_A & *ps*_A & *qr*_A & !*qs*_A)) +& +(G ( + ((*pr*_A) -> ((*atom_p*_B) -> (*atom_r*_C))) & + ((*ps*_A) -> ((*atom_p*_B) -> (*atom_s*_C))) & + ((*qr*_A) -> ((*atom_q*_B) -> (*atom_r*_C))) & + ((*qs*_A) -> ((*atom_q*_B) -> (*atom_s*_C))) & + (!*FAIL*_B & !*FAIL*_C) +) +-> +( + G ( ((*pr*_A) -> ((*atom_p*_D) -> (*atom_r*_E))) & + ((*ps*_A) -> ((*atom_p*_D) -> (*atom_s*_E))) & + ((*qr*_A) -> ((*atom_q*_D) -> (*atom_r*_E))) & + ((*qs*_A) -> ((*atom_q*_D) -> (*atom_s*_E))) & + (!*FAIL*_D & !*FAIL*_E) + ) + & + G ((*atom_p*_B) -> (!*atom_p*_D)) +) +) diff --git a/cases_compare/team.smv b/cases_compare/team.smv new file mode 100644 index 00000000..e8e0746e --- /dev/null +++ b/cases_compare/team.smv @@ -0,0 +1,40 @@ +MODULE main +VAR + x-axis: 0..3; + y-axis: 0..3; + action: 0..4; +ASSIGN + -- Initial Conditions + init(x-axis):= 0; + init(y-axis):= 0; + init(action):= {0,1,2,3,4}; + + -- Transition Relations + next(x-axis) := + case + (action=4): x-axis; + (action=0 | action=1): x-axis; + (action=2 & x-axis=0): x-axis; + (action=3 & x-axis=3): x-axis; + (action=2 & x-axis!=0): x-axis - 1; -- action2: move left + (action=3 & x-axis!=3): x-axis + 1; -- action3: move right + TRUE: x-axis; + esac; + + next(y-axis) := + case + (action=4): y-axis; + (action=2 | action=3): y-axis; + (action=0 & y-axis=0): y-axis; + (action=1 & y-axis=3): y-axis; + (action=0 & y-axis!=0): y-axis - 1; -- action 0: move down + (action=1 & y-axis!=3): y-axis + 1; -- action 1: move up + TRUE: y-axis; + esac; + + next(action) := {0, 1, 2, 3}; + +DEFINE + STARTED := !((x-axis=0) & (y-axis=0)); + GOALA := (x-axis=0) & (y-axis=3); + GOALB := (x-axis=3) & (y-axis=0); diff --git a/cases_compare/team_f1.hq b/cases_compare/team_f1.hq new file mode 100644 index 00000000..15546137 --- /dev/null +++ b/cases_compare/team_f1.hq @@ -0,0 +1,2 @@ +exists A. exists B. forall C. +G(GOALA[A] <-> GOALA[C]) \/ G(GOALB[B] <-> GOALB[C]) diff --git a/cases_compare/team_f2.hq b/cases_compare/team_f2.hq new file mode 100644 index 00000000..0871166c --- /dev/null +++ b/cases_compare/team_f2.hq @@ -0,0 +1,2 @@ +exists A. exists B. forall C. +G(*GOALA*_A <-> *GOALA*_C) | G(*GOALB*_B <-> *GOALB*_C) diff --git a/demo/.DS_Store b/demo/.DS_Store index 5008ddfc..272b8b7e 100644 Binary files a/demo/.DS_Store and b/demo/.DS_Store differ diff --git a/demo/cav_running_exp.hq b/demo/cav_running_exp.hq new file mode 100644 index 00000000..12ac7559 --- /dev/null +++ b/demo/cav_running_exp.hq @@ -0,0 +1,2 @@ +forall A. forall B. exists C. +X(high[A] <-> high[C]) /\ G(low[B]<->low[C]) diff --git a/demo/cav_running_exp.smv b/demo/cav_running_exp.smv new file mode 100644 index 00000000..6af2bb0a --- /dev/null +++ b/demo/cav_running_exp.smv @@ -0,0 +1,45 @@ +MODULE main + VAR + low: boolean; + high: boolean; + halt: boolean; + PC: 1..3; + ASSIGN + -- Initial Conditions + init(low) := FALSE; + init(high):= FALSE; + init(halt):= FALSE; + init(PC):=1; + -- Transition Relations + next(low) := + case + (PC=2 & high): TRUE; + TRUE: low; + esac; + + next(high) := + case + (PC=1): {TRUE, FALSE}; + TRUE: high; + esac; + + next(halt) := + case + (PC=3): TRUE; + TRUE: halt; + esac; + + next(PC) := + case + (PC<3): PC+1; + TRUE: PC; + esac; + +DEFINE + s0 := (!low & !high & !halt & (PC=1)); + s1 := (!low & high & !halt & (PC=2)); + s2 := ( low & high & !halt & (PC=3)); + s3 := (!low & !high & !halt & (PC=2)); + s4 := (!low & !high & halt & (PC=3)); + s5 := (!low & !high & halt & (PC=4)); + s6 := (!low & !high & halt & (PC=4)); diff --git a/demo/linearizability.hq b/demo/lin.hq similarity index 100% rename from demo/linearizability.hq rename to demo/lin.hq diff --git a/demo/mini.hq b/demo/mini.hq index 76d5fb14..44eb5121 100644 --- a/demo/mini.hq +++ b/demo/mini.hq @@ -1 +1 @@ -exists A. exists B. F(~a[A] \/ ~a[B]) +exists A. exists B. G(a[A] <-> a[B]) diff --git a/demo/mini.smv b/demo/mini.smv index 1082c029..3704454a 100644 --- a/demo/mini.smv +++ b/demo/mini.smv @@ -1,7 +1,7 @@ MODULE main VAR a: boolean; - PC: 1..3; + PC: 1..2; ASSIGN -- Initial Conditions init(a):= FALSE; @@ -11,15 +11,13 @@ MODULE main next(a) := case (PC=1): {FALSE}; - (PC=2): {FALSE}; - (PC=3): {TRUE, FALSE}; + (PC=2): {TRUE, FALSE}; TRUE: a; esac; next(PC) := case (PC=1): 2; - (PC=2): 3; - (PC=3): 3; + (PC=2): 2; TRUE: PC; esac; diff --git a/demo/mini_try.hq b/demo/mini_try.hq new file mode 100644 index 00000000..5c03f4e6 --- /dev/null +++ b/demo/mini_try.hq @@ -0,0 +1,2 @@ +exists A. exists B. exists C. forall D. +F((a[A] <-> a[B]) /\\ (a[C] <-> a[D])) diff --git a/demo/simple.hq b/demo/simple.hq index 7198db97..edf7c129 100644 --- a/demo/simple.hq +++ b/demo/simple.hq @@ -1 +1 @@ -exists A. exists B. F(~halt[A]/\~halt[B]) +exists A. exists B. G(~halt[A]) diff --git a/demo/simple.smv b/demo/simple.smv index 561b4103..3822a1e5 100644 --- a/demo/simple.smv +++ b/demo/simple.smv @@ -1,9 +1,16 @@ + +-- 1 high := {true, false} +-- 2 low := false +-- 3 if (high): +-- 4 low := true; +-- 5 halt MODULE main VAR high: boolean; low: boolean; - PC: 1..6; + PC: 1..5; halt: boolean; + test: 1..10; ASSIGN -- Initial Conditions, here are dummy values. init(high):= FALSE; @@ -30,11 +37,11 @@ MODULE main (PC=3 & high): 4; -- the if-the-else on line 3 (PC=3 & !high): 5; -- the if-the-else on line 3 (PC=4): 5; - (PC=5): 6; + (PC=5): 5; TRUE: PC; esac; next(halt) := case - (PC=6): TRUE; + (PC=5): TRUE; TRUE: halt; esac; diff --git a/demo/symmetry.hq b/demo/symmetry.hq index 512118e7..fc0dab2d 100644 --- a/demo/symmetry.hq +++ b/demo/symmetry.hq @@ -1,5 +1,5 @@ forall A. exists B. -(G(((p1-TOKEN[A] <-> p2-TOKEN[B]) +G(((p1-TOKEN[A] <-> p2-TOKEN[B]) /\(p2-TOKEN[A] <-> p1-TOKEN[B]) /\(*p1_line[A] = p2_line[B]*) /\(*p2_line[A] = p1_line[B]*)) @@ -10,4 +10,4 @@ forall A. exists B. /\ ((p2-TOKEN[A] <-> p3-TOKEN[B]) /\(p3-TOKEN[A] <-> p2-TOKEN[B]) /\(*p2_line[A] = p3_line[B]*) -/\(*p3_line[A] = p2_line[B]*)))) +/\(*p3_line[A] = p2_line[B]*))) diff --git a/demo/test.hq b/demo/test.hq new file mode 100644 index 00000000..a0114f97 --- /dev/null +++ b/demo/test.hq @@ -0,0 +1,2 @@ +forall A. exists B. +G((p1-TOKEN[A]<->p2-TOKEN[B])/\(p1-TOKEN[A]<->p2-TOKEN[B])) diff --git a/demo/tiny.smv b/demo/tiny.smv new file mode 100644 index 00000000..a45cbc1e --- /dev/null +++ b/demo/tiny.smv @@ -0,0 +1,18 @@ +MODULE main + VAR + a: boolean; + b: boolean; + ASSIGN + -- Initial Conditions + init(a):= FALSE; + init(b):= TRUE; + + -- Transition Relations + next(a) := + case + TRUE: a; + esac; + next(b) := + case + TRUE: b; + esac; diff --git a/dummy.hq b/dummy.hq deleted file mode 100644 index 13171020..00000000 --- a/dummy.hq +++ /dev/null @@ -1 +0,0 @@ -exists A. forall B. F(~halt[A]) diff --git a/exec/genqbf_v5 b/exec/genqbf_v5 new file mode 100755 index 00000000..b7b7d017 Binary files /dev/null and b/exec/genqbf_v5 differ diff --git a/exec/multi_model_parser.py b/exec/model_parser.py similarity index 50% rename from exec/multi_model_parser.py rename to exec/model_parser.py index 85605a8a..1899ff33 100644 --- a/exec/multi_model_parser.py +++ b/exec/model_parser.py @@ -38,12 +38,11 @@ # little helpe methods # ######################### - ## Logical operators ## NOT = "~" AND = "/\\" OR = "\\/" -IMPLIES = " -> " +IMPLIES = "->" IFF = "<->" NEXT = "'" @@ -201,7 +200,8 @@ def conjunct_trans(list): return output + list[len(list)-1] def trans(pre, post): - return "(("+pre+")"+IMPLIES+"("+post+"))" + # return "(("+pre+")"+IMPLIES+"("+post+"))" + return "(~("+pre+")"+OR+"("+post+"))" @@ -226,7 +226,8 @@ def binary_eq(var_l, var_r, num_bits): left = var_l[0] + "_"+str(i) +"_"+var_l[1] right = var_r[0] + "_"+str(i) +"_"+var_r[1] # print(left + " <-> " + right) - result.append("("+left + IFF + right+")") + # result.append("("+left + IFF + right+")") + result.append("((~"+left + OR + right+")/\\(~" + right + OR + left + "))"); return conjunct(result) def binary_assign(var, num, bitblasting_dict): @@ -264,9 +265,9 @@ def main_parse(smv_file_name, bitblasting_dict, parsed_madel_file_I_name, parsed # print("FSM Model info:") # print("\n============ Parse M1 ============") state_variables = list(enc.stateVars) - print("All state variables: ", state_variables) + # print("all state variables: ", state_variables) num_states = fsm.count_states(fsm.reachable_states) - # print("Total number of reachable states: ", num_states) + # print("total number of reachable states: ", num_states) # inputs = list(enc.inputsVars) # print("input variables", inputs) # atomics = list(enc.definedVars) @@ -358,11 +359,11 @@ def main_parse(smv_file_name, bitblasting_dict, parsed_madel_file_I_name, parsed # print(fsm.pick_all_states(fsm.reachable_states)) R_bool = open(parsed_madel_file_R_name, "w") for state in fsm.pick_all_states(fsm.reachable_states): + if (counter!=0): + R_bool.write(AND + "\n") + transitions = [] curr = state.get_str_values() - # print('from') - # print(curr) - # print('to') post_list = [] # list of all next states for post_state in fsm.pick_all_states(fsm.post(state)): post = post_state.get_str_values() @@ -372,13 +373,15 @@ def main_parse(smv_file_name, bitblasting_dict, parsed_madel_file_I_name, parsed R_bool.write(trans(getDictAP(curr, bitblasting_dict), disjunct(post_list))) counter = counter+1 # R_bool.write(conjunct_trans(transitions)) - R_bool.write(AND + "\n") + + # R_bool.write("TRUE"); ##DUMMY + # R_bool.replace(AND + "\n" + TRUE, "") + ## write to R_bool file # R_bool = open("test_R.bool", "w") - R_bool.write("TRUE"); ##DUMMY # R_bool.write(conjunct_trans(all_transitions)) - print("Total number of transtitions: " + str(counter) + "\n") + print("total number of states: " + str(counter)) R_bool.close() @@ -394,7 +397,7 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra for line in Lines: if ("#" not in line): text += line - print("user input formula: "+text) + # print("user input formula: "+text) ## detect the optional flag @@ -410,7 +413,7 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra # get all tid after all the quantifiers tid_list = re.findall("[a-z, A-Z]\.", text) # fornow, genQBF suppots two quantifiers, subsitute all [...] into _... - characters = ["_A", "_B"] + characters = ["_A", "_B", "_C", "_D", "_E", "_F", "_G", "_H", "_I", "_J", "_K", "_L", "_M", "_N", "_O", "_P", "_Q", "_R", "_S", "_T", "_U", "_V", "_W", "_X", "_Y", "_Z"] for i in range(len(tid_list)): tid = tid_list[i].replace(".","") text = re.sub("\["+tid+"\]", characters[i], text) @@ -419,10 +422,21 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra ## make '!' as "~" for genqbf text = text.replace("!","~") + iff_ops = re.findall("\(.*?<->.*?\)", text) + for op in iff_ops: + convert_iff = "" + op = op.replace("(", "") + op = op.replace(")", "") + op = op.replace(" ", "") + vars = op.split("<->") + # print(op) + convert_iff = "((~" + vars[0] + OR + vars[1] + ")/\\" + "(~" + vars[1] + OR + vars[0] + "))"; + # print(convert_iff) + text = text.replace(op, convert_iff) + # print(text) - - + ## parse arith arith_ops = re.findall("\*.*?\*", text) for op in arith_ops: blasted = "" @@ -437,8 +451,6 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra var_l = str(vars[0]).rsplit('_', 1) var_r = str(vars[1]).rsplit('_', 1) - # print(var_l) - # print(var_r) if (var_l[0].isdigit() and var_r[0].isdigit()): print("[ error! arithmetic operation is not correctly constructed. ]") @@ -481,30 +493,51 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra # read quantifier selection, store in QS.hq - QUANTIFIER_1 = text.split(" ", 0) - Quants="" - if (re.findall("exists.*?exists.*?", text)): - Quants="QS=EE" - if(To_Negate_formula): - Quants="QS=AA" - elif (re.findall("forall.*?forall.*?", text)): - Quants="QS=AA" - if(To_Negate_formula): - Quants="QS=EE" - elif (re.findall("exists.*?forall.*?", text)): - Quants="QS=EA" - if(To_Negate_formula): - Quants="QS=AE" - elif (re.findall("forall.*?exists.*?", text)): - Quants="QS=AE" - if(To_Negate_formula): - Quants="QS=EA" - else: - print("[ error: invald format of quantifiers and path variables. ]") - print("correct format {exists, forall} {var1_name}. {exists, forall} {var2_name}. ") + Quants="QS=" - - QS = open("QS.bool", "w") + for char in text: + if (char == 'f'): + # print("forall") + if(To_Negate_formula): + Quants+="E" + else: + Quants+="A" + elif(char == 'e'): + # print("exists") + if(To_Negate_formula): + Quants+="A" + else: + Quants+="E" + elif(char == '('): + break; + + # THH: update, arbitrary quantifiers + # QUANTIFIER_1 = text.split(" ", 0) + # Quants="" + # if (re.findall("exists.*?exists.*?", text)): + # Quants="QS=EE" + # if(To_Negate_formula): + # Quants="QS=AA" + # elif (re.findall("forall.*?forall.*?", text)): + # Quants="QS=AA" + # if(To_Negate_formula): + # Quants="QS=EE" + # elif (re.findall("exists.*?forall.*?", text)): + # Quants="QS=EA" + # if(To_Negate_formula): + # Quants="QS=AE" + # elif (re.findall("forall.*?exists.*?", text)): + # Quants="QS=AE" + # if(To_Negate_formula): + # Quants="QS=EA" + # # elif (re.findall("f")) + # else: + # print("????") + # print("[ error: invald format of quantifiers and path variables. ]") + # print("correct format {exists, forall} {var1_name}. {exists, forall} {var2_name}. ") + + + QS = open(QS_file_name, "w") QS.write(Quants) QS.close() # clea up quantifiers @@ -522,11 +555,15 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra text= "~("+ text + ")" ### finally - print("parsed formula: " + text) + # print("user input formula: "+text) + # print("parsed formula: " + text) # def gen_P(): ## write to R_bool file P_bool = open(translated_formula_file_name , "w") + text = text.replace(' ', '').replace('\t', '').replace('\n', '') + + P_bool.write(text) P_bool.close() # gen_P() @@ -537,11 +574,10 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra - ######################### # Get Arguments # ######################### -# print('???????????????') + M1_smv_file_name = sys.argv[1] M1_parsed_madel_file_I_name = sys.argv[2] M1_parsed_madel_file_R_name = sys.argv[3] @@ -552,18 +588,19 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra fomula_file_name = sys.argv[7] translated_formula_file_name = sys.argv[8] +QS_file_name = sys.argv[9] FLAG = "" -if(len(sys.argv)==10): - FLAG = sys.argv[9] +if(len(sys.argv)==11): + FLAG = sys.argv[10] To_Negate_formula=(FLAG=="" or FLAG=="-bughunt") -######################### -# Main Driver # -######################### -print("\n============ Translate NuSMV Model(s) ============") +################# +# Main # +################# +print("\ntranslating SMV model(s)...") pynusmv.init.init_nusmv() M1_bitblasting_dict = {} main_parse(M1_smv_file_name, M1_bitblasting_dict, M1_parsed_madel_file_I_name, M1_parsed_madel_file_R_name) @@ -574,479 +611,5 @@ def main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, tra main_parse(M2_smv_file_name, M2_bitblasting_dict, M2_parsed_madel_file_I_name, M2_parsed_madel_file_R_name) -print("\n============ Translate HyperLTL Formula ============") +print("\ntranslating HyperLTL formula...") main_formula(fomula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, translated_formula_file_name) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# -# print("\n============ Read SMV Model M1 ============") -# ######################### -# # Model Initialization # -# ######################### -# pynusmv.init.init_nusmv() -# pynusmv.glob.load_from_file(M1_smv_file_name) -# pynusmv.glob.compute_model() -# fsm = pynusmv.glob.prop_database().master.bddFsm -# enc = fsm.bddEnc -# -# print("\n[ success! SMV model M1 accepted. ]") -# -# # ### DEBUG -# # print("====================================") -# # print("FSM Model info:") -# # print("\n============ Parse M1 ============") -# state_variables = list(enc.stateVars) -# print("All state variables: ", state_variables) -# num_states = fsm.count_states(fsm.reachable_states) -# print("Total number of reachable states: ", num_states) -# # inputs = list(enc.inputsVars) -# # print("input variables", inputs) -# # atomics = list(enc.definedVars) -# # print("atomic propositions", atomics) -# -# -# ############################ -# # bit-blasting dictionary # -# ############################ -# M1_bitblasting_dict = {} -# # build bitblasting_dict -# smv_file = open(M1_smv_file_name, 'r') -# lines = smv_file.readlines() -# for line in lines: -# # print(line) -# if(re.findall("\.\.", line)): -# # line = line.split("--") #remove comments -# line = line.split("--", 1)[0].replace("\t","") #remove tail comments -# # print(line.isspace()) -# line = line.strip() -# if (line): # if it's not empty -# key = re.findall(".*:", line)[0].replace(":","") -# num = re.findall("[\d]*;", line)[0].replace(";","") -# # print(line) -# # print(key) -# # print(num) -# value = int(num).bit_length() -# # bitblasting_dict[key] = value -# for var in state_variables: -# if(key.replace(" ", "") in var): -# M1_bitblasting_dict[var] = value -# # TODO: new data type: unsigned word -# elif(re.findall("unsigned word", line)): -# line = line.split("--", 1)[0].replace("\t","") #remove comments -# # print(line) -# if (line): # if it's not empty -# key = re.split("unsigned", line)[0].replace(":","") -# num_bits = re.split("word", line)[1].replace("[","").replace("]","") -# # print(key) -# # print(num_bits) -# for var in state_variables: -# if(key.replace(" ", "") in var): -# M1_bitblasting_dict[var] = int(num_bits.replace("\n","").replace(";","")) -# -# print("Dictionary for bit-blasting variables in M1 (number of bits needed for each): ") -# print(M1_bitblasting_dict) -# -# -# -# -# ################################### -# # Initial Condition Construction # -# ################################### -# def gen_I(): -# init_states = [] -# for state in fsm.pick_all_states(fsm.init): -# init_conditions = [] -# dictionary = state.get_str_values() -# for ap in dictionary: -# value = dictionary[ap] -# # print(value) -# if(isBoolean(value)): -# init_conditions.append(assignBool(ap, dictionary,)) -# elif(isNumber(value)): -# init_conditions.append(assignBin(ap, dictionary, M1_bitblasting_dict)) -# # TODO: new data type: unsigned word -# elif("0ud" in value): -# dictionary[ap] = re.split("_", value)[1] -# init_conditions.append(assignBin(ap, dictionary, M1_bitblasting_dict)) -# else: -# init_conditions.append(assignVal(ap, dictionary, M1_bitblasting_dict)) -# init_states.append(conjunct(init_conditions)) -# ## write to I_bool file -# I_bool = open(M1_parsed_madel_file_I_name, "w") -# I_bool.write(disjunct(init_states)) -# I_bool.close() -# -# -# ##################################### -# # Transition Relation Construction # -# ##################################### -# -# ### try to fix oveflow issue -# def gen_R(): -# counter = 0; -# all_transitions = [] -# R_bool = open(M1_parsed_madel_file_R_name, "w") -# for state in fsm.pick_all_states(fsm.reachable_states): -# transitions = [] -# curr = state.get_str_values() -# # print('from') -# # print(curr) -# # print('to') -# post_list = [] # list of all next states -# for post_state in fsm.pick_all_states(fsm.post(state)): -# post = post_state.get_str_values() -# # print(post) -# post_list.append(getNextDictAP(post, M1_bitblasting_dict)) -# transitions.append(trans(getDictAP(curr, M1_bitblasting_dict), disjunct(post_list))) -# R_bool.write(trans(getDictAP(curr, M1_bitblasting_dict), disjunct(post_list))) -# counter = counter+1 -# # R_bool.write(conjunct_trans(transitions)) -# R_bool.write(AND + "\n") -# -# ## write to R_bool file -# # R_bool = open("test_R.bool", "w") -# R_bool.write("TRUE"); ##DUMMY -# # R_bool.write(conjunct_trans(all_transitions)) -# print("Total number of transtitions: " + str(counter) + "\n") -# R_bool.close() -# -# ## DEBUG -# # print("\n--------------------") -# # print("transition relations") -# # print("--------------------") -# # print(conjunct_trans(all_transitions)) -# -# ### for DEBUG -# # print("initial state") -# # print(fsm.count_states(fsm.init)) -# # for state in fsm.pick_all_states(fsm.init): -# # print(state.get_str_values()) -# # -# # print("all reachable state") -# # print(fsm.count_states(fsm.reachable_states)) -# # for state in fsm.pick_all_states(fsm.reachable_states): -# # print(state.get_str_values()) -# # -# # print("pre-post condition") -# # for state in fsm.pick_all_states(fsm.reachable_states): -# # print("post conditions of ", state.get_str_values() ) -# # for post_cond in fsm.pick_all_states(fsm.post(state)): -# # print(post_cond.get_str_values()) -# -# -# -# -# # generating files for genQBF -# gen_I() -# gen_R() -# print("\n[ success! SMV model M1 parsed into Boolean Expressions: " + M1_parsed_madel_file_I_name + M1_parsed_madel_file_R_name+"]") -# -# -# -# -# -# -# print("\n============ Read SMV Model M2 ============") -# ######################### -# # Model Initialization # -# ######################### -# # RESET PUNUSMV and init it again. -# pynusmv.init.deinit_nusmv() -# pynusmv.init.init_nusmv() -# pynusmv.glob.load_from_file(M2_smv_file_name) -# pynusmv.glob.compute_model() -# fsm = pynusmv.glob.prop_database().master.bddFsm -# enc = fsm.bddEnc -# -# print("\n[ success! SMV model M2 accepted. ]") -# -# ## print("FSM Model info:") -# print("\n============ Parse M2 ============") -# state_variables = list(enc.stateVars) -# print("All state variables: ", state_variables) -# num_states = fsm.count_states(fsm.reachable_states) -# print("Total number of reachable states: ", num_states) -# # inputs = list(enc.inputsVars) -# # print("input variables", inputs) -# # atomics = list(enc.definedVars) -# # print("atomic propositions", atomics) -# -# -# ############################ -# # bit-blasting dictionary # -# ############################ -# M2_bitblasting_dict = {} -# # build bitblasting_dict -# smv_file = open(M2_smv_file_name, 'r') -# lines = smv_file.readlines() -# for line in lines: -# # print(line) -# if(re.findall("\.\.", line)): -# line = line.split("--", 1)[0].replace("\t","") #remove comments -# # print(line) -# line = line.strip() -# if (line): # if it's not empty -# key = re.findall(".*:", line)[0].replace(":","") -# num = re.findall("[\d]*;", line)[0].replace(";","") -# # print(line) -# # print(key) -# # print(num) -# value = int(num).bit_length() -# -# # bitblasting_dict[key] = value -# for var in state_variables: -# if(key.replace(" ", "") in var): -# M2_bitblasting_dict[var] = value -# # TODO: new data type: unsigned word -# elif(re.findall("unsigned word", line)): -# line = line.split("--", 1)[0].replace("\t","") #remove comments -# # print(line) -# if (line): # if it's not empty -# key = re.split("unsigned", line)[0].replace(":","") -# num_bits = re.split("word", line)[1].replace("[","").replace("]","") -# # print(key) -# # print(num_bits) -# for var in state_variables: -# if(key.replace(" ", "") in var): -# M2_bitblasting_dict[var] = int(num_bits.replace("\n","").replace(";","")) -# -# print("Dictionary for bit-blasting variables in M1 (number of bits needed for each): ") -# print(M2_bitblasting_dict) -# -# -# -# -# ################################### -# # Initial Condition Construction # -# ################################### -# def gen_I(): -# init_states = [] -# for state in fsm.pick_all_states(fsm.init): -# init_conditions = [] -# dictionary = state.get_str_values() -# for ap in dictionary: -# value = dictionary[ap] -# # print(value) -# if(isBoolean(value)): -# init_conditions.append(assignBool(ap, dictionary,)) -# elif(isNumber(value)): -# init_conditions.append(assignBin(ap, dictionary, M2_bitblasting_dict)) -# # TODO: new data type: unsigned word -# elif("0ud" in value): -# dictionary[ap] = re.split("_", value)[1] -# init_conditions.append(assignBin(ap, dictionary, M2_bitblasting_dict)) -# else: -# init_conditions.append(assignVal(ap, dictionary, M2_bitblasting_dict)) -# init_states.append(conjunct(init_conditions)) -# ## write to I_bool file -# I_bool = open(M2_parsed_madel_file_I_name, "w") -# I_bool.write(disjunct(init_states)) -# I_bool.close() -# -# -# ##################################### -# # Transition Relation Construction # -# ##################################### -# -# ### try to fix oveflow issue -# def gen_R(): -# counter = 0; -# all_transitions = [] -# R_bool = open(M2_parsed_madel_file_R_name, "w") -# for state in fsm.pick_all_states(fsm.reachable_states): -# transitions = [] -# curr = state.get_str_values() -# # print('from') -# # print(curr) -# # print('to') -# post_list = [] # list of all next states -# for post_state in fsm.pick_all_states(fsm.post(state)): -# post = post_state.get_str_values() -# # print(post) -# post_list.append(getNextDictAP(post, M2_bitblasting_dict)) -# transitions.append(trans(getDictAP(curr, M2_bitblasting_dict), disjunct(post_list))) -# R_bool.write(trans(getDictAP(curr, M2_bitblasting_dict), disjunct(post_list))) -# counter=counter+1 -# # R_bool.write(conjunct_trans(transitions)) -# R_bool.write(AND + "\n") -# -# ## write to R_bool file -# # R_bool = open("test_R.bool", "w") -# R_bool.write("TRUE"); ##DUMMY -# # R_bool.write(conjunct_trans(all_transitions)) -# print("Total number of transtitions: " + str(counter) + "\n") -# R_bool.close() -# -# ## DEBUG -# # print("\n--------------------") -# # print("transition relations") -# # print("--------------------") -# # print(conjunct_trans(all_transitions)) -# -# -# -# -# -# -# -# -# -# -# -# -# ### for DEBUG -# # print("initial state") -# # print(fsm.count_states(fsm.init)) -# # for state in fsm.pick_all_states(fsm.init): -# # print(state.get_str_values()) -# # -# # print("all reachable state") -# # print(fsm.count_states(fsm.reachable_states)) -# # for state in fsm.pick_all_states(fsm.reachable_states): -# # print(state.get_str_values()) -# # -# # print("pre-post condition") -# # for state in fsm.pick_all_states(fsm.reachable_states): -# # print("post conditions of ", state.get_str_values() ) -# # for post_cond in fsm.pick_all_states(fsm.post(state)): -# # print(post_cond.get_str_values()) -# -# -# -# -# # generating files for genQBF -# gen_I() -# gen_R() -# print("\n[ success! SMV model M2 parsed into Boolean Expressions: " + M2_parsed_madel_file_I_name + M2_parsed_madel_file_R_name+"]") -# -# -# - - - - - - - - - - - - - - - - - -# -------------------------------------------------------- - -############### -# (Not using) # -############### -# def remove_spaces(s): -# return s.replace("\n","") -# -# def format_str(s): -# return ((s.replace(".", "_")).replace("!","~")).replace("&","/\\").replace("|","\/") -# -# def format_next_str(s): -# return "(" + format_str(s).replace("next","").replace("(","").replace(")","") + "')" -# -# def format_post(post): -# post_lst = post.split() -# for i in range(len(post_lst)): -# if("next" in post_lst[i]): -# post_lst[i] = format_next_str(post_lst[i]) -# return format_str(' '.join(str(x) for x in post_lst)) -# -# def format_trans(tr): -# if (tr is ''): -# return "" -# if (":" not in tr): -# return format_next_str(tr) -# tr = tr.split(":") -# pre = format_str(tr[0]) -# post = format_post(tr[1]) -# return trans(pre, post) - - - - -### TBD: have grammars like MCHyper or EAHyper? -# def gen_P(): -# print("\n-------------") -# print("property") -# print("-------------") -# -# propDB = pynusmv.glob.prop_database() -# print(propDB.get_prop_at_index(0).expr) -# ltl_string = str(propDB.get_prop_at_index(0).expr) -# -# spec = Node.from_ptr(parse_ltl_spec(ltl_string)) -# #1 -# prop_wff = Wff(parse_ltl_spec(ltl_string)).to_boolean_wff() -# print("NNF LTL formula:" ) -# # print(prop_wff.to_negation_normal_form()) -# prop_str = str(prop_wff.to_negation_normal_form()) -# print(format_str(prop_str)) -# P_bool = open("test_P.bool", "w") -# P_bool.write(format_str(prop_str)) -# # print(model_sus(format_str(prop_str), "_A")) -# #2: negation -# # prop_wff2 = bmcutils.make_negated_nnf_boolean_wff(spec) -# # print("Negatedformula:" ) -# # print(prop_wff2) -# P_bool.close() diff --git a/exec/parser.py b/exec/parser.py new file mode 100755 index 00000000..99e62338 --- /dev/null +++ b/exec/parser.py @@ -0,0 +1,612 @@ +import sys +import pynusmv +import string +import re +import os.path +import os +from os import path +from pynusmv.model import * +from pynusmv.fsm import BddTrans +from pynusmv.fsm import BddEnc +from pynusmv.fsm import BddFsm +from pynusmv.fsm import SymbTable +from pynusmv import prop +from pynusmv.mc import check_ctl_spec +from pynusmv.mc import check_ltl_spec +from pynusmv.bmc import * +from pynusmv import node +from pynusmv import glob +from pynusmv.glob import * +from pynusmv.bmc import glob as bmcGlob +from pynusmv.node import * +from pynusmv.parser import parse_ltl_spec +from pynusmv.bmc.utils import DumpType , BmcModel +from pynusmv.be.expression import Be +from pynusmv.bmc.glob import go_bmc, bmc_exit, master_be_fsm, BmcSupport +from pynusmv.bmc.invarspec import * +from pynusmv.utils import StdioFile +from pynusmv.wff import Wff +from pynusmv.be.encoder import BeEnc +from pynusmv.be.fsm import BeFsm +from pynusmv.prop import PropDb +from pynusmv.bmc import utils as bmcutils +from pynusmv.be.manager import BeManager +from pynusmv.sexp.fsm import * + + + +######################### +# little helpe methods # +######################### + +## Logical operators ## +NOT = "~" +AND = "/\\" +OR = "\\/" +IMPLIES = "->" +IFF = "<->" +NEXT = "'" + + + +################# +# remove stuff # +################# + +## TBD: can we have the name includes dot in genQBF? ## +def remove_dot(s): + s = s.replace(".", "-") + return s +######################################################## + +############################ +# Check type of variables # +############################ + +## value is boolean ## +def isBoolean(key): + return ((key == 'TRUE') or (key == 'FALSE')) + +## if values is digits ## +def isNumber(key): + return key.isdigit() + + +################################### +# Initial Condition Construction # +################################### + +## assign a boolean value to a variable key ## +def assignBool(key, dict): + var_name = remove_dot(key) + if (dict[key] == 'TRUE'): + return var_name + else: + return NOT+var_name + +## assign a digit value to a variable key ## +def assignBin(key, dict, bitblasting_dict): + bits = [] + var_name = remove_dot(key) + + # num_bits = bitblasting_dict[key] + num_bits = bitblasting_dict[key] + binary = format(int(dict[key]), '0'+str(num_bits)+'b').replace("0b", "") + counter = num_bits-1 + for b in binary: + if (b == '1'): + bits.append(var_name+"_"+str(counter)) + else: + bits.append(NOT+var_name+"_"+str(counter)) + counter-=1 + return conjunct(bits) + +## assign a bool variable value to a variable key ## +def assignVal(key, dict): + var_name = remove_dot(key) + return var_name+IFF+dict[key] + + + +##################################### +# Transition Relation Construction # +##################################### + + +# print out all atomic propositions in dict +## All AP values in the current state ## +def getDictAP(dict, bitblasting_dict): + all_ap = [] + for ap in dict: + value = dict[ap] + if(isBoolean(value)): + all_ap.append(assignBool(ap, dict)) + elif(isNumber(value)): + all_ap.append(assignBin(ap, dict, bitblasting_dict)) + else: + name = remove_dot(ap) + all_ap.append(name+IFF+dict[ap]) + return conjunct(all_ap) + +## All AP values in the post state ## +def getNextDictAP(dict, bitblasting_dict): + all_ap = [] + for ap in dict: + value = dict[ap] + if(isBoolean(value)): + all_ap.append(assignNextBool(ap, dict)) + elif(isNumber(value)): + all_ap.append(assignNextBin(ap, dict, bitblasting_dict)) + else: + all_ap.append(assignNextVal(ap, dict)) + return conjunct(all_ap) + +## All AP values in the post state ## +def assignNextBin(key, dict, bitblasting_dict): + bits = [] + name = remove_dot(key) + num_bits = bitblasting_dict[key] + binary = format(int(dict[key]),'0'+str(num_bits)+'b').replace("0b", "") + counter = num_bits-1 + for b in binary: + if (b == '1'): + bits.append(name+"_"+str(counter)+NEXT) + else: + bits.append(NOT+name+"_"+str(counter)+NEXT) + counter-=1 + return conjunct(bits) + +def assignNextBool(key, dict): + var_name = remove_dot(key) + if (dict[key] == 'TRUE'): + return var_name+NEXT + else: + return NOT+var_name+NEXT + +def assignNextVal(key, dict): + var_name = remove_dot(key) + return var_name+NEXT+IFF+dict[key]+NEXT + + +#################################### +# Logical Expression Construction # +#################################### +## conjunct of all element in a list ## +def conjunct(list): + if(len(list) == 1): + return list[0] + output = "" + for i in range(len(list)-1): + output += list[i] + AND + return "(" + output + list[len(list)-1] + ")" + +## disjunct of all element in a list ## +def disjunct(list): + if(len(list) == 1): + return list[0] + output = "" + for i in range(len(list)-1): + output += list[i] + OR + return "(" + output + list[len(list)-1] + ")" + +def conjunct_trans(list): + output = "" + for i in range(len(list)-1): + output += list[i] + AND + "\n" + return output + list[len(list)-1] + +def trans(pre, post): + # return "(("+pre+")"+IMPLIES+"("+post+"))" + return "(~("+pre+")"+OR+"("+post+"))" + + + +############################### +# HLTL Property Construction # +############################### +### TODO +def model_sus(str, sus): + # str = re.sub('\d', '\d', str) + # for ele in str: + # if ele.isdigit(): + # str = str.replace(ele, ele+sus) + return str + +# bin_eq: two variables matches each bit +def binary_eq(var_l, var_r, num_bits): + # num_bits = bitblasting_dict[var_l[0]] + result = [] + for i in range(num_bits): + left = var_l[0] + "_"+str(i) +var_l[1] + right = var_r[0] + "_"+str(i) +var_r[1] + # print(left + " <-> " + right) + # result.append("("+left + IFF + right+")") + result.append("((~"+left + OR + right+")/\\(~" + right + OR + left + "))"); + return conjunct(result) + +def binary_assign(var, num, bitblasting_dict): + num_bits = bitblasting_dict[var[0]] + binary = format(num, '0'+str(num_bits)+'b').replace("0b", "") + result = [] + counter = num_bits-1 + for b in binary: + if (b == '1'): + result.append(var[0] + "_"+str(counter) +var[1]) + else: + result.append(NOT+var[0] + "_"+str(counter) +var[1]) + counter-=1 + return conjunct(result) + +################## +# Error message # +################## +def error_exit(msg): + print("\n(!) HyperQB error: ", msg) + sys.exit() + + + +######################### +# Parse Model # +######################### +def main_model_parse(smv_file_name, bitblasting_dict, parsed_madel_file_I_name, parsed_madel_file_R_name, PARSE_INDEX): + # pynusmv.init.init_nusmv() + pynusmv.glob.load_from_file(smv_file_name) + pynusmv.glob.compute_model() + fsm = pynusmv.glob.prop_database().master.bddFsm + enc = fsm.bddEnc + # ### DEBUG + # print("====================================") + # print("FSM Model info:") + # print("\n============ Parse M1 ============") + # state_variables = list(enc.stateVars) + # print("all state variables: ", state_variables) + # num_states = fsm.count_states(fsm.reachable_states) + # print("total number of reachable states: ", num_states) + # inputs = list(enc.inputsVars) + # print("input variables", inputs) + # atomics = list(enc.definedVars) + # print("atomic propositions", atomics) + + state_variables = list(enc.stateVars) + num_states = fsm.count_states(fsm.reachable_states) + ############################ + # bit-blasting dictionary # + ############################ + # bitblasting_dict = {} + # build bitblasting_dict + smv_file = open(smv_file_name, 'r') + lines = smv_file.readlines() + for line in lines: + # print(line) + if(re.findall("\.\.", line)): + # line = line.split("--") #remove comments + line = line.split("--", 1)[0].replace("\t","") #remove tail comments + # print(line.isspace()) + line = line.strip() + if (line): # if it's not empty + key = re.findall(".*:", line)[0].replace(":","") + num = re.findall("[\d]*;", line)[0].replace(";","") + # print(line) + # print(key) + # print(num) + value = int(num).bit_length() + # bitblasting_dict[key] = value + for var in state_variables: + if(key.replace(" ", "") in var): + bitblasting_dict[var] = value + # TODO: new data type: unsigned word + elif(re.findall("unsigned word", line)): + line = line.split("--", 1)[0].replace("\t","") #remove comments + # print(line) + if (line): # if it's not empty + key = re.split("unsigned", line)[0].replace(":","") + num_bits = re.split("word", line)[1].replace("[","").replace("]","") + # print(key) + # print(num_bits) + for var in state_variables: + if(key.replace(" ", "") in var): + M1_bitblasting_dict[var] = int(num_bits.replace("\n","").replace(";","")) + + # print("Dictionary for bit-blasting: ") + # print(bitblasting_dict) + + + + + ################################### + # Initial Condition Construction # + ################################### + # def gen_I(): + init_states = [] + # print(fsm.pick_all_states(fsm.init)) + for state in fsm.pick_all_states(fsm.init): + init_conditions = [] + dictionary = state.get_str_values() + # print(dictionary) + for ap in dictionary: + value = dictionary[ap] + # print(value) + if(isBoolean(value)): + init_conditions.append(assignBool(ap, dictionary,)) + elif(isNumber(value)): + init_conditions.append(assignBin(ap, dictionary, bitblasting_dict)) + # TODO: new data type: unsigned word + elif("0ud" in value): + dictionary[ap] = re.split("_", value)[1] + init_conditions.append(assignBin(ap, dictionary, bitblasting_dict)) + else: + init_conditions.append(assignVal(ap, dictionary, bitblasting_dict)) + init_states.append(conjunct(init_conditions)) + ## write to I_bool file + I_bool = open(parsed_madel_file_I_name, "w") + I_bool.write(disjunct(init_states)) + I_bool.close() + + + ##################################### + # Transition Relation Construction # + ##################################### + ### try to fix oveflow issue + # def gen_R(): + counter = 0; + all_transitions = [] + # print(fsm.pick_all_states(fsm.reachable_states)) + R_bool = open(parsed_madel_file_R_name, "w") + for state in fsm.pick_all_states(fsm.reachable_states): + if (counter!=0): + R_bool.write(AND + "\n") + + transitions = [] + curr = state.get_str_values() + post_list = [] # list of all next states + for post_state in fsm.pick_all_states(fsm.post(state)): + post = post_state.get_str_values() + # print(post) + post_list.append(getNextDictAP(post, bitblasting_dict)) + transitions.append(trans(getDictAP(curr, bitblasting_dict), disjunct(post_list))) + R_bool.write(trans(getDictAP(curr, bitblasting_dict), disjunct(post_list))) + counter = counter+1 + # R_bool.write(conjunct_trans(transitions)) + + # R_bool.write("TRUE"); ##DUMMY + # R_bool.replace(AND + "\n" + TRUE, "") + + ## write to R_bool file + # R_bool = open("test_R.bool", "w") + # R_bool.write(conjunct_trans(all_transitions)) + # print(str(counter), ", ") + global SUCCESS_OUT + SUCCESS_OUT += "|M" + str(PARSE_INDEX) + "|=" + str(counter) + " " + R_bool.close() + + + +################################## +# HyperLTL Formula Construction # +################################## +def main_formula_construct(formula_file_name, dictionaries, translated_formula_file_name, QS_file_name, To_Negate_formula): + text = "" + file = open(formula_file_name, 'r') + Lines = file.readlines() + for line in Lines: + if ("#" not in line): + text += line + # print(formula_file_name) + + ### read quantifier selection, store in QS.hq + Quants="" + for char in text: + if (char == 'f'): + # print("forall") + if(To_Negate_formula): + Quants+="E" + else: + Quants+="A" + elif(char == 'e'): + # print("exists") + if(To_Negate_formula): + Quants+="A" + else: + Quants+="E" + elif(char == '('): + break; + global PARSE_INDEX + # error check if num of models and quants conform + if (len(Quants) != (PARSE_INDEX)): + # print(len(Quants)) + # print((PARSE_INDEX)) + error_exit("number of models and number of quantifiers must match.") + Quants="QS="+Quants + # print(Quants) + QS = open(QS_file_name, "w") + QS.write(Quants) + QS.close() + + + + + # get all tid after all the quantifiers, subsitute all [...] into _... + tid_list = re.findall("[a-z, A-Z]\.", text) + Mindex = ["_A", "_B", "_C", "_D", "_E", "_F", "_G", "_H", "_I", "_J", "_K", "_L", "_M", "_N", "_O", "_P", "_Q", "_R", "_S", "_T", "_U", "_V", "_W", "_X", "_Y", "_Z"] + for i in range(len(tid_list)): + tid = tid_list[i].replace(".","") + text = re.sub("\["+tid+"\]", Mindex[i], text) + + ## make '!' as "~" for genqbf + text = text.replace("!","~") + + ## parse iff operations + iff_ops = re.findall("\(.*?<->.*?\)", text) + for op in iff_ops: + convert_iff = "" + op = op.replace("(", "") + op = op.replace(")", "") + op = op.replace(" ", "") + vars = op.split("<->") + # print(op) + convert_iff = "((~" + vars[0] + OR + vars[1] + ")/\\" + "(~" + vars[1] + OR + vars[0] + "))"; + # print(convert_iff) + text = text.replace(op, convert_iff) + # print(text) + + text = text.replace(" ","") + + ## parse arithmetic operations + arith_ops = re.findall("\*.*?\*", text) + + + for op in arith_ops: + op = op.replace(" ", "") + op = op.replace("*", "") + if("!="in op): + vars = op.split("!=") + else: + vars = op.split("=") + var_l = str(vars[0]).rsplit('_', 1) + var_r = str(vars[1]).rsplit('_', 1) + + blasted = "" + if (var_l[0].isdigit() and var_r[0].isdigit()): + error_exit("arithmetic operation is not correctly constructed.") + + # case 1: (num)=(var) + elif (var_l[0].isdigit()): + try: + var_r[1] = "_"+var_r[1] + blasted = binary_assign(var_r, int(var_l[0]), DICTIONARIES[int(Mindex.index(var_r[1]))]) + except KeyError as ke: + error_exit("incorrect arithmetic assignment. please check:" + str(ke)) + + # case 2: (var)=(num) + elif (var_r[0].isdigit()): + try: + var_l[1] = "_"+var_l[1] + blasted = binary_assign(var_l, int(var_r[0]), DICTIONARIES[int(Mindex.index(var_l[1]))]) + except KeyError as ke: + error_exit("incorrect arithmetic assignment. please check:" + str(ke)) + + # case 3: (var)=(var) + else: + try: + var_r[1] = "_"+var_r[1] + var_l[1] = "_"+var_l[1] + dict_l=DICTIONARIES[int(Mindex.index(var_l[1]))] + num_bits_left=dict_l[var_l[0]] + dict_r=DICTIONARIES[int(Mindex.index(var_r[1]))] + num_bits_right=dict_r[var_r[0]] + except KeyError as ke: + # print('Key Not Found in Employee Dictionary:', ke) + error_exit("incorrect arithmetic assignment. please check:"+ str(ke)) + + + if(num_bits_left != num_bits_right): + error_exit("arithmetic operation requires two variables with same number of bits in binary representations.") + else: + if("!="in op): + blasted = "~"+binary_eq(var_l, var_r, num_bits_left) + else: + blasted = binary_eq(var_l, var_r, num_bits_left) + + text = text.replace(op, blasted) + + + + + # clea up quantifiers + text = text.replace("forall","") + text = text.replace("exists","") + text = re.sub("[a-z, A-Z]\.", "", text) + # clean up arith operations + text = text.replace("*","") + text = remove_dot(text) + # text = text.replace(" ","") + + if(To_Negate_formula): + text= "~("+ text + ")" + + ### finally, write to P file + P_bool = open(translated_formula_file_name , "w") + text = text.replace(' ', '').replace('\t', '').replace('\n', '') + P_bool.write(text) + P_bool.close() + + + + +################# +# Main # +################# +ARGS=(sys.argv) +# print("ARGS: ", ARGS) +OUTPUT_LOCATION=ARGS[1] +PARSE_INDEX=0 +DICTIONARIES = [] +SUCCESS_OUT="" +smv_file_name="" + +# get the mode first +FLAG="" +if ("-find" in ARGS): + FLAG="-find" +else: + FLAG="-bughunt" + +# print("\nparsing models... ") +for i in range(0, len(ARGS)): + # print(ARGS[i]) + if (".smv" in str(ARGS[i])): + PARSE_INDEX = PARSE_INDEX + 1 + parsed_madel_file_I_name = OUTPUT_LOCATION + '/I_'+ str(PARSE_INDEX)+'.bool' + parsed_madel_file_R_name = OUTPUT_LOCATION + '/R_'+ str(PARSE_INDEX)+'.bool' + + ### if model is repeating + if (smv_file_name == ARGS[i]): + prev_I = OUTPUT_LOCATION + '/I_'+ str(PARSE_INDEX-1)+'.bool' + prev_R = OUTPUT_LOCATION + '/R_'+ str(PARSE_INDEX-1)+'.bool' + os.system("cp" + " " + prev_I + " " + parsed_madel_file_I_name) + os.system("cp" + " " + prev_R + " " + parsed_madel_file_R_name) + DICTIONARIES.append(bitblasting_dict) + else: + ### start a new parsing + smv_file_name = ARGS[i] + pynusmv.init.init_nusmv() + bitblasting_dict = {} + main_model_parse(smv_file_name, bitblasting_dict, parsed_madel_file_I_name, parsed_madel_file_R_name, PARSE_INDEX) + DICTIONARIES.append(bitblasting_dict) + pynusmv.init.deinit_nusmv() # release pynusmv instance for next parsing + + + elif ((".hq" in str(ARGS[i])) and (str(ARGS[i]) != "P.hq")): + # print("\nparsing HyperLTL formula... ") + formula_file_name = ARGS[i] + translated_formula_file_name = OUTPUT_LOCATION + '/P.hq' + QS_file_name = OUTPUT_LOCATION + '/QS' + # print(DICTIONARIES) + # FLAG = sys.argv[4] + To_Negate_formula=(FLAG=="-bughunt") + # print("\ntranslating HyperLTL formula...") + # main_formula_construct(formula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, translated_formula_file_name) + # global DICTIONARIES + main_formula_construct(formula_file_name, DICTIONARIES, translated_formula_file_name, QS_file_name, To_Negate_formula) + break + +print(SUCCESS_OUT) # parsing successfully completed. return. + + + + + +# print("\ntranslating SMV model(s)...") +# pynusmv.init.init_nusmv() +# M1_bitblasting_dict = {} +# main_model_parse(M1_smv_file_name, M1_bitblasting_dict, M1_parsed_madel_file_I_name, M1_parsed_madel_file_R_name) +# # RESET PUNUSMV and init it again. +# pynusmv.init.deinit_nusmv() +# pynusmv.init.init_nusmv() +# M2_bitblasting_dict = {} +# main_model_parse(M2_smv_file_name, M2_bitblasting_dict, M2_parsed_madel_file_I_name, M2_parsed_madel_file_R_name) + + +# print("\ntranslating HyperLTL formula...") +# main_formula_construct(formula_file_name, M1_bitblasting_dict, M2_bitblasting_dict, translated_formula_file_name) diff --git a/hyperqb.sh b/hyperqb.sh new file mode 100755 index 00000000..64902231 --- /dev/null +++ b/hyperqb.sh @@ -0,0 +1,209 @@ +#!/bin/bash +TIMEFORMAT="%Rs" +### Parameters +# SINGLE_PARSER=exec/single_model_parser.py +MULTI_PARSER=exec/model_parser.py +ARBITRARY_PARSER=exec/parser.py + +# HyperQB parameters +# GENQBF=exec/genqbf +# GENQBF=src/cplusplus/genqbf +QUABS=exec/quabs +MAP=exec/util_mapvars +PARSE_BOOL=exec/util_parsebools + +ERROR="(!) HyperQB error" + +### setup output folder +# \THH_TODO: put this back before submission. +# DATE=`date +"%Y-%m-%d@%T"` +DATE="today" + +OUTFOLDER="build_"${DATE}"/" +rm -f -R "build_today/" +mkdir ${OUTFOLDER} + +QCIR_OUT=${OUTFOLDER}HQ.qcir +QUABS_OUT=${OUTFOLDER}HQ.quabs +MAP_OUT1=${OUTFOLDER}_byName.cex +MAP_OUT2=${OUTFOLDER}_byTime.cex +PARSE_OUT=${OUTFOLDER}_formatted.cex +I=${OUTFOLDER}I_1.bool +R=${OUTFOLDER}R_1.bool +J=${OUTFOLDER}I_2.bool +S=${OUTFOLDER}R_2.bool +Q=${OUTFOLDER}I_3.bool +W=${OUTFOLDER}R_3.bool +P=${OUTFOLDER}P.hq +QSFILE=${OUTFOLDER}QS +FORMULA="" + + +# output files +# \THH_TODO: add this before submission +while getopts "proj:" arg; do + case $arg in + n) PROJ=$OPTARG;; + esac +done + + + +## updated Jan.28:merge parse and bmc +echo "" +echo "------( HyperQB START! )------" +## get current location and arguments +PWD=$(pwd) +ALLARG=$@ + + +### fetch model(s) and HP formula +HQFILE='.hq' +COUNTER=1 +declare -a MODELS +for var in "$@" +do + if [[ "${var}" =~ ^[0-9]+$ ]]; then + k=${var} + break + elif [ ! -f "$var" ]; then + echo "error: the file $var does not exist" # check the file is there + exit 1 + fi + + if [[ "${var}" =~ .*"$HQFILE".* ]]; then + FORMULA=${var} + else + MODELS[${COUNTER}]=${var} + fi + let COUNTER++ +done + + +### Check which is used (-bughunt or -find) ### +if echo $* | grep -e "-find" -q +then + FLAG="-find" +elif echo $* | grep -e "-bughunt" -q +then + FLAG="-bughunt" +else + echo "*mode is not specified, default to (-bughunt)" + FLAG="-bughunt" +fi + + +### check which bunded semantics is used ### +if echo $* | grep -e "-pes" -q +then + SEM="PES" + # echo "pessimistic semantics (-pes)" +elif echo $* | grep -e "-opt" -q +then + SEM="OPT" + # echo "optimistic semantics (-opt)" +elif echo $* | grep -e "-hpes" -q +then + SEM="TER_PES" + # echo "halting-pessimistic semantics (-hpes)" +elif echo $* | grep -e "-hopt" -q +then + SEM="TER_OPT" + # echo "halting-optimistic semantics (-opt)" +else + echo "(!) HyperQB error: incorrect semantic input." + echo " please use { -pes | -opt | -hpes | -hopt } semantics of the unrolling from one of the follows:" + echo " (pessimistic / optimistic / halting-pessimistic / halting-optimistic)" + exit 1 +fi + + +### parse the NuSMV models and the given formula ### + +printf "NuSMV models and HyperLTL formula parsing..." +# RUN PARSER on Docker +# echo "(using docker for parsing, parsing could become slower)" +# TIME_PARSE=$(docker run --platform linux/amd64 -v ${PWD}:/mnt tzuhanmsu/hyperqube:latest /bin/bash -c "cd mnt/; TIMEFORMAT="%Rs"; time python3 ${ARBITRARY_PARSER} ${OUTFOLDER} ${MODELS[@]} ${FORMULA} ${P} ${QSFILE} ${FLAG}; ") + +# RUN PARSER locally, if the setup on your local machine is successful +TIME_PARSE=$(time python3 ${ARBITRARY_PARSER} ${OUTFOLDER} ${MODELS[@]} ${FORMULA} ${P} ${QSFILE} ${FLAG}) + + +# if any error happens in parsing, exit HyperQB +if [[ "${TIME_PARSE}" == *"$ERROR"* ]]; then + echo ${TIME_PARSE} + exit 1 +fi + +### check what is the quantifier selection +if [ ! -f "${QSFILE}" ]; then + echo "(!) HyperQB error: no ${QSFILE} exists." + echo "please check the formula see if the quantifers are corretly specified. " + exit 1 +fi +source "${QSFILE}" # instantiate QS + + + + +printf "BMC unrolling with genqbf..................." +QCIR_OUT=${OUTFOLDER}HQ.qcir +n=${#QS} +if [ ${n} -eq 2 ] +then + GENQBF=exec/genqbf # classic 1 quants + TIME_GENQBF=$(time ${GENQBF} -I ${I} -R ${R} -J ${J} -S ${S} -P ${P} -k ${k} -F ${QS} -f qcir -o ${QCIR_OUT} -sem ${SEM} -n --fast) +else + lst_NEW_QUANTS="AAE EAA EEA AEA EEE AEE AAAE EAAE AAAE AAEE EAAEE AAAEEE" #special cases we investigate + + if [[ $lst_NEW_QUANTS =~ (^|[[:space:]])${QS}($|[[:space:]]) ]]; then + GENQBF=exec/genqbf_v5 # updated genqbf + TIME_GENQBF=$(time ${GENQBF} -I ${I} -R ${R} -J ${J} -S ${S} -Q ${Q} -W ${W} -Z ${J} -X ${S} -C ${Q} -V ${W} -P ${P} -k ${k} -F ${QS} -f qcir -o ${QCIR_OUT} -sem ${SEM} -n) + else + ALL_I_R=$(find ${OUTFOLDER}*.bool ) + GENQBF=src/cplusplus/genqbf # with arbitrary quantifiers + # TIME_GENQBF=$(time ${GENQBF} ${k} ${SEM} ${QS} ${ALL_I_R} ${FORMULA}) + time ${GENQBF} ${k} ${SEM} ${QS} ${ALL_I_R} ${P} + fi +fi + + +if [ ! -s ${QCIR_OUT} ]; then + echo "(!) HyperQB error: .qcir file is empty. check if errors are reported." + exit 1 +fi +printf "QBF solving with QuAbS......................" +# time ${QUABS} --partial-assignment ${QCIR_OUT} 2>&1 | tee ${QUABS_OUT} +TIME_QUABS=$(time ${QUABS} --partial-assignment ${QCIR_OUT} > ${QUABS_OUT}) +OUTCOME=$(grep "r " ${QUABS_OUT}) + + + +echo "--------------- Summary of HyperQB ---------------" +echo "| Models: " ${MODELS[*]} +echo "| Formula: " ${FORMULA} +echo "| Quantifiers:" ${QS} +echo "| QBF solving:" ${OUTCOME} +echo "| Semantics: " ${SEM} +echo "| #states: " ${TIME_PARSE} +echo "| Bound k: " ${k} +echo "| Mode: " ${FLAG} +echo "----------------------------------------------------" +echo "------(END HyperQB)------" + +echo "" +echo "" + + + + +# ## TODO: update these two scripts using python +# echo "(Get Nice-formatted Output if witness/counterexample is found)" +# if [ ! -f "$QCIR_OUT" ]; then +# echo "$QCIR_OUT does not exists" +# exit 1 +# echo "no QCIR output" +# fi +# echo "parsing into readable format..." +# ${MAP} ${QCIR_OUT} ${QUABS_OUT} ${MAP_OUT1} ${MAP_OUT2} +# ${PARSE_BOOL} ${MAP_OUT2} ${PARSE_OUT} diff --git a/hyperqube.sh b/hyperqube.sh deleted file mode 100755 index 0f1fb1a6..00000000 --- a/hyperqube.sh +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/sh - -### Parameters -SINGLE_PARSER=exec/single_model_parser.py -MULTI_PARSER=exec/multi_model_parser.py -# HyperQube subTools -GENQBF=exec/genqbf -QUABS=exec/quabs -MAP=exec/util_mapvars -PARSE_BOOL=exec/util_parsebools -# output files -QCIR_OUT=HQ.qcir -QUABS_OUT=HQ.quabs -MAP_OUT1=OUTPUT_byName.cex -MAP_OUT2=OUTPUT_byTime.cex -PARSE_OUT=OUTPUT_formatted.cex - - -## updated Jan.28:merge parse and bmc -echo "\n------( HyperQube START! )------\n" -## get current location -PWD=$(pwd) -## get all arguments -ALLARG=$@ -# echo ${ALLARG} - -## execute python scripts on docker -# docker run -v ${PWD}:/mnt tzuhanmsu/hyperqube:latest /bin/bash -c "cd mnt/; ./parse.sh ${ALLARG}; " - -## clean up previous generated -echo "(clean up previous generated files..)\n" -find . -name "*.bool" -delete -find . -name "*.cex" -delete -find . -name "*.quabs" -delete -find . -name "*.qcir" -delete -find . -name "*.cex" -delete -# make clean - -# if wrong number of arguments -if [ "$#" -ne 4 ] && [ "$#" -ne 5 ] && [ "$#" -ne 6 ] && [ "$#" -ne 7 ]; then - echo "HyperQube error: wrong number of arguments of HyperQube: \n" - echo "- Simgle-model BMC: $0 {model}.smv {formula}.hq" - echo "- Multi-model BMC: $0 {model_1}.smv {model_2}.smv {formula}.hq \n" - echo "\n------(END HyperQube)------\n" - exit 1 -fi - - - -if echo $* | grep -e "-find" -q -then - echo "[ Running with find witness mode ]" - FLAG="-find" -elif echo $* | grep -e "-bughunt" -q -then - echo "[ Running with bug hunting mode ]" - FLAG="-bughunt" -else - echo FLAG="" -fi - -I=I.bool -R=R.bool -J=I.bool -S=R.bool -P=P.bool - -if echo $* | grep -e "-single" -q -then - echo "[ Running with single model mode ]" - MODE=single - echo "perform single model BMC" - NUSMVFILE=$1 - FORMULA=$2 - k=$3 - SEMANTICS=$4 - if [ ! -f "$NUSMVFILE" ]; then - echo "error: $NUSMVFILE does not exist" - exit 1 - fi - if [ ! -f "$FORMULA" ]; then - echo "error: $FORMULA does not exist" - exit 1 - fi - ### using local python build - # python3 ${SINGLE_PARSER} ${NUSMVFILE} ${FORMULA} ${I} ${R} ${P} ${FLAG} - ### using docker - docker run -v ${PWD}:/mnt tzuhanmsu/hyperqube:latest /bin/bash -c "cd mnt/; python3 ${SINGLE_PARSER} ${NUSMVFILE} ${FORMULA} ${I} ${R} ${P} ${FLAG}; " -elif echo $* | grep -e "-multi" -q -then - echo "[ Running with multi model mode ]" - MODE=multi - M1_NUSMVFILE=$1 - M2_NUSMVFILE=$2 - FORMULA=$3 - k=$4 - SEMANTICS=$5 - if [ ! -f "$M1_NUSMVFILE" ]; then - echo "error: $M1_NUSMVFILE does not exist" - exit 1 - fi - if [ ! -f "$M2_NUSMVFILE" ]; then - echo "error: $M2_NUSMVFILE does not exist" - exit 1 - fi - if [ ! -f "$FORMULA" ]; then - echo "error: $FORMULA does not exist" - exit 1 - fi - ### using local python build - # python3 ${MULTI_PARSER} ${M1_NUSMVFILE} ${I} ${R} ${M2_NUSMVFILE} ${J} ${S} ${FORMULA} ${P} ${FLAG} - ### using docker - docker run -v ${PWD}:/mnt tzuhanmsu/hyperqube:latest /bin/bash -c "cd mnt/; python3 ${MULTI_PARSER} ${M1_NUSMVFILE} ${I} ${R} ${M2_NUSMVFILE} ${J} ${S} ${FORMULA} ${P} ${FLAG}; " -else - echo "HyperQube error: please specify mode: -single | -multi \n" - exit 1 -fi - - -## run BMC -## updated Jan.28 -if echo $* | grep -e "-pes" -q -then - SEM="PES" -elif echo $* | grep -e "-opt" -q -then - SEM="OPT" -elif echo $* | grep -e "-hpes" -q -then - SEM="TER_PES" -elif echo $* | grep -e "-hopt" -q -then - SEM="TER_OPT" -else - echo "HyperQube error: incorrect semantic input. " - echo " use { -pes | -opt | -hpes | -hopt } semantics of the unrolling from one of the follows:" - echo " (pessimistic / optimistic / halting-pessimistic / halting-optimistic)" - exit 1 -fi - - -if [ ! -f "QS.bool" ]; then - exit 1 -fi -source QS.bool - -echo "\n--------------- Summary of Model Checking Info ---------------" -echo "| Quantifiers:" ${QS} -echo "| Bound k: " ${k} -echo "| Semantics: " ${SEMANTICS} -if [ "$MODE" = "single" ]; then - echo "| Model: " ${NUSMVFILE} -elif [ "$MODE" = "multi" ]; then - echo "| Models: " ${M1_NUSMVFILE} ", " ${M2_NUSMVFILE} -fi -echo "| HyperLTL formula: " ${FORMULA} -echo "-------------------------------------------------------------- \n\n" - -echo "\n============ Unrolling with genQBF + Solving with QuAbS ============" -echo "generating QBF BMC..." -${GENQBF} -I ${I} -R ${R} -J ${J} -S ${S} -P ${P} -k ${k} -F ${QS} -f qcir -o ${QCIR_OUT} -sem ${SEM} -n --fast - -echo "solving QBF..." -${QUABS} --partial-assignment ${QCIR_OUT} 2>&1 | tee ${QUABS_OUT} -# ${QUABS} --statistics --preprocessing 0 --partial-assignment ${QCIR_OUT} 2>&1 | tee ${QUABS_OUT} - - -echo "\n============ Get Nice-formatted Output if Output is avaialbe ============" - -if [ ! -f "$QCIR_OUT" ]; then - echo "$QCIR_OUT not exists" - exit 1 -fi - -echo "parsing into readable format..." -# # echo "---Counterexample Mapping---" -# javac ${MAP}.java -# java ${MAP}.java ${QCIR_OUT} ${QUABS_OUT} ${MAP_OUT1} ${MAP_OUT2} -${MAP} ${QCIR_OUT} ${QUABS_OUT} ${MAP_OUT1} ${MAP_OUT2} - -# javac ${PARSE_BOOL}.java -# java ${PARSE_BOOL}.java ${MAP_OUT2} ${PARSE_OUT} -${PARSE_BOOL} ${MAP_OUT2} ${PARSE_OUT} -# echo "(under condtruction...)" -# python3 ${PARSE_OUTPUT} ${MAP_OUT2} ${PARSE_OUT} ${k} -# #by time - -echo "\n------(END HyperQube)------\n" diff --git a/run_all.sh b/run_all.sh deleted file mode 100755 index 2852683e..00000000 --- a/run_all.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# This script runs experiments we provided in the tool paper. -# * Requirements * -# Before running, please make sure Docker is installed: (https://docs.docker.com/get-docker/) - -# HyperQube Tool Parameters -HYPERQUBE=./hyperqube.sh -PES='-pes' # default value -OPT='-opt' -SINGLE='-single' -MULTI='-multi' -BUGHUNT="-bughunt" # default value -FIND="-find" - -# M1 Mac use: -# --platform linux/amd64 - -# [DEMO 1: run bakery algorithm with symmetry property] -# ${HYPERQUBE} demo/bakery.smv demo/symmetry.hq 10 ${PES} ${SINGLE} ${BUGHUNT} -${HYPERQUBE} demo/bakery.smv demo/bakery.smv demo/symmetry.hq 10 ${PES} ${MULTI} ${BUGHUNT} - -# [DEMO 2: run SNARK1 with linearizabilty property] -# ${HYPERQUBE} demo/snark_conc.smv demo/snark_seq.smv demo/linearizability.hq 10 ${PES} ${MULTI} ${BUGHUNT} - - -# [Deniability] -# CASEFOLDER=cases_bmc/deniability/ -# ${HYPERQUBE} ${CASEFOLDER}electronic_wallet.smv dummy.hq 15 ${PES} ${SINGLE} ${FIND} diff --git a/run_cases.sh b/run_cases.sh new file mode 100755 index 00000000..80023663 --- /dev/null +++ b/run_cases.sh @@ -0,0 +1,90 @@ +#!/bin/sh +##################################################################################################### +# This script runs ALL experiments (0.1-11.1) we provided in Table 3 of our tool paper submission # +##################################################################################################### + +### HyperQB Tool Parameters +HyperQB=./hyperqb.sh +PES='-pes' # default value +OPT='-opt' +HPES='-hpes' +HOPT='-hopt' +# SINGLE='-single' +# MULTI='-multi' +BUGHUNT="-bughunt" # default value +FIND="-find" + +### Requirements: +### 1. Before running, please make sure Docker is installed: (https://docs.docker.com/get-docker/) +### 2. Apple Chop Macs might need to use: --platform linux/amd64 + +################################################## +# All Experiments in CAV23 tool paper submission # +################################################## +### (1) Previous cases in TACAS21 submission: + +### [0.1-0.3 BAKERY] +# ${HyperQB} cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_formula_S1_3proc.hq 7 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_formula_S2_3proc.hq 12 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_formula_S3_3proc.hq 20 ${OPT} ${FIND} +### [1.1-1.4 BAKERY] +# ${HyperQB} cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_formula_sym1_3proc.hq 10 ${PES} ${BUGHUNT} +# ${HyperQB} cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_3procs.smv cases_bmc/tacas_bakery/bakery_formula_sym2_3proc.hq 10 ${PES} ${BUGHUNT} +# ${HyperQB} cases_bmc/tacas_bakery/bakery_5procs.smv cases_bmc/tacas_bakery/bakery_5procs.smv cases_bmc/tacas_bakery/bakery_formula_sym1_5proc.hq 10 ${PES} ${BUGHUNT} +# ${HyperQB} cases_bmc/tacas_bakery/bakery_5procs.smv cases_bmc/tacas_bakery/bakery_5procs.smv cases_bmc/tacas_bakery/bakery_formula_sym2_5proc.hq 10 ${PES} ${BUGHUNT} + +### [2.1-2.2 SNARK 2.1-2.2] +# ${HyperQB} cases_bmc/tacas_snark/snark1_M1_concurrent.smv cases_bmc/tacas_snark/snark1_M2_sequential.smv cases_bmc/tacas_snark/snark1_formula.hq 18 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_snark/snark2_new_M1_concurrent.smv cases_bmc/tacas_snark/snark2_new_M2_sequential.smv cases_bmc/tacas_snark/snark2_formula.hq 30 ${PES} ${FIND} + +### [3.1-3.2 3-Thread] +# ${HyperQB} cases_bmc/tacas_multi_threaded/NI_incorrect.smv cases_bmc/tacas_multi_threaded/NI_incorrect.smv cases_bmc/tacas_multi_threaded/NI_formula.hq 57 ${HPES} ${BUGHUNT} +# ${HyperQB} cases_bmc/tacas_multi_threaded/NI_correct.smv cases_bmc/tacas_multi_threaded/NI_correct.smv cases_bmc/tacas_multi_threaded/NI_formula.hq 57 ${HOPT} ${BUGHUNT} + +### [4.1-4.2 Non-repudiation Protocol] +# ${HyperQB} cases_bmc/tacas_nrp/NRP_incorrect.smv cases_bmc/tacas_nrp/NRP_incorrect.smv cases_bmc/tacas_nrp/NRP_formula.hq 15 ${HPES} ${BUGHUNT} +# ${HyperQB} cases_bmc/tacas_nrp/NRP_correct.smv cases_bmc/tacas_nrp/NRP_correct.smv cases_bmc/tacas_nrp/NRP_formula.hq 15 ${HOPT} ${BUGHUNT} + +### -------------------------Table 5----------------------------------- +### [5.1 Robotic planning: Shortest Path] +# ${HyperQB} cases_bmc/tacas_robotic/robotic_sp_100.smv cases_bmc/tacas_robotic/robotic_sp_100.smv cases_bmc/tacas_robotic/robotic_sp_formula.hq 20 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_sp_400.smv cases_bmc/tacas_robotic/robotic_sp_400.smv cases_bmc/tacas_robotic/robotic_sp_formula.hq 40 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_sp_1600.smv cases_bmc/tacas_robotic/robotic_sp_1600.smv cases_bmc/tacas_robotic/robotic_sp_formula.hq 80 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_sp_3600.smv cases_bmc/tacas_robotic/robotic_sp_3600.smv cases_bmc/tacas_robotic/robotic_sp_formula.hq 120 ${PES} ${FIND} + +### [5.2 Robotic planning: Initial State Robustness] +# ${HyperQB} cases_bmc/tacas_robotic/robotic_robustness_100.smv cases_bmc/tacas_robotic/robotic_robustness_100.smv cases_bmc/tacas_robotic/robotic_robustness_formula.hq 20 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_robustness_400.smv cases_bmc/tacas_robotic/robotic_robustness_400.smv cases_bmc/tacas_robotic/robotic_robustness_formula.hq 40 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_robustness_1600.smv cases_bmc/tacas_robotic/robotic_robustness_1600.smv cases_bmc/tacas_robotic/robotic_robustness_formula.hq 80 ${PES} ${FIND} +# ${HyperQB} cases_bmc/tacas_robotic/robotic_robustness_3600.smv cases_bmc/tacas_robotic/robotic_robustness_3600.smv cases_bmc/tacas_robotic/robotic_robustness_formula.hq 120 ${PES} ${FIND} + +### --------------------------Table 5---------------------------------- + +### [6.1 Mutation Testing] +# ${HyperQB} cases_bmc/tacas_mutation_testing/mutation_testing.smv cases_bmc/tacas_mutation_testing/mutation_testing.smv cases_bmc/tacas_mutation_testing/mutation_testing.hq 10 ${HOPT} ${FIND} + + +### (2) New cases in CAV23 submission compare to TACAS21 submission: + +### [7.1 Coterm] +# ${HyperQB} cases_bmc/cav_coterm/coterm1.smv cases_bmc/cav_coterm/coterm2.smv cases_bmc/cav_coterm/coterm.hq 102 ${OPT} ${BUGHUNT} + +### [8.1 Deniability] +# ${HyperQB} cases_bmc/cav_deniability/electronic_wallet.smv cases_bmc/cav_deniability/electronic_wallet.smv cases_bmc/cav_deniability/electronic_wallet.smv cases_bmc/cav_deniability/den.hq 20 ${OPT} ${BUGHUNT} + +### [9.1 - 9.3 Intransitive] +### first, it violates classic_OD (PES, SAT) +# ${HyperQB} cases_bmc/cav_shared_buffer/unscheduled_buffer.smv cases_bmc/cav_shared_buffer/unscheduled_buffer.smv cases_bmc/cav_shared_buffer/classic_OD.hq 10 ${PES} ${BUGHUNT} +### however, with scheduler involves, it satisfies intransitive_OD (OPT, UNSAT) +# ${HyperQB} cases_bmc/cav_shared_buffer/scheduled_buffer.smv cases_bmc/cav_shared_buffer/scheduled_buffer.smv cases_bmc/cav_shared_buffer/intrans_OD.hq 10 ${OPT} ${BUGHUNT} +### next, it violates +### same, the scheduler guarantees GMNI +# ${HyperQB} cases_bmc/cav_shared_buffer/scheduled_buffer.smv cases_bmc/cav_shared_buffer/scheduled_buffer.smv cases_bmc/cav_shared_buffer/intrans_GMNI.hq 10 ${PES} ${BUGHUNT} + +### [10.1 - 10.2 TINI and TSNI] +# ${HyperQB} cases_bmc/cav_tini/ni_example.smv cases_bmc/cav_tini/ni_example.smv cases_bmc/cav_tini/tini.hq 10 ${OPT} ${BUGHUNT} +# ${HyperQB} cases_bmc/cav_tsni/ni_example.smv cases_bmc/cav_tsni/ni_example.smv cases_bmc/cav_tsni/tsni.hq 10 ${OPT} ${BUGHUNT} + +### [11.1 K-safety] +### doubleSquare +# ${HyperQB} cases_bmc/cav_ksafety/doubleSquare.smv cases_bmc/cav_ksafety/doubleSquare.smv cases_bmc/cav_ksafety/doubleSquare1.hq 64 ${PES} ${BUGHUNT} diff --git a/run_demos.sh b/run_demos.sh new file mode 100755 index 00000000..e0c2f155 --- /dev/null +++ b/run_demos.sh @@ -0,0 +1,19 @@ +#!/bin/sh +##################################################################################################### +# This script runs ALL experiments (0.1-11.1) we provided in Table 3 of our tool paper submission # +##################################################################################################### + +### Requirements: +### 1. Before running, please make sure Docker is installed: (https://docs.docker.com/get-docker/) +### 2. Apple Chop Macs might need to use: --platform linux/amd64 + +### DEMOS, see README for detailed explination + +### [demo 1: run bakery algorithm with symmetry property] +# ./hyperqb.sh demo/bakery.smv demo/bakery.smv demo/symmetry.hq 10 -pes +### [dem0 2: run SNARK algorithm with linearizability propoerty] +# ./hyperqb.sh demo/SNARK_conc.smv demo/SNARK_seq.smv demo/lin.hq 18 -pes +### [demo 3: run simple_krip with simple_krip_formula] +./hyperqb.sh demo/mini.smv demo/mini.smv demo/mini.hq 3 -pes -find +# ./hyperqb.sh demo/mini.smv demo/mini.smv demo/mini.smv demo/mini.smv demo/mini_try.hq 10 -pes -find +# ./hyperqb.sh demo/mini.smv demo/mini.smv demo/mini.smv demo/mini.hq 3 -pes diff --git a/src/.DS_Store b/src/.DS_Store index 770b1484..e94c27d0 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/cplusplus/.DS_Store b/src/cplusplus/.DS_Store new file mode 100644 index 00000000..1938eb82 Binary files /dev/null and b/src/cplusplus/.DS_Store differ diff --git a/src/cplusplus/build.sh b/src/cplusplus/build.sh new file mode 100755 index 00000000..cca5da4a --- /dev/null +++ b/src/cplusplus/build.sh @@ -0,0 +1,5 @@ +CC=g++ +TARGET=genqbf +SRC=genqbf.cpp + +g++ -std=c++17 -o ${TARGET} ${SRC} diff --git a/src/cplusplus/genqbf b/src/cplusplus/genqbf new file mode 100755 index 00000000..3feb6bf7 Binary files /dev/null and b/src/cplusplus/genqbf differ diff --git a/src/cplusplus/genqbf.cpp b/src/cplusplus/genqbf.cpp new file mode 100755 index 00000000..e4447b07 --- /dev/null +++ b/src/cplusplus/genqbf.cpp @@ -0,0 +1,790 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +using namespace std; + +map, int> gate_map; + + +// // A helper method +void ReplaceStringInPlace(std::string& subject, const std::string& search, + const std::string& replace) { + size_t pos = 0; + while ((pos = subject.find(search, pos)) != std::string::npos) { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } +} + +// //THH updated + +//The function for unrolling initial conditions +string I_unroller(int k, string I_file, string model_type) +{ + bool isAP = false; + string suffix = "_" + model_type + "_[0]"; + string init; + std::ifstream file(I_file); + if (!file.eof()) { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + switch (line[i]) { + case '(': + init += '('; + break; + case ')': + if(isAP){ + init += suffix+")"; + isAP = false; + } + else{ + init += ')'; + } + break; + + case '/': + if (isAP){ + init += suffix+"/"; + isAP = false; + } + else{ + init += "/"; + } + break; + + case '\\': + if (isAP){ + init += suffix+"\\"; + } + else{ + init += "\\"; + } + break; + + default: + isAP = true; + init += line[i]; + break; + } + } + } + file.close(); + } + return init; +} + +string R_unroller(int k, string R_file, string model_type) +{ + bool isAP = false; + string suffix = "_" + model_type + "_[0]"; + // string post_suffix = "_" + model_type + "_[1]"; + + string trans; + std::ifstream file(R_file); + if (!file.eof()) { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + // cout << endl; + // cout << line[i]; + switch (line[i]) { + case '\'': + suffix = "_" + model_type + "_[1]"; + break; + + case '(': + trans += '('; + break; + case ')': + if(isAP){ + trans += suffix+")"; + isAP = false; + } + else{ + trans += ')'; + } + break; + + case '/': + if (isAP){ + trans += suffix+"/"; + isAP = false; + } + else{ + trans += "/"; + } + break; + + case '\\': + if (isAP){ + trans += suffix+"\\"; + } + else{ + trans += "\\"; + } + break; + + default: + isAP = true; + suffix = "_" + model_type + "_[0]"; + trans += line[i]; + break; + } + } + } + file.close(); + } + // cout << trans << endl; + trans = trans + "/\\"; + string output = ""; + output += trans; + + string pre; + string curr; + string next; + for (int i = 0; i < k-1; i++){ + + pre = "["+to_string(i)+"]"; + curr = "["+to_string(i+1)+"]"; + next = "["+to_string(i+2)+"]"; + + ReplaceStringInPlace(trans, curr, next); + ReplaceStringInPlace(trans, pre, curr); + output+=trans; + } + return output; +} + +// Helper method +string attach_time(string expr, int t){ + bool isAP = false; + string model_name; + string suffix = "_[" + to_string(t) +"]"; + string timed_formula; + for (int i = 0 ; i < expr.length() ; i++){ + switch(expr[i]){ + case ('['): + model_name = (expr[i+1]); + // model_name.assign(expr[i+1], expr[i+1]); + // cout << "???" << endl; + // cout << model_name << endl; + timed_formula += "_" + model_name + suffix; + // timed_formula += suffix; + i = i+2; // skip the next 2 charss + break; + default: + timed_formula += expr[i]; + break; + } + } + // cout << suffix << endl; + // cout << timed_formula << endl; + return timed_formula; +} + +// recursive functions +string rec_F(int k, string expr, string sem){ + string unrolled_formula = "("; + // cout << expr; + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(expr, i) + "\\/"; + if (i == (k-1)){ + if (sem == "PES"){ + unrolled_formula += attach_time(expr, i) + ")"; + } + else{ + unrolled_formula += attach_time(expr, i) + ")"; //add a FALSE + } + } + } + return unrolled_formula; +} +string rec_G(int k, string expr, string sem){ + string unrolled_formula = "("; + for (int i = 0 ; i < k-1 ; i++){ + unrolled_formula += attach_time(expr, i) + "/\\"; + if (sem == "PES"){ + unrolled_formula += attach_time(expr, i) + ")"; //add a TRUE + } + else{ + unrolled_formula += attach_time(expr, i) + ")"; + } + } + return unrolled_formula; +} +string rec_U(int k, string phi1, string phi2, string sem){ + string unrolled_formula; + string parans(k, ')'); + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(phi2, i) + "\\/ (" + attach_time(phi1, i) + "/\\"; + if (i == (k-1)){ + if (sem == "PES"){ + unrolled_formula += attach_time(phi2, k) + parans; + } + else{ + unrolled_formula += attach_time(phi1, k) + parans; + } + } + } + return unrolled_formula; +} +string rec_R(int k, string phi1, string phi2, string sem){ + string unrolled_formula; + string parans(k, ')'); + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(phi2, i) + "/\\ (" + attach_time(phi1, i) + "\\/"; + if (i == (k-1)){ + if (sem == "PES"){ + unrolled_formula += attach_time(phi1, k) + parans; + } + else{ + unrolled_formula += attach_time(phi2, k) + parans; + } + } + } + return unrolled_formula; +} + + +// THH: edit here +string formula_unroller(int k, string prop, string sem) +{ + int L_ptr = 0; + int R_ptr = 0; + string phi1; + string phi2; + for (int i = 0; i < prop.length(); i++){ + switch (prop[i]) { + case ('F'): + // cout << "eventually" << endl; + L_ptr = i+1; + R_ptr = prop.find_last_of(')'); + prop = rec_F(k, prop.substr(L_ptr, R_ptr), sem); + // cout << L_ptr << endl; + // cout << rec_F(k, prop.substr(L_ptr, R_ptr)) << endl; + break; + case ('G'): + // cout << "always" << endl; + L_ptr = i+1; + R_ptr = prop.find_last_of(')'); + prop = rec_G(k, prop.substr(L_ptr, R_ptr), sem); + // cout << L_ptr << endl; + // cout << rec_G(k, prop.substr(L_ptr, R_ptr)) << endl; + break; + case ('U'): + phi1 = prop.substr(0, i-1); + phi2 = prop.substr(i+1, prop.length()); + prop = rec_U(k, phi1, phi2, sem); + // cout << "until" << endl; + // cout << phi1 << endl; + // cout << phi2 << endl; + // cout << rec_U(k, phi1, phi2, "-pes"); + break; + case ('R'): + phi1 = prop.substr(0, i-1); + phi2 = prop.substr(i+1, prop.length()); + prop = rec_R(k, phi1, phi2, sem); + // cout << "release" << endl; + // cout << rec_R(k, phi1, phi2, "-pes"); + break; + } + } + // int L_pointer = prop.find('('); + // int R_pointer = prop.find_last_of(')'); + // cout << L_ptr << endl; + // cout << R_ptr << endl; + return prop; +} + + +// Lilly & Tess +void write_quantifiers (vector const &quantifier, map const &var_map, ofstream &my_file) { + int len = quantifier.size(); + char letter = 'A'; + // stringstream ss; + string s; + for (int i=0; i find_last_vars(string formula) { + int index1 = formula.find_last_of("("); + int index2 = formula.substr(0,index1-1).find_last_of("("); + pair index_pair(index2, index1); + return index_pair; +} + +ofstream my_file("build_today/HQ.qcir"); +string write_to_file (map &formula_map,int &count, stack &s, string &prefix, pair &index_pair){ + // stringstream ss; + string ss_string; + string formula; + // ss << to_string(count) << " = "; + ss_string += to_string(count) + " = "; + if (s.top() == "/\\") { // or operator + formula += "or("; + } else if (s.top() == "\\/") { // and operator + formula += "and("; + } + index_pair = find_last_vars(prefix); + formula += prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + "," + prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) + ")"; + + //check if formula already in ss + for (auto x : formula_map ) { + if (x.first==formula){ + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(x.second) + ')'; + return ""; + } + } + formula_map[formula] = count; + + // ss << formula << endl; + + ss_string += formula + "\n"; + + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(count) + ')'; + count++; + + // return ss.str(); + // my_file << ss_string; + return ss_string; +} + +bool isOperator(string c){ + if (c == "/\\" || c == "\\/") { + return true; + } + else { + return false; + } +} + +bool isOperator2(string c){ + if (c == "~") { + return true; + } else { + return false; + } +} + +bool isPar(string c) { + if (c == ")" || c == "(") { + return true; + } else { + return false; + } +} + +int precedence(string c) +{ + if (c == "\\/") // acts as /\ operator since its flipped + return 3; + else if (c == "/\\") //acts as \/ operator since its flipped + return 2; + else if (c == "~") + return 1; + else + return -1; +} + +void InfixToQCIR(stack s, string infix, map &var_map, vector const & quantifier) +{ + int count = 1; + pair index_pair; + map formula_map; + // ofstream my_file; + // stringstream ss; + string ss_string; // THH: let's try using string + + // my_file.open("build_today/HQ-test.qcir"); + // my_file.open("build_today/HQ-cpp.qcir"); + string prefix; + string variable; + + + reverse(infix.begin(), infix.end()); + + string prec; + int index1; + + for (int i = 0; i < infix.length(); i++) { + + // THH: it's the same change them here right? + if (infix[i] == '(') { + infix[i] = ')'; + } + else if (infix[i] == ')') { + infix[i] = '('; + } + + + if (infix[i]=='~') { + //account for negation + prefix += infix[i]; + size_t pos; + while ((pos = prefix.find(")~")) != std::string::npos) { + size_t pos2 = prefix.substr(0,pos).find_last_of("("); + prefix.replace(pos, 2, ")"); + prefix.insert(pos2+1, "-"); + } + // adding variable to prefix + } + else if (infix[i] != '/' && infix[i] != '\\' && infix[i] != '~' && !isPar(infix.substr(i,1))){ + // assign numbers to variables here + variable += infix[i]; + // end of variable due to operator or parentheses + if ((infix.length() >= (i+1) && (infix[i+1] == '/' || infix[i+1] == '\\' || infix[i+1] == '~' || isPar(infix.substr(i+1,1))))||(infix.length()-1) == i) { + // reverse(variable.begin(), variable.end()); + // check if variable already in map or not + if (var_map.find(variable) == var_map.end()) { + prefix = prefix + "(" + std::to_string(count) + ')'; + var_map [variable] = count; + count++; + } else { + prefix = prefix + "(" + to_string(var_map[variable]) + ')'; + } + + + variable = ""; + } + } + else if (infix[i] == '(') { + // string s1 = infix[i]; + string s1(1, infix[i]); + s.push(s1); + } + else if (infix[i] == ')') { + while ((s.top() != "(") && (!s.empty())) { + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + if (s.top() == "(") { + s.pop(); + } + } + else if (isOperator(infix.substr(i,2)) || isOperator2(infix.substr(i,1))) { + // else if (infix[i] == '/' || infix[i] == '\\' || infix[i] == '~') { + // int index1; + if (isOperator(infix.substr(i,2))) { + index1 = 2; + } else { + index1 = 1; + } + if (s.empty()) { + s.push(infix.substr(i,index1)); + } + else { + prec = infix.substr(i,index1); + if (precedence(prec) > precedence(s.top())) { + s.push(prec); + } + else if (precedence(prec) == precedence(s.top())) { + s.push(prec); + } + else { + while ((!s.empty()) && (precedence(prec) < precedence(s.top()))) { + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + s.push(prec); + } + } + } + } + while (!s.empty()) { + // last formula + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + + // quantifiers + write_quantifiers (quantifier, var_map, my_file); + // output and variables + my_file << "output" << prefix << '\n' << endl; + // write formulas to file + // my_file << ss.str() << endl; + my_file << ss_string; + // new map so variables can be sorted by number in qcir file + map new_map; + my_file << "# variables" << endl; + for (auto x: var_map) { + // new_map[x.second] = x.first; + // my_file << "# " << x.first << " " << x.second << endl; + // var_map[x] = reverse(x.first.begin(), x.first.end()); + my_file << "# " << x.second << ": "<< x.first << endl; + // my_file << "# " << x.second << ": "<< (x.first.begin(), x.first.end()) << endl; + // reverse(variable.begin(), variable.end()); + } + // for (auto x: new_map) { + // my_file << "# " << x.first << " " << x.second << endl; + // } + + //// debug + + + my_file.close(); +} + + + +map variable_map; +int global_counter = 1; +string final_QCIR; + +string numerize_vars(string var_name){ + if (!variable_map.count(var_name)){ + variable_map[var_name] = ++global_counter; + } + return to_string(variable_map[var_name]); + // return "error"; +} + +void debug(string s){ + cout << s << endl; +} + +int build_AND(string expr){ + debug("building: " + expr); + string var_name = ""; + string final_QCIR = ""; + final_QCIR += to_string(global_counter) + "=("; + for (int i = 0 ; i < expr.length() ; i++){ + if (expr[i] == ')'){ + final_QCIR += numerize_vars(var_name); + final_QCIR += ')'; + } + else if (expr[i] == '~'){ + final_QCIR += "-"; + } + else if (expr[i] != '/'){ + var_name += expr[i]; + debug(var_name); + } + else{ + final_QCIR += numerize_vars(var_name) + ","; + var_name = ""; + i = i + 1; + } + + } + + // final_QCIR += to_string(global_counter) + "=(" + var_name + ")"; + + debug("final: "+final_QCIR); + global_counter ++; + + return 999; +} + +int build_OR(string expr){ + debug("building: " + expr); + string var_name = ""; + string final_QCIR = ""; + final_QCIR += to_string(global_counter) + "=("; + for (int i = 0 ; i < expr.length() ; i++){ + if (expr[i] == ')'){ + final_QCIR += numerize_vars(var_name); + final_QCIR += ')'; + } + else if (expr[i] == '~'){ + final_QCIR += "-"; + } + else if (expr[i] != '\\'){ + var_name += expr[i]; + debug(var_name); + } + else{ + final_QCIR += numerize_vars(var_name) + ","; + var_name = ""; + i = i + 1; + } + + } + + // final_QCIR += to_string(global_counter) + "=(" + var_name + ")"; + + debug("final: "+final_QCIR); + global_counter ++; + + return 999; +} + +// A binary version +// int BoolToQCIR(string formula, int L_ptr, int R_ptr ){ +int BoolToQCIR(string formula, int L_ptr, int R_ptr){ + + string L_expr; + string R_expr; + // int L_ptr = formula[0]; + // int R_ptr = formula[formula.length()]; + + if(formula[L_ptr+1] == '(' && formula[R_ptr-1] == ')'){ + BoolToQCIR(formula, L_ptr+1, R_ptr-1); + } + else{ + // for (int k = L_ptr; k < formula.length(); k++){ + // cout << "[last layer, assigning numbers]" << endl; + // if (k == formula.find(")")){ // + if (formula[L_ptr+2] == '/'){ + cout << "build AND: " << endl; + build_AND(formula.substr(1, R_ptr-1)); // also remove the parans + } + else if (formula.find("\\")){ + build_OR(formula.substr(1, R_ptr-1)); + + } + // } + // } + } + for (auto x: variable_map) { + cout << "# " << x.second << ": "<< x.first << endl; + } + return 1; + +} + +// string test_formula = "((a/\\b)\\/(c/\\d))"; + +//Min genqbf function to run +int main(int argc, char **argv) +{ + // clock_t start, end; + // double time_taken; + vector quantifier; + bool test = false; + + // cout << "You have entered " << argc << " arguments:" + // << "\n"; + // for (int i = 0; i < argc; ++i) + // cout << argv[i] << "\n"; + int k = atoi(argv[1]); + // cout << "???" << k << "\n"; + // exit(1); + + vector inputs; + string final_check; + string variable; + int counter = 2; + string model_names[26] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + string SEM = (argv[2]); + string QS = (argv[3]); + string infix_formulas; + string FORMULA; + + + + for (int i = 4; i < argc; i+=2) + { + if (i == (argc-1)){ + // last argument is formula + FORMULA=argv[i]; + break; + } + else{ + string I_file = argv[i]; + string R_file = argv[i+1]; + string unrolled_I = I_unroller(k, I_file, model_names[i/2]); + string unrolled_R = R_unroller(k, R_file, model_names[i/2]); + infix_formulas = infix_formulas + "(" +unrolled_I + ")" + "/\\" + "(" + unrolled_R + ")"; + } + } + + + + + + // FORMULA + // int last_dot = prop.find_last_of('.'); + // string quants = prop.substr(0, last_dot+1); + // regex re("([A-Z].)"); + // + // for (int i = 0 ; i < quants.length() ; i++){ + // if (quants[i] == 'e'){ // 'exists' + // quantifier.push_back('E'); + // } + // if (quants[i] == 'f'){ // 'forall' + // quantifier.push_back('A'); + // } + // } + + + // string semantic = inputs[inputs.size() - 3]; + // string QS = inputs[inputs.size() - 2]; + // string prop = inputs[inputs.size() - 1]; + + + // FORMULA !!!! + string prop; + std::ifstream file(FORMULA); + while (!file.eof()) + { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + prop += line[i]; + } + } + } + int last_dot = prop.find_last_of('.'); + prop = prop.substr(last_dot+1, prop.length()); + string unrolled_formula = formula_unroller(k+1, prop, SEM); + unrolled_formula = "(" + unrolled_formula + ")"; // warning: here has a hidden + infix_formulas = infix_formulas+unrolled_formula; + + + // ofstream bool_output("build_today/output.txt"); + // bool_output << infix_formulas; + + + // GATE BUILDING + map var_map; + stack stack; + string line, input_file; + string QCIR_out = "build_today/HQ.qcir"; + InfixToQCIR(stack, infix_formulas , var_map, quantifier); + + + // cout << infix_formulas << endl; + // exit(1); + + return 0; +} diff --git a/src/cplusplus/temp/.DS_Store b/src/cplusplus/temp/.DS_Store new file mode 100644 index 00000000..9fa52eda Binary files /dev/null and b/src/cplusplus/temp/.DS_Store differ diff --git a/src/cplusplus/temp/genqbf-V0.7.cpp b/src/cplusplus/temp/genqbf-V0.7.cpp new file mode 100644 index 00000000..8f5223b8 --- /dev/null +++ b/src/cplusplus/temp/genqbf-V0.7.cpp @@ -0,0 +1,2456 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +//The function for finding indexes of a text +vector substrPosition(string str, string sub_str) { + bool flag = false; + vector< int > arr; + for (int i = 0; i < str.length(); i++) { + if (str.substr(i, sub_str.length()) == sub_str) { + arr.push_back(i); + flag = true; + } + } + return arr; +} + +//The function that removes "~~" in our text +string negation_remover(string input){ + for (int i = 0; i existing in the output by the equal logical relations +string if_replacer(string input){ + string sub_str; + int distance; + sub_str = "->"; + vector positions_if = substrPosition(input, sub_str); + sub_str = "("; + vector positions_p1 = substrPosition(input, sub_str); + sub_str = ")"; + vector positions_p2 = substrPosition(input, sub_str); + int position=0; + int added = 0; + for (int i = 0; i0){ + position = positions_p1[j]; + distance = positions_if[i]-positions_p1[j]; + } else { + break; + } + } + input.insert(positions_if[i]+added, "\\/"); + input.insert(position+1+added, "~"); + added += 3; + } + for (int i = 0; i existing in the output by the equal logical relations +string iff_replacer(string input){ + string sub_str; + int distance; + sub_str = "<->"; + vector positions_iff = substrPosition(input, sub_str); + sub_str = "("; + vector positions_p1 = substrPosition(input, sub_str); + sub_str = ")"; + vector positions_p2 = substrPosition(input, sub_str); + int position1; + int position2; + int added; + string part1; + string part2; + string added_part; + added = 0; + for (int i = 0; i0){ + position1 = positions_p1[j]; + distance = positions_iff[i]-positions_p1[j]; + } else { + break; + } + } + distance = input.length(); + for (int j = 0; j0){ + position2 = positions_p2[j]; + break; + } + } + for (int j = position1+added+1; j added_strs_A, vector added_strs_B, string status){ + string final_return; + string new_A = modelA; + string new_B = modelB; + string paranthesis; + string P_nextgen; + string sub_str; + int counter; + vector positions; + for (int t = 0; t < k+1; t++){ + int added_l = end(added_strs_A[t])-begin(added_strs_A[t]); + P_nextgen = ""; + if (t added_strs_A, vector added_strs_B, string status){ + + string final_return; + + string new_A = modelA; + string new_B = modelB; + string paranthesis; + + string P_nextgen; + string sub_str; + int counter; + vector positions; + + + for (int t = 0; t < k+1; t++){ + + + int added_l = end(added_strs_A[t])-begin(added_strs_A[t]); + P_nextgen = ""; + + + if (t added_strs_A, vector added_strs_B){ + + + string P_nextgen = ""; + string end_sign = ""; + string P_reference; + string final_P; + string sub_str; + + + + + + vector positions; + int counter; + + + + + + + + + for (int i = position_G+1; i added_strs_A, vector added_strs_B){ + + + + string P_nextgen = ""; + string end_sign = ""; + string P_reference; + string final_P; + string sub_str; + + + + vector positions; + int counter; + + + + + + + + + for (int i = position_F+1; i> added; + I += added; + + + } + + + + + + + + + for (int i = 0; i < bit; i++) { + + string s = to_string(i); + + if (i == 0) { + + ad_I += "("; + + } + + ad_I += "~n_"; + ad_I += s; + + if (i != bit-1) { + + ad_I += "/\\"; + + } + + + if (i == bit-1) { + + ad_I += ")/\\"; + + } + + } + +// mini_I >> I; + + + char* I_str = &I[0]; + + + + string added_str; + added_str+="_"; + added_str+=model_type; + added_str+="_[0]"; + + + +// if (model_type == "I"){ + + +// added_str = "_A_[0]"; + +// } else if (model_type == "J") { + + +// added_str = "_B_[0]"; + + + +// } + + + + + + + + + int added_l = added_str.length(); + + string new_I = I_str; + + + +// int len = new_I.length(); + + + string sub_str = "/\\"; + + vector positions = substrPosition(new_I, sub_str); + + + int counter = 0; + + for (int i = 0; i> added; + R += added; + + + } + + +char* R_str = &R[0]; +string new_R = R_str; + + + + vector added_strs; + + + string A; + A+="_"; + A+=model_type; + A+="_[]"; + +// if (model_type == "R"){ + + +// A = "_A_[]"; + +// } else if (model_type == "S") { + + + // A = "_B_[]"; + + + +// } + + + string new_A; + + for (int i = 0; i positions; + int counter; + int i; + + + + sub_str = ")"; + + positions = substrPosition(new_R, sub_str); + + + counter = 0; + + + + + for (int t = 0; t> added; + P += added; + } +char* P_str = &P[0]; +string new_P = P_str; + + vector added_strs_A; + vector added_strs_B; + + string A = "_A_[]"; + + string B = "_B_[]"; + + string new_A; + + string new_B; + + + + for (int i = 0; i positions_all; + + + + + + vector positions_G_1; + + string sub_str = "G("; + + positions_G_1 = substrPosition(new_P, sub_str); + + if (positions_G_1.size()>0){ + + positions_all.insert(positions_all.begin(), positions_G_1.begin(), positions_G_1.end()); + + } + + + vector positions_G_2; + + sub_str = "G~"; + + positions_G_2 = substrPosition(new_P, sub_str); + + + if (positions_G_2.size()>0){ + + positions_all.insert(positions_all.begin(), positions_G_2.begin(), positions_G_2.end()); + + } + + + + vector positions_F_1; + + sub_str = "F("; + + positions_F_1 = substrPosition(new_P, sub_str); + + + if (positions_F_1.size()>0){ + + positions_all.insert(positions_all.begin(), positions_F_1.begin(), positions_F_1.end()); + + } + + + vector positions_F_2; + + sub_str = "F~"; + + positions_F_2 = substrPosition(new_P, sub_str); + + + if (positions_F_2.size()>0){ + + positions_all.insert(positions_all.begin(), positions_F_2.begin(), positions_F_2.end()); + + } + + + vector positions_U_1; + + sub_str = "]U"; + + positions_U_1 = substrPosition(new_P, sub_str); + + if (positions_U_1.size()>0){ + + positions_all.insert(positions_all.begin(), positions_U_1.begin(), positions_U_1.end()); + + } + + + vector positions_U_2; + + sub_str = ")U"; + + positions_U_2 = substrPosition(new_P, sub_str); + + + if (positions_U_2.size()>0){ + + positions_all.insert(positions_all.begin(), positions_U_2.begin(), positions_U_2.end()); + + } + + + vector positions_R_1; + + sub_str = "]R"; + + positions_R_1 = substrPosition(new_P, sub_str); + + if (positions_R_1.size()>0){ + + positions_all.insert(positions_all.begin(), positions_R_1.begin(), positions_R_1.end()); + + } + + + vector positions_R_2; + + sub_str = ")R"; + + positions_R_2 = substrPosition(new_P, sub_str); + + + if (positions_R_2.size()>0){ + + positions_all.insert(positions_all.begin(), positions_R_2.begin(), positions_R_2.end()); + + } + + + string final_P; + vector positions; + + + + if (positions_all.size()>0){ + + + sort(positions_all.begin(), positions_all.end()); + + //cout << "Sorted \n"; + for (auto x : positions_all){ + + + + if (count(positions_G_1.begin(), positions_G_1.end(), x)) { + + final_P += G_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + else if (count(positions_G_2.begin(), positions_G_2.end(), x)) { + + final_P += G_unroller(k, x, new_P, added_strs_A, added_strs_B); + + } + else if (count(positions_F_1.begin(), positions_F_1.end(), x)) { + + final_P += F_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + + else if (count(positions_F_2.begin(), positions_F_2.end(), x)) { + + final_P += F_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + + else if (count(positions_U_1.begin(), positions_U_1.end(), x)) { + + + sub_str = "("; + + positions = substrPosition(new_P, sub_str); + + + + int minimum = new_P.length(); + int positions_1; + + for (int i=0; i0 && (x - positions[i])0 && (positions[i]-x)0 && (x - positions[i])0 && (positions[i]-x)0 && (x - positions[i])0 && (positions[i]-x)0 && (x - positions[i])0 && (positions[i]-x) inputs; + string final_check; + string variable; + int counter = 2; + string model_types[26] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; + ofstream outdata; + while(final_check!="hq"){ + final_check = ""; + variable = argv[counter]; + inputs.push_back(variable); + final_check += variable[variable.length()-2]; + final_check += variable[variable.length()-1]; + counter++; + } + outdata.open("output.txt"); + for (int i=0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +using namespace std; + +map, int> gate_map; + +//The function for unrolling initial conditions +string I_unroller(int k, string I_file, string model_type) +{ + bool isAP = false; + string suffix = "_" + model_type + "_[0]"; + string init; + std::ifstream file(I_file); + if (!file.eof()) { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + switch (line[i]) { + case '(': + init += '('; + break; + case ')': + if(isAP){ + init += suffix+")"; + isAP = false; + } + else{ + init += ')'; + } + break; + + case '/': + if (isAP){ + init += suffix+"/"; + isAP = false; + } + else{ + init += "/"; + } + break; + + case '\\': + if (isAP){ + init += suffix+"\\"; + } + else{ + init += "\\"; + } + break; + + default: + isAP = true; + init += line[i]; + break; + } + } + } + file.close(); + } + return init; +} + +// // A helper method +void ReplaceStringInPlace(std::string& subject, const std::string& search, + const std::string& replace) { + size_t pos = 0; + while ((pos = subject.find(search, pos)) != std::string::npos) { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } +} + +// //THH updated +string R_unroller(int k, string R_file, string model_type) +{ + bool isAP = false; + string suffix = "_" + model_type + "_[0]"; + // string post_suffix = "_" + model_type + "_[1]"; + + string trans; + std::ifstream file(R_file); + if (!file.eof()) { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + // cout << endl; + // cout << line[i]; + switch (line[i]) { + case '\'': + suffix = "_" + model_type + "_[1]"; + break; + + case '(': + trans += '('; + break; + case ')': + if(isAP){ + trans += suffix+")"; + isAP = false; + } + else{ + trans += ')'; + } + break; + + case '/': + if (isAP){ + trans += suffix+"/"; + isAP = false; + } + else{ + trans += "/"; + } + break; + + case '\\': + if (isAP){ + trans += suffix+"\\"; + } + else{ + trans += "\\"; + } + break; + + default: + isAP = true; + suffix = "_" + model_type + "_[0]"; + trans += line[i]; + break; + } + } + } + file.close(); + } + // cout << trans << endl; + trans = trans + "/\\"; + string output = ""; + output += trans; + + string pre; + string curr; + string next; + for (int i = 0; i < k-1; i++){ + + pre = "["+to_string(i)+"]"; + curr = "["+to_string(i+1)+"]"; + next = "["+to_string(i+2)+"]"; + + ReplaceStringInPlace(trans, curr, next); + ReplaceStringInPlace(trans, pre, curr); + output+=trans; + } + return output; +} + +// Helper method +string attach_time(string expr, int t){ + bool isAP = false; + string model_name; + string suffix = "_[" + to_string(t) +"]"; + string timed_formula; + for (int i = 0 ; i < expr.length() ; i++){ + switch(expr[i]){ + case ('['): + model_name = (expr[i+1]); + // model_name.assign(expr[i+1], expr[i+1]); + // cout << "???" << endl; + // cout << model_name << endl; + timed_formula += "_" + model_name + suffix; + // timed_formula += suffix; + i = i+2; // skip the next 2 charss + break; + default: + timed_formula += expr[i]; + break; + } + } + // cout << suffix << endl; + // cout << timed_formula << endl; + return timed_formula; +} + +// recursive functions +string rec_F(int k, string expr, string sem){ + string unrolled_formula = "("; + // cout << expr; + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(expr, i) + "\\/"; + if (i == (k-1)){ + if (sem == "-pes"){ + unrolled_formula += attach_time(expr, i) + ")"; + } + else{ + unrolled_formula += attach_time(expr, i) + ")"; //add a FALSE + } + } + } + return unrolled_formula; +} +string rec_G(int k, string expr, string sem){ + string unrolled_formula = "("; + for (int i = 0 ; i < k-1 ; i++){ + unrolled_formula += attach_time(expr, i) + "/\\"; + if (sem == "-pes"){ + unrolled_formula += attach_time(expr, i) + ")"; //add a TRUE + } + else{ + unrolled_formula += attach_time(expr, i) + ")"; + } + } + return unrolled_formula; +} +string rec_U(int k, string phi1, string phi2, string sem){ + string unrolled_formula; + string parans(k, ')'); + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(phi2, i) + "\\/ (" + attach_time(phi1, i) + "/\\"; + if (i == (k-1)){ + if (sem == "-pes"){ + unrolled_formula += attach_time(phi2, k) + parans; + } + else{ + unrolled_formula += attach_time(phi1, k) + parans; + } + } + } + return unrolled_formula; +} +string rec_R(int k, string phi1, string phi2, string sem){ + string unrolled_formula; + string parans(k, ')'); + for (int i = 0 ; i < k ; i++){ + unrolled_formula += attach_time(phi2, i) + "/\\ (" + attach_time(phi1, i) + "\\/"; + if (i == (k-1)){ + if (sem == "-pes"){ + unrolled_formula += attach_time(phi1, k) + parans; + } + else{ + unrolled_formula += attach_time(phi2, k) + parans; + } + } + } + return unrolled_formula; +} + + +// THH: edit here +string formula_unroller(int k, string prop, string sem) +{ + int L_ptr = 0; + int R_ptr = 0; + string phi1; + string phi2; + for (int i = 0; i < prop.length(); i++){ + switch (prop[i]) { + case ('F'): + // cout << "eventually" << endl; + L_ptr = i+1; + R_ptr = prop.find_last_of(')'); + prop = rec_F(k, prop.substr(L_ptr, R_ptr), sem); + // cout << L_ptr << endl; + // cout << rec_F(k, prop.substr(L_ptr, R_ptr)) << endl; + break; + case ('G'): + // cout << "always" << endl; + L_ptr = i+1; + R_ptr = prop.find_last_of(')'); + prop = rec_G(k, prop.substr(L_ptr, R_ptr), sem); + // cout << L_ptr << endl; + // cout << rec_G(k, prop.substr(L_ptr, R_ptr)) << endl; + break; + case ('U'): + phi1 = prop.substr(0, i-1); + phi2 = prop.substr(i+1, prop.length()); + prop = rec_U(k, phi1, phi2, sem); + // cout << "until" << endl; + // cout << phi1 << endl; + // cout << phi2 << endl; + // cout << rec_U(k, phi1, phi2, "-pes"); + break; + case ('R'): + phi1 = prop.substr(0, i-1); + phi2 = prop.substr(i+1, prop.length()); + prop = rec_R(k, phi1, phi2, sem); + // cout << "release" << endl; + // cout << rec_R(k, phi1, phi2, "-pes"); + break; + } + } + // int L_pointer = prop.find('('); + // int R_pointer = prop.find_last_of(')'); + // cout << L_ptr << endl; + // cout << R_ptr << endl; + return prop; +} + + + +// Lilly & Tess +void write_quantifiers (vector const &quantifier, map const &var_map, ofstream &my_file) { + int len = quantifier.size(); + char letter = 'A'; + // stringstream ss; + string s; + for (int i=0; i find_last_vars(string formula) { + int index1 = formula.find_last_of("("); + int index2 = formula.substr(0,index1-1).find_last_of("("); + pair index_pair(index2, index1); + return index_pair; +} + +ofstream my_file("build_today/HQ-cpp.qcir"); +string write_to_file (map &formula_map,int &count, stack &s, string &prefix, pair &index_pair){ + // stringstream ss; + string ss_string; + string formula; + // ss << to_string(count) << " = "; + ss_string += to_string(count) + " = "; + if (s.top() == "/\\") { // or operator + formula += "or("; + } else if (s.top() == "\\/") { // and operator + formula += "and("; + } + index_pair = find_last_vars(prefix); + formula += prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + "," + prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) + ")"; + + //check if formula already in ss + for (auto x : formula_map ) { + if (x.first==formula){ + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(x.second) + ')'; + return ""; + } + } + formula_map[formula] = count; + + // ss << formula << endl; + + ss_string += formula + "\n"; + + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(count) + ')'; + count++; + + // return ss.str(); + // my_file << ss_string; + return ss_string; +} + +bool isOperator(string c){ + if (c == "/\\" || c == "\\/") { + return true; + } + else { + return false; + } +} + +bool isOperator2(string c){ + if (c == "~") { + return true; + } else { + return false; + } +} + +bool isPar(string c) { + if (c == ")" || c == "(") { + return true; + } else { + return false; + } +} + +int precedence(string c) +{ + if (c == "\\/") // acts as /\ operator since its flipped + return 3; + else if (c == "/\\") //acts as \/ operator since its flipped + return 2; + else if (c == "~") + return 1; + else + return -1; +} + + +void InfixToQCIR(stack s, string infix, map &var_map, vector const & quantifier) +{ + int count = 1; + pair index_pair; + map formula_map; + // ofstream my_file; + // stringstream ss; + string ss_string; // THH: let's try using string + + // my_file.open("build_today/HQ-test.qcir"); + // my_file.open("build_today/HQ-cpp.qcir"); + string prefix; + string variable; + + + reverse(infix.begin(), infix.end()); + + string prec; + int index1; + + for (int i = 0; i < infix.length(); i++) { + + // THH: it's the same change them here right? + if (infix[i] == '(') { + infix[i] = ')'; + } + else if (infix[i] == ')') { + infix[i] = '('; + } + + + if (infix[i]=='~') { + //account for negation + prefix += infix[i]; + size_t pos; + while ((pos = prefix.find(")~")) != std::string::npos) { + size_t pos2 = prefix.substr(0,pos).find_last_of("("); + prefix.replace(pos, 2, ")"); + prefix.insert(pos2+1, "-"); + } + // adding variable to prefix + } + else if (infix[i] != '/' && infix[i] != '\\' && infix[i] != '~' && !isPar(infix.substr(i,1))){ + // assign numbers to variables here + variable += infix[i]; + // end of variable due to operator or parentheses + if ((infix.length() >= (i+1) && (infix[i+1] == '/' || infix[i+1] == '\\' || infix[i+1] == '~' || isPar(infix.substr(i+1,1))))||(infix.length()-1) == i) { + // reverse(variable.begin(), variable.end()); + // check if variable already in map or not + if (var_map.find(variable) == var_map.end()) { + prefix = prefix + "(" + std::to_string(count) + ')'; + var_map [variable] = count; + count++; + } else { + prefix = prefix + "(" + to_string(var_map[variable]) + ')'; + } + + + variable = ""; + } + } + else if (infix[i] == '(') { + // string s1 = infix[i]; + string s1(1, infix[i]); + s.push(s1); + } + else if (infix[i] == ')') { + while ((s.top() != "(") && (!s.empty())) { + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + if (s.top() == "(") { + s.pop(); + } + } + else if (isOperator(infix.substr(i,2)) || isOperator2(infix.substr(i,1))) { + // else if (infix[i] == '/' || infix[i] == '\\' || infix[i] == '~') { + // int index1; + if (isOperator(infix.substr(i,2))) { + index1 = 2; + } else { + index1 = 1; + } + if (s.empty()) { + s.push(infix.substr(i,index1)); + } + else { + prec = infix.substr(i,index1); + if (precedence(prec) > precedence(s.top())) { + s.push(prec); + } + else if (precedence(prec) == precedence(s.top())) { + s.push(prec); + } + else { + while ((!s.empty()) && (precedence(prec) < precedence(s.top()))) { + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + s.push(prec); + } + } + } + } + while (!s.empty()) { + // last formula + // assign number to formula and write to file + // ss << write_to_file (formula_map, count, s, prefix, index_pair); + ss_string += write_to_file (formula_map, count, s, prefix, index_pair); + s.pop(); + } + + // quantifiers + write_quantifiers (quantifier, var_map, my_file); + // output and variables + my_file << "output" << prefix << '\n' << endl; + // write formulas to file + // my_file << ss.str() << endl; + my_file << ss_string; + // new map so variables can be sorted by number in qcir file + map new_map; + my_file << "# variables" << endl; + for (auto x: var_map) { + // new_map[x.second] = x.first; + // my_file << "# " << x.first << " " << x.second << endl; + // var_map[x] = reverse(x.first.begin(), x.first.end()); + my_file << "# " << x.second << ": "<< x.first << endl; + // my_file << "# " << x.second << ": "<< (x.first.begin(), x.first.end()) << endl; + // reverse(variable.begin(), variable.end()); + } + // for (auto x: new_map) { + // my_file << "# " << x.first << " " << x.second << endl; + // } + + //// debug + + + my_file.close(); +} + + + + +map variable_map; +int global_counter = 1; +string final_QCIR; +string numerize_vars(string var_name){ + if (!variable_map.count(var_name)){ + variable_map[var_name] = ++global_counter; + } + return to_string(variable_map[var_name]); + // return "error"; +} + +void debug(string s){ + cout << s << endl; +} + +int build_AND(string expr){ + debug("building: " + expr); + string var_name = ""; + string final_QCIR = ""; + final_QCIR += to_string(global_counter) + "=("; + for (int i = 0 ; i < expr.length() ; i++){ + if (expr[i] == ')'){ + final_QCIR += numerize_vars(var_name); + final_QCIR += ')'; + } + else if (expr[i] == '~'){ + final_QCIR += "-"; + } + else if (expr[i] != '/'){ + var_name += expr[i]; + debug(var_name); + } + else{ + final_QCIR += numerize_vars(var_name) + ","; + var_name = ""; + i = i + 1; + } + + } + + // final_QCIR += to_string(global_counter) + "=(" + var_name + ")"; + + debug("final: "+final_QCIR); + global_counter ++; + + return 999; +} + +int build_OR(string expr){ + debug("building: " + expr); + string var_name = ""; + string final_QCIR = ""; + final_QCIR += to_string(global_counter) + "=("; + for (int i = 0 ; i < expr.length() ; i++){ + if (expr[i] == ')'){ + final_QCIR += numerize_vars(var_name); + final_QCIR += ')'; + } + else if (expr[i] == '~'){ + final_QCIR += "-"; + } + else if (expr[i] != '\\'){ + var_name += expr[i]; + debug(var_name); + } + else{ + final_QCIR += numerize_vars(var_name) + ","; + var_name = ""; + i = i + 1; + } + + } + + // final_QCIR += to_string(global_counter) + "=(" + var_name + ")"; + + debug("final: "+final_QCIR); + global_counter ++; + + return 999; +} + +// A binary version +// int BoolToQCIR(string formula, int L_ptr, int R_ptr ){ +int BoolToQCIR(string formula, int L_ptr, int R_ptr){ + + string L_expr; + string R_expr; + // int L_ptr = formula[0]; + // int R_ptr = formula[formula.length()]; + + if(formula[L_ptr+1] == '(' && formula[R_ptr-1] == ')'){ + BoolToQCIR(formula, L_ptr+1, R_ptr-1); + } + else{ + // for (int k = L_ptr; k < formula.length(); k++){ + // cout << "[last layer, assigning numbers]" << endl; + // if (k == formula.find(")")){ // + if (formula[L_ptr+2] == '/'){ + cout << "build AND: " << endl; + build_AND(formula.substr(1, R_ptr-1)); // also remove the parans + } + else if (formula.find("\\")){ + build_OR(formula.substr(1, R_ptr-1)); + + } + // } + // } + } + for (auto x: variable_map) { + cout << "# " << x.second << ": "<< x.first << endl; + } + return 1; + +} + +string test_formula = "((a/\\b)\\/(c/\\d))"; + +//Min genqbf function to run +int main(int argc, char **argv) +{ + // clock_t start, end; + // double time_taken; + vector quantifier; + + bool test = true; + + if (test){ + cout << "(test)" << endl; + cout << "translating: " << test_formula << endl; + + quantifier = {"E", "E"}; + map var_map; + stack stack; + string line, input_file; + + InfixToQCIR(stack, test_formula , var_map, quantifier); + // InfixToQCIR(stack, infix_formulas , var_map, quantifier); + // time_taken = double(end - start) / double(CLOCKS_PER_SEC); + // cout << "(L&T) code. \n Time for converting QCIR : " << fixed + // << time_taken << setprecision(6); + // cout << " sec " << endl; + cout << "__________________" << endl; + BoolToQCIR(test_formula, 0, test_formula.length()-1); + // BoolToQCIR(test_formula); + + // cout << "(THH) code. \n Time for converting QCIR : " << fixed + // << time_taken << setprecision(6); + // cout << " sec " << endl; + + } + else{ + + int k; + char *a = argv[1]; + k = atoi(a); + vector inputs; + string final_check; + string variable; + int counter = 2; + string model_types[26] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + + ofstream outdata; + while (final_check != "hq") + { + final_check = ""; + variable = argv[counter]; + inputs.push_back(variable); + final_check += variable[variable.length() - 2]; + final_check += variable[variable.length() - 1]; + counter++; + } + + // start = clock(); + string infix_formulas; + for (int i = 0; i < inputs.size() - 3; i += 2) + { + string unrolled_I = I_unroller(k, inputs[i], model_types[i / 2]); + string unrolled_R = R_unroller(k, inputs[i + 1], model_types[i / 2]); + infix_formulas = infix_formulas + "("+unrolled_I + ")" + "/\\" + "(" + unrolled_R + ")"; + } + // end = clock(); + // time_taken = double(end - start) / double(CLOCKS_PER_SEC); + // cout << "Time for unrolling models : " << fixed + // << time_taken << setprecision(5); + // cout << " sec " << endl; + + // FORMULA + // int last_dot = prop.find_last_of('.'); + // string quants = prop.substr(0, last_dot+1); + // regex re("([A-Z].)"); + // + // for (int i = 0 ; i < quants.length() ; i++){ + // if (quants[i] == 'e'){ // 'exists' + // quantifier.push_back('E'); + // } + // if (quants[i] == 'f'){ // 'forall' + // quantifier.push_back('A'); + // } + // } + + string semantic = inputs[inputs.size() - 3]; + string QS = inputs[inputs.size() - 2]; + // string prop = inputs[inputs.size() - 1]; + // start = clock(); + string prop; + std::ifstream file(inputs[inputs.size() - 1]); + while (!file.eof()) + { + std::string line; + while (std::getline(file, line)) { + for (int i = 0 ; i < line.length() ; i++){ + prop += line[i]; + } + } + } + + int last_dot = prop.find_last_of('.'); + prop = prop.substr(last_dot+1, prop.length()); + + string unrolled_formula = formula_unroller(k+1, prop, inputs[inputs.size() - 2]); + // end = clock(); + // time_taken = double(end - start) / double(CLOCKS_PER_SEC); + // cout << "Time for unrolling formula : " << fixed + // << time_taken << setprecision(5); + // cout << " sec " << endl; + + unrolled_formula = "(" + unrolled_formula + ")"; // warning: here has a hidden ,\\ + + infix_formulas = infix_formulas+unrolled_formula; + ofstream bool_output("build_today/output-cpp.txt"); + bool_output << infix_formulas; + + + // L & T + map var_map; + stack stack; + string line, input_file; + string QCIR_out = "build_today/HQ-cpp.qcir"; + // start = clock(); + InfixToQCIR(stack, infix_formulas , var_map, quantifier); + // end = clock(); + // time_taken = double(end - start) / double(CLOCKS_PER_SEC); + // cout << "Time for converting QCIR : " << fixed + // << time_taken << setprecision(5); + // cout << " sec " << endl; + + } + + + return 0; +} diff --git a/src/cplusplus/temp/infix_qcir b/src/cplusplus/temp/infix_qcir new file mode 100755 index 00000000..15b9001c Binary files /dev/null and b/src/cplusplus/temp/infix_qcir differ diff --git a/src/cplusplus/temp/infix_qcir.cpp b/src/cplusplus/temp/infix_qcir.cpp new file mode 100644 index 00000000..955bfb64 --- /dev/null +++ b/src/cplusplus/temp/infix_qcir.cpp @@ -0,0 +1,249 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; + + + +void write_quantifiers (vector const &quantifier, map const &var_map, ofstream &my_file) { + int len = quantifier.size(); + char letter = 'A'; + stringstream ss; + for (int i=0; i find_last_vars(string formula) { + int index1 = formula.find_last_of("("); + int index2 = formula.substr(0,index1-1).find_last_of("("); + pair index_pair(index2, index1); + return index_pair; +} + +string write_to_file (ofstream &my_file, int &count, stack &s, string &prefix, pair &index_pair){ + stringstream ss; + //my_file << to_string(count) << " = "; + ss << to_string(count) << " = "; + if (s.top() == "/\\") { // or operator + //my_file << "or("; + ss << "or("; + } else if (s.top() == "\\/") { // and operator + //my_file << "and("; + ss << "and("; + } + index_pair = find_last_vars(prefix); + + //my_file << prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + //<< "," << prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) << ')' << endl; + ss << prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + << "," << prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) << ')' << endl; + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(count) + ')'; + count++; + + return ss.str(); +} + +bool isOperator(string c) +{ + if (c == "/\\" || c == "\\/") { + return true; + } + else { + return false; + } +} + +bool isOperator2(string c) +{ + if (c == "~") { + return true; + } else { + return false; + } +} + +bool isPar(string c) { + if (c == ")" || c == "(") { + return true; + } else { + return false; + } +} + +int precedence(string c) +{ + if (c == "\\/") // acts as /\ operator since its flipped + return 3; + else if (c == "/\\") //acts as \/ operator since its flipped + return 2; + else if (c == "~") + return 1; + else + return -1; +} + +void InfixToQCIR(stack s, string infix, map &var_map, vector const & quantifier) +{ + int count = 1; + pair index_pair; + ofstream my_file; + stringstream ss; + my_file.open("output1.qcir"); + string prefix; + string variable; + reverse(infix.begin(), infix.end()); + + for (int i = 0; i < infix.length(); i++) { + if (infix[i] == '(') { + infix[i] = ')'; + } + else if (infix[i] == ')') { + infix[i] = '('; + } + } + for (int i = 0; i < infix.length(); i++) { + if (infix[i]=='~') { + //account for negation + prefix +=infix[i]; + size_t pos; + while ((pos = prefix.find(")~")) != std::string::npos) { + size_t pos2 = prefix.substr(0,pos).find_last_of("("); + prefix.replace(pos, 2, ")"); + prefix.insert(pos2+1, "-"); + } + // adding variable to prefix + } else if (infix[i] != '/' && infix[i] != '\\' && infix[i] != '~' && !isPar(infix.substr(i,1))){ + // assign numbers to variables here + variable += infix[i]; + // end of variable due to operator or parentheses + if ((infix.length() >= (i+1) && (infix[i+1] == '/' || infix[i+1] == '\\' || infix[i+1] == '~' || isPar(infix.substr(i+1,1))))||(infix.length()-1) == i) { + reverse(variable.begin(), variable.end()); + // check if variable already in map or not + if (var_map.find(variable) == var_map.end()) { + prefix = prefix + "(" + std::to_string(count) + ')'; + var_map [variable] = count; + count++; + } else { + prefix = prefix + "(" + to_string(var_map[variable]) + ')'; + } + variable = ""; + } + } + else if (infix[i] == '(') { + string s1; + s1 += infix[i]; + s.push(s1); + } + else if (infix[i] == ')') { + while ((s.top() != "(") && (!s.empty())) { + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + s.pop(); + } + if (s.top() == "(") { + s.pop(); + } + } + else if (isOperator(infix.substr(i,2)) || isOperator2(infix.substr(i,1))) { + int index1; + if (isOperator(infix.substr(i,2))) { + index1 = 2; + } else { + index1 = 1; + } + string prec = infix.substr(i,index1); + if (s.empty()) { + s.push(infix.substr(i,index1)); + } + else { + if (precedence(prec) > precedence(s.top())) { + s.push(prec); + } + else if (precedence(prec) == precedence(s.top())) { + s.push(prec); + } + else { + while ((!s.empty()) && (precedence(prec) < precedence(s.top()))) { + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + s.pop(); + } + s.push(prec); + } + } + } + } + while (!s.empty()) { + // last formula + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + + s.pop(); + } + // quantifiers + write_quantifiers (quantifier, var_map, my_file); + // output and variables + my_file << "output" << prefix << '\n' << endl; + // write formulas to file + my_file << ss.str() << endl; + // new map so variables can be sorted by number in qcir file + map new_map; + for (auto x: var_map) { + new_map[x.second] = x.first; + } + my_file << "# variables" << endl; + for (auto x: new_map) { + my_file << "# " << x.first << " " << x.second << endl; + } + my_file.close(); +} + +int main() { + map var_map; + stack stack; + string line, input_file; + + //change this to change the quantifiers + vector quantifier {'A','E'}; + // takes an input file + cout << "Enter a file name: " << endl; + cin >> input_file; + ifstream myfile (input_file); + stringstream infix; + + // removes any white space from file and puts into stringstream + if (myfile.is_open()) + { + while ( getline (myfile,line) ) + { + line.erase(std::remove_if(line.begin(), line.end(), ::isspace),line.end()); + infix << line; + } + myfile.close(); + } + else cout << "Unable to open file"; + InfixToQCIR(stack, infix.str() , var_map, quantifier); + cout << "\nConversion complete\n" << endl; + return 0; +} diff --git a/src/cplusplus/temp/mini_P.hq b/src/cplusplus/temp/mini_P.hq new file mode 100644 index 00000000..2e8b2e9d --- /dev/null +++ b/src/cplusplus/temp/mini_P.hq @@ -0,0 +1 @@ +exists A. exists B. F(~a[A]\/~a[B]\/a[B]) diff --git a/src/cplusplus/temp/new_genqbf b/src/cplusplus/temp/new_genqbf new file mode 100755 index 00000000..d22a1877 Binary files /dev/null and b/src/cplusplus/temp/new_genqbf differ diff --git a/src/cplusplus/temp/old_genqbf b/src/cplusplus/temp/old_genqbf new file mode 100755 index 00000000..b6d06166 Binary files /dev/null and b/src/cplusplus/temp/old_genqbf differ diff --git a/src/cplusplus/temp/old_genqbf.cpp b/src/cplusplus/temp/old_genqbf.cpp new file mode 100644 index 00000000..7d6e87c7 --- /dev/null +++ b/src/cplusplus/temp/old_genqbf.cpp @@ -0,0 +1,2272 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +//The function for finding indexes of a text +vector substrPosition(string str, string sub_str) +{ + bool flag = false; + vector arr; + for (int i = 0; i < str.length(); i++) + { + if (str.substr(i, sub_str.length()) == sub_str) + { + arr.push_back(i); + flag = true; + } + } + + return arr; +} + +//The function that removes "~~" in our text +string negation_remover(string input) +{ + for (int i = 0; i < input.length(); i++) + { + string s = "~~"; + string::size_type x = input.find(s); + if (x != string::npos) + input.erase(x, s.length()); + } + return input; +} + + +//The function for replacing -> existing in the output by the equal logical relations +string if_replacer(string input) +{ + string sub_str; + int distance; + sub_str = "->"; + vector positions_if = substrPosition(input, sub_str); + sub_str = "("; + vector positions_p1 = substrPosition(input, sub_str); + sub_str = ")"; + vector positions_p2 = substrPosition(input, sub_str); + int position = 0; + int added = 0; + for (int i = 0; i < positions_if.size(); i++) + { + distance = input.length(); + for (int j = 0; j < positions_p1.size(); j++) + { + if ((positions_if[i] - positions_p1[j]) < distance && (positions_if[i] - positions_p1[j]) > 0) + { + position = positions_p1[j]; + distance = positions_if[i] - positions_p1[j]; + } + else + { + break; + } + } + + input.insert(positions_if[i] + added, "\\/"); + input.insert(position + 1 + added, "~"); + added += 3; + } + + for (int i = 0; i < input.length(); i++) + { + string s = "->"; + string::size_type x = input.find(s); + if (x != string::npos) + input.erase(x, s.length()); + } + + return input; +} + +//The function for replacing < -> existing in the output by the equal logical relations +string iff_replacer(string input) +{ + string sub_str; + int distance; + sub_str = "<->"; + vector positions_iff = substrPosition(input, sub_str); + sub_str = "("; + vector positions_p1 = substrPosition(input, sub_str); + sub_str = ")"; + vector positions_p2 = substrPosition(input, sub_str); + int position1; + int position2; + int added; + string part1; + string part2; + string added_part; + added = 0; + for (int i = 0; i < positions_iff.size(); i++) + { + distance = input.length(); + position1 = 0; + position2 = 0; + part1 = ""; + part2 = ""; + for (int j = 0; j < positions_p1.size(); j++) + { + if ((positions_iff[i] - positions_p1[j]) < distance && (positions_iff[i] - positions_p1[j]) > 0) + { + position1 = positions_p1[j]; + distance = positions_iff[i] - positions_p1[j]; + } + else + { + break; + } + } + + distance = input.length(); + for (int j = 0; j < positions_p2.size(); j++) + { + if ((-positions_iff[i] + positions_p2[j]) > 0) + { + position2 = positions_p2[j]; + break; + } + } + + for (int j = position1 + added + 1; j < positions_iff[i] + added; j++) + { + part1 += input[j]; + input[j] = '@'; + } + + for (int j = added + positions_iff[i] + 3; j < position2 + added; j++) + { + part2 += input[j]; + input[j] = '@'; + } + + added_part += "("; + added_part += "~"; + added_part += part1; + added_part += "\\/"; + added_part += part2; + added_part += ")"; + added_part += "/\\"; + added_part += "("; + added_part += "~"; + added_part += part2; + added_part += "\\/"; + added_part += part1; + added_part += ")"; + input.insert(position1 + added + 1, added_part); + added += added_part.length(); + added_part = ""; + } + + for (int i = 0; i < input.length(); i++) + { + string s = "@"; + string::size_type x = input.find(s); + if (x != string::npos) + input.erase(x, s.length()); + s = "<->"; + x = input.find(s); + if (x != string::npos) + input.erase(x, s.length()); + } + + return input; +} + +//The function for until unroller +string until_unroller(string modelA, string modelB, int k, vector added_strs_A, vector added_strs_B, string status) +{ + string final_return; + string new_A = modelA; + string new_B = modelB; + string paranthesis; + string P_nextgen; + string sub_str; + int counter; + vector positions; + for (int t = 0; t < k + 1; t++) + { + int added_l = end(added_strs_A[t]) - begin(added_strs_A[t]); + P_nextgen = ""; + if (t < k - 1) + { + P_nextgen += new_B; + P_nextgen += "\\/"; + P_nextgen += "("; + P_nextgen += new_A; + P_nextgen += "/\\"; + P_nextgen += "("; + paranthesis += "))"; + sub_str = "/\\"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "\\/"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = ")"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "<->"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + final_return += P_nextgen; + } + else if (t == k - 1) + { + P_nextgen = ""; + P_nextgen += new_B; + P_nextgen += "\\/"; + P_nextgen += new_A; + P_nextgen += "/\\"; + sub_str = "/\\"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "\\/"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = ")"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "<->"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + final_return += P_nextgen; + } + else if (t == k) + { + P_nextgen = ""; + if (status == "-pes") + { + P_nextgen += new_B; + } + else if (status == "-opt") + { + P_nextgen += "("; + P_nextgen += new_A; + P_nextgen += "\\/"; + P_nextgen += new_B; + P_nextgen += ")"; + } + + P_nextgen += paranthesis; + sub_str = "/\\"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "\\/"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = ")"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + sub_str = "<->"; + positions = substrPosition(P_nextgen, sub_str); + counter = 0; + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + counter += added_l; + } + } + } + + final_return += P_nextgen; + } + } + + return final_return; +} + +//The function for release unroller +string release_unroller(string modelA, string modelB, int k, vector added_strs_A, vector added_strs_B, string status) +{ + string final_return; + + string new_A = modelA; + string new_B = modelB; + string paranthesis; + + string P_nextgen; + string sub_str; + int counter; + vector positions; + + for (int t = 0; t < k + 1; t++) + { + int added_l = end(added_strs_A[t]) - begin(added_strs_A[t]); + P_nextgen = ""; + + if (t < k - 1) + { + P_nextgen += new_B; + P_nextgen += "/\\"; + P_nextgen += "("; + P_nextgen += new_A; + P_nextgen += "\\/"; + P_nextgen += "("; + + paranthesis += "))"; + + //The new algorithm starts right there********************************************************************************** + sub_str = "/\\"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = "\\/"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = ")"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + // cout< added_strs_A, vector added_strs_B) +{ + string P_nextgen = ""; + string end_sign = ""; + string P_reference; + string final_P; + string sub_str; + + vector positions; + int counter; + + for (int i = position_G + 1; i < new_P.length(); i++) + { + if (new_P[i] == 'F' || new_P[i] == 'G') + { + if (new_P[i + 1] == '(' || new_P[i + 1] == '~') + { + end_sign = P_nextgen[P_nextgen.length() - 2]; + end_sign += P_nextgen[P_nextgen.length() - 1]; + + P_nextgen = P_nextgen.substr(0, P_nextgen.size() - 1); + P_nextgen = P_nextgen.substr(0, P_nextgen.size() - 1); + + break; + } + } + + P_nextgen += new_P[i]; + } + + P_reference = P_nextgen; + + for (int t = 0; t < k; t++) + { + int added_l = end(added_strs_A[t]) - begin(added_strs_A[t]); + + sub_str = "/\\"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = "\\/"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = ")"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + // cout< added_strs_A, vector added_strs_B) +{ + string P_nextgen = ""; + string end_sign = ""; + string P_reference; + string final_P; + string sub_str; + + vector positions; + int counter; + + for (int i = position_F + 1; i < new_P.length(); i++) + { + if (new_P[i] == 'F' || new_P[i] == 'G') + { + if (new_P[i + 1] == '(' || new_P[i + 1] == '~') + { + end_sign = P_nextgen[P_nextgen.length() - 2]; + end_sign += P_nextgen[P_nextgen.length() - 1]; + + P_nextgen = P_nextgen.substr(0, P_nextgen.size() - 1); + P_nextgen = P_nextgen.substr(0, P_nextgen.size() - 1); + + break; + } + } + + P_nextgen += new_P[i]; + } + + P_reference = P_nextgen; + + for (int t = 0; t < k; t++) + { + int added_l = end(added_strs_A[t]) - begin(added_strs_A[t]); + + sub_str = "/\\"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = "\\/"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + if (P_nextgen[positions[i] + counter - 1] != ')') + { + if (P_nextgen[positions[i] + counter - 2] == 'A') + { + P_nextgen.insert(positions[i] + counter, added_strs_A[t]); + + counter += added_l; + } + else if (P_nextgen[positions[i] + counter - 2] == 'B') + { + P_nextgen.insert(positions[i] + counter, added_strs_B[t]); + + counter += added_l; + } + } + } + + sub_str = ")"; + + positions = substrPosition(P_nextgen, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + // cout<> added; + I += added; + } + + for (int i = 0; i < bit; i++) + { + string s = to_string(i); + + if (i == 0) + { + ad_I += "("; + } + + ad_I += "~n_"; + ad_I += s; + + if (i != bit - 1) + { + ad_I += "/\\"; + } + + if (i == bit - 1) + { + ad_I += ")/\\"; + } + } + + // mini_I >> I; + + char *I_str = &I[0]; + + string added_str; + added_str += "_"; + added_str += model_type; + added_str += "_[0]"; + + // if (model_type == "I"){ + // added_str = "_A_[0]"; + + // } else if (model_type == "J") { + // added_str = "_B_[0]"; + + // } + + int added_l = added_str.length(); + + string new_I = I_str; + + // int len = new_I.length(); + + string sub_str = "/\\"; + + vector positions = substrPosition(new_I, sub_str); + + int counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + //cout<> added; + R += added; + } + + char *R_str = &R[0]; + string new_R = R_str; + + vector added_strs; + + string A; + A += "_"; + A += model_type; + A += "_[]"; + + // if (model_type == "R"){ + // A = "_A_[]"; + + // } else if (model_type == "S") { + // A = "_B_[]"; + + // } + + string new_A; + + for (int i = 0; i < k + 1; i++) + { + string s = to_string(i); + + new_A = A; + + new_A.insert(4, s); + + added_strs.push_back(new_A); + } + + // string new_R = R_str; + + string final_R; + + // int len = new_I.length(); + + string sub_str; + vector positions; + int counter; + int i; + + sub_str = ")"; + + positions = substrPosition(new_R, sub_str); + + counter = 0; + + for (int t = 0; t < k - 1; t++) + { + int added_l = end(added_strs[t]) - begin(added_strs[t]); + + sub_str = "/\\"; + + positions = substrPosition(new_R, sub_str); + + counter = 0; + + for (int i = 0; i < positions.size(); i++) + { + //cout<> added; + P += added; + } + + char *P_str = &P[0]; + string new_P = P_str; + + vector added_strs_A; + vector added_strs_B; + + string A = "_A_[]"; + + string B = "_B_[]"; + + string new_A; + + string new_B; + + for (int i = 0; i < k + 1; i++) + { + string s = to_string(i); + + new_A = A; + new_B = B; + + new_A.insert(4, s); + new_B.insert(4, s); + + added_strs_A.push_back(new_A); + + added_strs_B.push_back(new_B); + } + + //Detecting G, F, U, R signs: + + vector positions_all; + + vector positions_G_1; + + string sub_str = "G("; + + positions_G_1 = substrPosition(new_P, sub_str); + + if (positions_G_1.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_G_1.begin(), positions_G_1.end()); + } + + vector positions_G_2; + + sub_str = "G~"; + + positions_G_2 = substrPosition(new_P, sub_str); + + if (positions_G_2.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_G_2.begin(), positions_G_2.end()); + } + + vector positions_F_1; + + sub_str = "F("; + + positions_F_1 = substrPosition(new_P, sub_str); + + if (positions_F_1.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_F_1.begin(), positions_F_1.end()); + } + + vector positions_F_2; + + sub_str = "F~"; + + positions_F_2 = substrPosition(new_P, sub_str); + + if (positions_F_2.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_F_2.begin(), positions_F_2.end()); + } + + vector positions_U_1; + + sub_str = "]U"; + + positions_U_1 = substrPosition(new_P, sub_str); + + if (positions_U_1.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_U_1.begin(), positions_U_1.end()); + } + + vector positions_U_2; + + sub_str = ")U"; + + positions_U_2 = substrPosition(new_P, sub_str); + + if (positions_U_2.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_U_2.begin(), positions_U_2.end()); + } + + vector positions_R_1; + + sub_str = "]R"; + + positions_R_1 = substrPosition(new_P, sub_str); + + if (positions_R_1.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_R_1.begin(), positions_R_1.end()); + } + + vector positions_R_2; + + sub_str = ")R"; + + positions_R_2 = substrPosition(new_P, sub_str); + + if (positions_R_2.size() > 0) + { + positions_all.insert(positions_all.begin(), positions_R_2.begin(), positions_R_2.end()); + } + + string final_P; + vector positions; + + if (positions_all.size() > 0) + { + sort(positions_all.begin(), positions_all.end()); + + //cout << "Sorted \n"; + for (auto x: positions_all) + { + if (count(positions_G_1.begin(), positions_G_1.end(), x)) + { + final_P += G_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + else if (count(positions_G_2.begin(), positions_G_2.end(), x)) + { + final_P += G_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + else if (count(positions_F_1.begin(), positions_F_1.end(), x)) + { + final_P += F_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + else if (count(positions_F_2.begin(), positions_F_2.end(), x)) + { + final_P += F_unroller(k, x, new_P, added_strs_A, added_strs_B); + } + else if (count(positions_U_1.begin(), positions_U_1.end(), x)) + { + sub_str = "("; + + positions = substrPosition(new_P, sub_str); + + int minimum = new_P.length(); + int positions_1; + + for (int i = 0; i < positions.size(); i++) + { + if ((x - positions[i]) > 0 && (x - positions[i]) < minimum) + { + minimum = x - positions[i]; + + positions_1 = positions[i]; + } + } + + string atom_A; + string atom_B; + + for (int i = positions_1 + 1; i < x + 1; i++) + { + atom_A += new_P[i]; + } + + sub_str = ")"; + + positions = substrPosition(new_P, sub_str); + + minimum = new_P.length(); + int positions_2; + + for (int i = 0; i < positions.size(); i++) + { + if ((positions[i] - x) > 0 && (positions[i] - x) < minimum) + { + minimum = positions[i] - x; + + positions_2 = positions[i]; + } + } + + for (int i = x + 2; i < positions_2; i++) + { + atom_B += new_P[i]; + } + + string output_U = until_unroller(atom_A, atom_B, k, added_strs_A, added_strs_B, status); + + final_P += output_U; + + if (new_P[positions_2 + 1] == '/') + { + final_P.insert(0, "("); + + final_P += ")"; + + final_P += "/\\"; + } + else if (new_P[positions_2 + 1] == '\\') + { + final_P.insert(0, "("); + + final_P += ")"; + + final_P += "\\/"; + } + } + else if (count(positions_U_2.begin(), positions_U_2.end(), x)) + { + sub_str = "("; + + positions = substrPosition(new_P, sub_str); + + int minimum = new_P.length(); + int positions_1; + + for (int i = 0; i < positions.size(); i++) + { + if ((x - positions[i]) > 0 && (x - positions[i]) < minimum) + { + minimum = x - positions[i]; + + positions_1 = positions[i]; + } + } + + string atom_A; + string atom_B; + + for (int i = positions_1 + 1; i < x + 1; i++) + { + atom_A += new_P[i]; + } + + sub_str = ")"; + + positions = substrPosition(new_P, sub_str); + + minimum = new_P.length(); + int positions_2; + + for (int i = 0; i < positions.size(); i++) + { + if ((positions[i] - x) > 0 && (positions[i] - x) < minimum) + { + minimum = positions[i] - x; + + positions_2 = positions[i]; + } + } + + for (int i = x + 2; i < positions_2; i++) + { + atom_B += new_P[i]; + } + + string output_U = until_unroller(atom_A, atom_B, k, added_strs_A, added_strs_B, status); + final_P += output_U; + if (new_P[positions_2 + 1] == '/') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "/\\"; + } + else if (new_P[positions_2 + 1] == '\\') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "\\/"; + } + } + else if (count(positions_R_1.begin(), positions_R_1.end(), x)) + { + sub_str = "("; + positions = substrPosition(new_P, sub_str); + int minimum = new_P.length(); + int positions_1; + for (int i = 0; i < positions.size(); i++) + { + if ((x - positions[i]) > 0 && (x - positions[i]) < minimum) + { + minimum = x - positions[i]; + positions_1 = positions[i]; + } + } + + string atom_A; + string atom_B; + for (int i = positions_1 + 1; i < x + 1; i++) + { + atom_A += new_P[i]; + } + + sub_str = ")"; + positions = substrPosition(new_P, sub_str); + minimum = new_P.length(); + int positions_2; + for (int i = 0; i < positions.size(); i++) + { + if ((positions[i] - x) > 0 && (positions[i] - x) < minimum) + { + minimum = positions[i] - x; + positions_2 = positions[i]; + } + } + + for (int i = x + 2; i < positions_2; i++) + { + atom_B += new_P[i]; + } + + string output_R = release_unroller(atom_A, atom_B, k, added_strs_A, added_strs_B, status); + final_P += output_R; + if (new_P[positions_2 + 1] == '/') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "/\\"; + } + else if (new_P[positions_2 + 1] == '\\') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "\\/"; + } + } + else if (count(positions_R_2.begin(), positions_R_2.end(), x)) + { + sub_str = "("; + positions = substrPosition(new_P, sub_str); + int minimum = new_P.length(); + int positions_1; + for (int i = 0; i < positions.size(); i++) + { + if ((x - positions[i]) > 0 && (x - positions[i]) < minimum) + { + minimum = x - positions[i]; + positions_1 = positions[i]; + } + } + + string atom_A; + string atom_B; + for (int i = positions_1 + 1; i < x + 1; i++) + { + atom_A += new_P[i]; + } + + sub_str = ")"; + positions = substrPosition(new_P, sub_str); + minimum = new_P.length(); + int positions_2; + for (int i = 0; i < positions.size(); i++) + { + if ((positions[i] - x) > 0 && (positions[i] - x) < minimum) + { + minimum = positions[i] - x; + positions_2 = positions[i]; + } + } + + for (int i = x + 2; i < positions_2; i++) + { + atom_B += new_P[i]; + } + + string output_R = release_unroller(atom_A, atom_B, k, added_strs_A, added_strs_B, status); + final_P += output_R; + if (new_P[positions_2 + 1] == '/') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "/\\"; + } + else if (new_P[positions_2 + 1] == '\\') + { + final_P.insert(0, "("); + final_P += ")"; + final_P += "\\/"; + } + } + } + + int final_len = final_P.length(); + for (int i = 0; i < final_len; i++) + { + string s = "[A]"; + string::size_type x = final_P.find(s); + if (x != string::npos) + final_P.erase(x, s.length()); + s = "[B]"; + x = final_P.find(s); + if (x != string::npos) + final_P.erase(x, s.length()); + } + } + + return final_P; +} + + + +// L&T + +void write_quantifiers (vector const &quantifier, map const &var_map, ofstream &my_file) { + int len = quantifier.size(); + char letter = 'A'; + stringstream ss; + for (int i=0; i find_last_vars(string formula) { + int index1 = formula.find_last_of("("); + int index2 = formula.substr(0,index1-1).find_last_of("("); + pair index_pair(index2, index1); + return index_pair; +} + +string write_to_file (ofstream &my_file, int &count, stack &s, string &prefix, pair &index_pair){ + stringstream ss; + //my_file << to_string(count) << " = "; + ss << to_string(count) << " = "; + if (s.top() == "/\\") { // or operator + //my_file << "or("; + ss << "or("; + } else if (s.top() == "\\/") { // and operator + //my_file << "and("; + ss << "and("; + } + index_pair = find_last_vars(prefix); + + //my_file << prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + //<< "," << prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) << ')' << endl; + ss << prefix.substr(index_pair.first+1, index_pair.second-(index_pair.first+2)) + << "," << prefix.substr(index_pair.second+1, prefix.length()-(index_pair.second+2)) << ')' << endl; + prefix = prefix.substr(0,index_pair.first) + '(' + to_string(count) + ')'; + count++; + + return ss.str(); +} + +bool isOperator(string c) +{ + if (c == "/\\" || c == "\\/") { + return true; + } + else { + return false; + } +} + +bool isOperator2(string c) +{ + if (c == "~") { + return true; + } else { + return false; + } +} + +bool isPar(string c) { + if (c == ")" || c == "(") { + return true; + } else { + return false; + } +} + +int precedence(string c) +{ + if (c == "\\/") // acts as /\ operator since its flipped + return 3; + else if (c == "/\\") //acts as \/ operator since its flipped + return 2; + else if (c == "~") + return 1; + else + return -1; +} + +void InfixToQCIR(stack s, string infix, map &var_map, vector const & quantifier) +{ + int count = 1; + pair index_pair; + ofstream my_file; + stringstream ss; + + my_file.open("build_today/QCIR.qcir"); + + + string prefix; + string variable; + reverse(infix.begin(), infix.end()); + + for (int i = 0; i < infix.length(); i++) { + if (infix[i] == '(') { + infix[i] = ')'; + } + else if (infix[i] == ')') { + infix[i] = '('; + } + } + for (int i = 0; i < infix.length(); i++) { + if (infix[i]=='~') { + //account for negation + prefix +=infix[i]; + size_t pos; + while ((pos = prefix.find(")~")) != std::string::npos) { + size_t pos2 = prefix.substr(0,pos).find_last_of("("); + prefix.replace(pos, 2, ")"); + prefix.insert(pos2+1, "-"); + } + // adding variable to prefix + } else if (infix[i] != '/' && infix[i] != '\\' && infix[i] != '~' && !isPar(infix.substr(i,1))){ + // assign numbers to variables here + variable += infix[i]; + // end of variable due to operator or parentheses + if ((infix.length() >= (i+1) && (infix[i+1] == '/' || infix[i+1] == '\\' || infix[i+1] == '~' || isPar(infix.substr(i+1,1))))||(infix.length()-1) == i) { + reverse(variable.begin(), variable.end()); + // check if variable already in map or not + if (var_map.find(variable) == var_map.end()) { + prefix = prefix + "(" + std::to_string(count) + ')'; + var_map [variable] = count; + count++; + } else { + prefix = prefix + "(" + to_string(var_map[variable]) + ')'; + } + variable = ""; + } + } + else if (infix[i] == '(') { + string s1; + s1 += infix[i]; + s.push(s1); + } + else if (infix[i] == ')') { + while ((s.top() != "(") && (!s.empty())) { + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + s.pop(); + } + if (s.top() == "(") { + s.pop(); + } + } + else if (isOperator(infix.substr(i,2)) || isOperator2(infix.substr(i,1))) { + int index1; + if (isOperator(infix.substr(i,2))) { + index1 = 2; + } else { + index1 = 1; + } + string prec = infix.substr(i,index1); + if (s.empty()) { + s.push(infix.substr(i,index1)); + } + else { + if (precedence(prec) > precedence(s.top())) { + s.push(prec); + } + else if (precedence(prec) == precedence(s.top())) { + s.push(prec); + } + else { + while ((!s.empty()) && (precedence(prec) < precedence(s.top()))) { + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + s.pop(); + } + s.push(prec); + } + } + } + } + while (!s.empty()) { + // last formula + // assign number to formula and write to file + ss << write_to_file (my_file, count, s, prefix, index_pair); + + s.pop(); + } + // quantifiers + write_quantifiers (quantifier, var_map, my_file); + // output and variables + my_file << "output" << prefix << '\n' << endl; + // write formulas to file + my_file << ss.str() << endl; + // new map so variables can be sorted by number in qcir file + map new_map; + for (auto x: var_map) { + new_map[x.second] = x.first; + } + my_file << "# variables" << endl; + for (auto x: new_map) { + my_file << "# " << x.first << " " << x.second << endl; + } + my_file.close(); +} + + + + + +//Our main function to run +int main(int argc, char **argv) +{ + int k; + char *a = argv[1]; + k = atoi(a); + vector inputs; + string final_check; + string variable; + int counter = 2; + string model_types[26] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + ofstream outdata; + while (final_check != "hq") + { + final_check = ""; + variable = argv[counter]; + inputs.push_back(variable); + final_check += variable[variable.length() - 2]; + final_check += variable[variable.length() - 1]; + counter++; + } + + outdata.open("build_today/old_output.txt"); + + string infix_formulas; + + clock_t start, end; + double time_taken; + + start = clock(); + for (int i = 0; i < inputs.size() - 3; i += 2) + { + string unrolled_I = I_unroller(k, inputs[i], model_types[i / 2]); + unrolled_I = iff_replacer(unrolled_I); + unrolled_I = if_replacer(unrolled_I); + unrolled_I = negation_remover(unrolled_I); + string unrolled_R = R_unroller(k, inputs[i + 1], model_types[i / 2]); + unrolled_R = iff_replacer(unrolled_R); + unrolled_R = if_replacer(unrolled_R); + unrolled_R = negation_remover(unrolled_R); + outdata << unrolled_I << endl; + outdata << "/\\" << endl; + outdata << unrolled_R << endl; + outdata << "/\\" << endl; + + infix_formulas = infix_formulas + unrolled_I + "/\\" + unrolled_R + "/\\"; + } + end = clock(); + time_taken = double(end - start) / double(CLOCKS_PER_SEC); + cout << "Time for unrolling models : " << fixed + << time_taken << setprecision(5); + cout << " sec " << endl; + + + + start = clock(); + string unrolled_formula = formula_unroller(k, inputs[inputs.size() - 1], inputs[inputs.size() - 2]); + unrolled_formula = iff_replacer(unrolled_formula); + unrolled_formula = if_replacer(unrolled_formula); + unrolled_formula = negation_remover(unrolled_formula); + unrolled_formula = "(" + unrolled_formula + ")"; + outdata << unrolled_formula << endl; + outdata.close(); + + unrolled_formula = iff_replacer(unrolled_formula); + unrolled_formula = if_replacer(unrolled_formula); + unrolled_formula = negation_remover(unrolled_formula); + unrolled_formula = "(" + unrolled_formula + ")"; + + end = clock(); + time_taken = double(end - start) / double(CLOCKS_PER_SEC); + cout << "Time for unrolling formula : " << fixed + << time_taken << setprecision(5); + cout << " sec " << endl; + + infix_formulas = infix_formulas+unrolled_formula; + + + map var_map; + stack stack; + string line, input_file; + + //change this to change the quantifiers + vector quantifier {'E','E'}; + // takes an input file + // cout << "Enter a file name: " << endl; + // cin >> input_file; + + + // ifstream myfile (input_file); + + // cout << infix_formulas << endl; + + // stringstream infix; + + + // infix << infix_formulas; + + // infix = infix_formulas; + + // removes any white space from file and puts into stringstream + // if (myfile.is_open()) + // { + // while ( getline (myfile,line) ) + // { + // line.erase(std::remove_if(line.begin(), line.end(), ::isspace),line.end()); + // infix << line; + // } + // myfile.close(); + // } + // else cout << "Unable to open file"; + + + // InfixToQCIR(stack, infix.str() , var_map, quantifier); + + start = clock(); + InfixToQCIR(stack, infix_formulas, var_map, quantifier); + // cout << "\nConversion complete\n" << endl; + + end = clock(); + time_taken = double(end - start) / double(CLOCKS_PER_SEC); + cout << "Time for converting QCIR : " << fixed + << time_taken << setprecision(5); + cout << " sec " << endl; + // cout << "\nConversion complete\n" << endl; + // cout << "tiiiiiiiiiiiiiime" << endl; + return 0; + +} diff --git a/cases_bmc/shared_buffer/scheduled_buffer.smv b/src/cplusplus/temp/output.txt similarity index 100% rename from cases_bmc/shared_buffer/scheduled_buffer.smv rename to src/cplusplus/temp/output.txt diff --git a/src/cplusplus/temp/test.txt b/src/cplusplus/temp/test.txt new file mode 100644 index 00000000..a516975c --- /dev/null +++ b/src/cplusplus/temp/test.txt @@ -0,0 +1,15 @@ +((~PC_1_A_[0]/\PC_0_A_[0])/\~a_A_[0]) +/\ +((((~PC_1_A_[0]/\PC_0_A_[0])/\~a_A_[0]))\/((((PC_1_A_[1]/\PC_0_A_[1])/\a_A_[1])\/((PC_1_A_[1]/\PC_0_A_[1])/\~a_A_[1])))) +/\((((~PC_1_A_[0]/\~PC_0_A_[0])/\~a_A_[0]))\/(((PC_1_A_[1]/\PC_0_A_[1])/\~a_A_[1]))) +/\((((~PC_1_A_[0]/\PC_0_A_[0])/\a_A_[0]))\/((((PC_1_A_[1]/\PC_0_A_[1])/\a_A_[1])\/((PC_1_A_[1]/\PC_0_A_[1])/\~a_A_[1])))) +/\((((PC_1_A_[0]/\PC_0_A_[0])/\~a_A_[0]))\/(((PC_1_A_[1]/\~PC_0_A_[1])/\~a_A_[1])))/\TRUE +/\ +((~PC_1_B_[0]/\PC_0_B_[0])/\~a_B_[0]) +/\ +((((~PC_1_B_[0]/\PC_0_B_[0])/\~a_B_[0]))\/((((PC_1_B_[1]/\PC_0_B_[1])/\a_B_[1])\/((PC_1_B_[1]/\PC_0_B_[1])/\~a_B_[1])))) +/\((((~PC_1_B_[0]/\~PC_0_B_[0])/\~a_B_[0]))\/(((PC_1_B_[1]/\PC_0_B_[1])/\~a_B_[1]))) +/\((((~PC_1_B_[0]/\PC_0_B_[0])/\a_B_[0]))\/((((PC_1_B_[1]/\PC_0_B_[1])/\a_B_[1])\/((PC_1_B_[1]/\PC_0_B_[1])/\~a_B_[1])))) +/\((((PC_1_B_[0]/\PC_0_B_[0])/\~a_B_[0]))\/(((PC_1_B_[1]/\~PC_0_B_[1])/\~a_B_[1])))/\TRUE +/\ +((~a_A_[0]\/~a_B_[0])\/(~a_A_[1]\/~a_B_[1])) diff --git a/src/expression/_build/_digests b/src/expression/_build/_digests index 30c09ff3..80320c32 100644 --- a/src/expression/_build/_digests +++ b/src/expression/_build/_digests @@ -1,119 +1,119 @@ -"Rule: ocaml: ml & cmi -> cmx & o (%=src/SymbolTable )": "\219\227\251D\226\207~\153o\150\253\207\201\131\208\177" -"Rule: ocaml: mli -> cmi (%=src/Expression )": "o[\235\222\t\246\209C\147\154\029\160W}M\226" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/SymbolTable )": "j\172\188\217\170\196\129\136\162.\1462\216\186\021\163" +"Rule: ocaml: mli -> cmi (%=src/Expression )": "8\161\133N\255%\184\224'\222u\158\145\186\1512" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Model.ml": "\021\020s\182\199\011SP?\183$9\132\243q\134" "Rule: ocaml dependencies ml (%=src/progs/TranslateArgs )": "u38\022\178\232\142\206J\022\012\0125\230\180\190" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/SymbolTable.ml": "\020+\184\254\222\169\142\189\135\222\165\237\028\193\242\196" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Global.ml": "d\139 \000Q\199\251\1688\191\241[&\012\154\157" "Rule: ocaml dependencies mli (%=src/Interface )": "~\140$Du\249\223\\I\205>,Wx!+" -"Rule: ocaml: mli -> cmi (%=src/Model )": "z^\202h\179\156\195$\"\0064\"\011A!\223" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Model.mli": "\213Dsg\133\203\001\016\154\180T\2499\002\231>" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Parser )": "\1860\202\207[E\129\245T\002\028\203b\241D4" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/SymbolTable.mli": "h\133\174\194\209\194>\000i\025\1665\232\193\253\228" +"Rule: ocaml: mli -> cmi (%=src/Model )": "A\247.5\133\027\r\148\239c*\209\002c\186\165" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Parser )": "\144\208\195\245\234?p\213i~m\020\220\190\142N" "Rule: ocamlyacc (%=src/ExprParser )": "Z\012\140\207\023\1626\007Y\143\213\022x\178ww" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Debug.mli": "\b\143\0313\019Q\221\199\242\005 N\014\243\007\210" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Parser.ml": "t\154\142DN\236~\019\024\185\246XG>.\005" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/TranslateArgs )": "=\165\r2\021\026\005\179\239\200\180\194k\186tO" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Interface.ml": "\165\243\237\t\193\238\016\171\156\006\129\212M\243\137\029" -"Rule: ocaml: mli -> cmi (%=src/ExprParser )": "\252\172\222V\"\167Pno-\208z3OsG" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/AIGER.ml": "\245\140B\168X\168h\166*v\216\214\"I7\253" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/AIGER.mli": "\198LU\2316u`[\171\238\018\137\007\177\"\016" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/TranslateArgs )": "PI\166\2498\230\174\192\227\002%\162\161\181\028\248" +"Rule: ocaml: mli -> cmi (%=src/ExprParser )": "\250\171\015\206\252\184\157\246\162w\228p\144\194\144\142" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/genqbf.ml": "n\014\240\171\170X\154\227\245zt>\141\128\185R" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/ExprParser.mly": "\232$\020W\230l\201\253\248\186(7\204\216Y\225" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/AIGER.ml": "\245\140B\168X\168h\166*v\216\214\"I7\253" "Rule: ocaml dependencies ml (%=src/ExprLexer )": "\158\158\004*\201\138\224\138(\127`ut|\199_" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/GenArgs.ml": "\181o\nR\129\248\142R+\224\240\027\003\218\170\164" -"Rule: ocaml: mli -> cmi (%=src/Interface )": "\168\004\199\249\012\014jz\022\2171\219\213\002\025\129" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Property )": "\024S\227\007@\224}\255ZWt\225\t\211E\222" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/bool )": "\185\248\235\174\165\245\192Qy\244\213\223\022\165\204g" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/PropParser.mly": "//\200\212\234y\025\193?\175n\132\137\177\142[" -"Rule: ocaml: mli -> cmi (%=src/Property )": "s`^;%\2435@\148\255N\"\222y\023\197" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Expression.mli": "\185\251\016\004\187G\201\028$d\149\203\211\219\028\143" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/translate.ml": "\139LW\190\229-\011W\166\163]\215\150\027\007\234" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/GenArgs.mli": "\173\151\233\2236\188\210d#\197\147\232\255k0)" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/TranslateArgs.ml": "\019+\147\220\152iE4\1936\212g&>m\252" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Debug.ml": "\134\139\200_\172\030\193\b\027BGc\017&\127R" +"Rule: ocaml: mli -> cmi (%=src/Interface )": "T\184\240#\178oJF/\212\230\185n<\1565" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/BoolArgs.ml": "\249\193\007\130\252\134\152\021\\\166^\188\216S\177B" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Property )": "\210\235\007\159\198mL\141G\158\1738\174=\219\157" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Expression.ml": "\175 J\178!6\197\246N\231\031\029s\024E?" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/bool )": "~\191Np2\128\2050/\206\230\192?\255\173{" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Property.ml": "\007\231\186\223LW\002,\240W\145\167\2096H\202" +"Rule: ocaml: mli -> cmi (%=src/Property )": " \137\169\026[\128!\188\254\132}\203\172\136\016\185" "Rule: ocaml dependencies ml (%=src/progs/translate )": "`uK\249\163X\"\150,j\200\189\012\182\127\001" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/ExprLexer )": "$\23967eo@8\016\139\142dO\236\193\134" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/genqbf )": "\217\158\006\017Q\139\2119\018qQ\216N\139\130\017" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/translate.ml": "\139LW\190\229-\011W\166\163]\215\150\027\007\234" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/ExprLexer )": "u\247\190\012 (0\221\015\005\218\006\215\029^\r" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/genqbf )": "\156\187O\143\188?\215\n\251lPA\157\194\195H" "Rule: ocaml dependencies mli (%=src/Global )": "\144R\208\157\207\b\243\245\018Z\176\145@\000:\213" "Rule: ocaml dependencies mli (%=src/AIGER )": "}\224\190\000#\190\246\243g\031>\229\146!\246\004" -"Rule: ocaml: mli -> cmi (%=src/Debug )": "C\142\"z\170uM\002\227\205\163\2189\002\232R" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/QBF.mli": "\240#\002\147\222x\007\151\254|\189\237\198:\159*" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/ExprParser )": "Y^c\251e\158\169\149\238\014QG\169\160\027\135" +"Rule: ocaml: mli -> cmi (%=src/Debug )": ",\180DK]\025\022\007&?\139. qe!" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/PropLexer.mll": "\r17\207\166\002'w\202L\200;\205\234\227\209" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/ExprParser )": "\135\147:bw\191\169\243\227\179K\155g\023 cmi (%=src/AIGER )": "\135\212\031Zz\218k\233\151I\237O\235a\154\233" -"Rule: ocaml: mli -> cmi (%=src/QBF )": "}\231\151\254Z\154\149y\1996\166\190\194\198\241\230" +"Rule: ocaml: mli -> cmi (%=src/AIGER )": "x|\025\011\225\019\169}\187\156s\017\138v\127\145" +"Rule: ocaml: mli -> cmi (%=src/QBF )": "z\015@cbw\136\023\193\217\161\029\146m\140\199" "Rule: ocamlyacc (%=src/PropParser )": "\168\028P\171.7\134v\232\144\175%\026:\192Z" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/TranslateArgs.mli": "\162%/<\245J\149\246\248\188\002\198\222\018\212\006" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/translate )": "\233R\031@\250\248\234;\134\2191\227JC\203\223" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/translate )": "\135\197e\175\144L>OQ\242\153B\200\178\140D" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Global.ml": "d\139 \000Q\199\251\1688\191\241[&\012\154\157" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Interface.mli": "\145\030\183\140-U\145\226\242\130\218\175=N'\157" "Rule: ocaml dependencies mli (%=src/Property )": "\170\208:2\197\168TG\149\140T[\192i\234f" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Debug.ml": "\134\139\200_\172\030\193\b\027BGc\017&\127R" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/QBF )": "7}\221\007\127\002q/\208\210\153\1348\168\004\004" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Interface.mli": "\145\030\183\140-U\145\226\242\130\218\175=N'\157" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Circuit )": ">\127=\225\164it\133\215f\011/\0114\014\249" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/QBF )": "\146~\244\181KG\175\209\027\003\r%\195);]" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/GenArgs.ml": "\181o\nR\129\248\142R+\224\240\027\003\218\170\164" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Circuit )": "\023\170\251\204\150\253\164\189\019H\229\162\193Z\255>" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/QBF.mli": "\240#\002\147\222x\007\151\254|\189\237\198:\159*" "Rule: ocaml dependencies ml (%=src/ExprParser )": "\025\155\133\137\248\129\027a\0051\197\190\188Y\204H" "Rule: ocaml dependencies mli (%=src/QBF )": "~b\"\024\217\203\143p\134\175\207\b7\130\220\159" "Rule: ocaml dependencies mli (%=src/ExprParser )": "\140\244\145\220\184u0\190\189\018m\166c/$\201" -"Rule: ocaml: ml -> cmo & cmi (%=src/progs/bool )": "m\2391\031\006\195\251\201\005z2\165\2515\181%" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Model )": "\236\222*\004\220\128m\t\194\215zi\206\144t\019" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Circuit.ml": "\217j\139\197\204\214\003\190\162\161\r&\021\135{\003" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Expression.ml": "\175 J\178!6\197\246N\231\031\029s\024E?" +"Rule: ocaml: ml -> cmo & cmi (%=src/progs/bool )": "\176\146\168p\247=H\219R2\220{\185HK<" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Model )": "\152\147P\255x\179\134\180;\031\179\171svd\012" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Debug.mli": "\b\143\0313\019Q\221\199\242\005 N\014\243\007\210" "Rule: ocaml dependencies ml (%=src/progs/bool )": "\210\199\147L\r\210\252tA\214\183D\027pMk" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/QBF.ml": "\156\178\195\253&\029\144r\147d\011\213\136\186I\137" "Rule: ocaml dependencies ml (%=src/Global )": "\190\186+u\185)\196.\"\168\194\150\239FQ\000" -"Rule: ocaml: mli -> cmi (%=src/Circuit )": "\\\186J!\021\219\219\178@\217'\245;\005\214G" +"Rule: ocaml: mli -> cmi (%=src/Circuit )": "\149\225\019\131.\183}\187\212\187x7\136\232Z\216" "Rule: ocaml dependencies ml (%=src/progs/BoolArgs )": "\253\171\237\175\212\169b\208G\212\196Vw\187Ai" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Circuit.mli": "\133\187\165\027G\159\018:\222O0\227\179\018\031\151" "Rule: ocaml dependencies ml (%=src/PropParser )": "z\191\017a+\153LZu\234\226\128\227\230h\186" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Global )": "\028\240\201\243\t\233\169k\151\201{\200\230\201Pp" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Global )": "\145\"\138\179\170\n&\222b\245)TF\174\019v" "Rule: ocaml dependencies ml (%=src/SymbolTable )": "4S;\137\223!\214\146\004\226\166j\247h\183\212" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/genqbf.ml": "n\014\240\171\170X\154\227\245zt>\141\128\185R" "Rule: ocaml dependencies mli (%=src/SymbolTable )": "l\177\224p\0311\030\001\1548c?\190\128\141\239" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Interface )": "\195\193\171'\153\182C\169\020$\000\242,V\227\149" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/ExprLexer.mll": "\b|W^c\189R*.\131\230\004\244,\020\188" -"Rule: ocaml: cmx* & o* -> native (%=src/progs/genqbf )": "\138\154T\249B\201\210\1946\150[`z\180\224B" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/PropLexer.mll": "\r17\207\166\002'w\202L\200;\205\234\227\209" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/BoolArgs.mli": "\199\166mBK\151o\152|\000WU\133L*S" -"Rule: ocaml: mli -> cmi (%=src/SymbolTable )": "\206_\240\228\185,n\156\145j\216*ec\005E" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Model.mli": "\213Dsg\133\203\001\016\154\180T\2499\002\231>" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Interface )": "=\222z\2491T\214\234\200q\156\1532#/\139" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Expression.mli": "\185\251\016\004\187G\201\028$d\149\203\211\219\028\143" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/SymbolTable.ml": "\020+\184\254\222\169\142\189\135\222\165\237\028\193\242\196" +"Rule: ocaml: cmx* & o* -> native (%=src/progs/genqbf )": "g9\1815`>\012\171nt\166\000t\149\t;" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Interface.ml": "\165\243\237\t\193\238\016\171\156\006\129\212M\243\137\029" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/bool.ml": ">P\220\219A\188\23556\182:\016\181z\023\192" +"Rule: ocaml: mli -> cmi (%=src/SymbolTable )": "&\141\127\171\142\233\210I\231\006,^_\015b1" "Rule: ocaml dependencies ml (%=src/PropLexer )": "v>*p\165\n\173\142\186hMR\215\219\127\222" "Rule: ocaml dependencies mli (%=src/Model )": "L\023\154\012\161\178R\215\186\144\160\205:[\251v" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/PropParser )": "\\\248\235\131\132\231\218+\165\181\159X\214\251'x" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/AIGER )": "\192\202\1995\147\146\212\162\204\225$\136\021#\209\"" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/PropParser )": "\171?\149\189\180\192\151\145\149\190\141\242\133G\133\207" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/GenArgs.mli": "\173\151\233\2236\188\210d#\197\147\232\255k0)" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/AIGER )": "\175lv\021u\189\170\240\138\241\137+\016q\b;" "Rule: ocaml dependencies ml (%=src/Debug )": "\195/C:DcV\"\164\253\187'\190\023\205Z" -"Rule: ocaml: ml -> cmo & cmi (%=src/ExprLexer )": "Al!mw3\180j\022\016_\146\242\001\235\014" +"Rule: ocaml: ml -> cmo & cmi (%=src/ExprLexer )": "=k%\225f\016\017\234\229\190\253\2392\137\154\026" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/TranslateArgs.mli": "\162%/<\245J\149\246\248\188\002\198\222\018\212\006" "Rule: ocaml dependencies mli (%=src/Expression )": "\nj\237I\224*\000T\223X+}\218/\226\157" "Rule: ocaml dependencies ml (%=src/Parser )": "|\229\164\205~\215\226wY>\218\129~\207\000\011" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/GenArgs )": "R\182f\217\n\205\234ain\156\250ei8\239" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Property.ml": "\007\231\186\223LW\002,\240W\145\167\2096H\202" -"Rule: ocaml: ml -> cmo & cmi (%=src/PropLexer )": "9+1\250\200\172\202+\209\164ly\255\188\166\196" -"Rule: ocaml: mli -> cmi (%=src/Global )": "\237\182k\031\004 cmx & o (%=src/progs/BoolArgs )": "\229\027y\011\143\231\127\145\031\142\164\002\166~\015r" -"Rule: ocaml: ml -> cmo & cmi (%=src/progs/genqbf )": "\195\150S2~_\233:#F\213\160wP\129\227" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Model.ml": "\021\020s\182\199\011SP?\183$9\132\243q\134" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/GenArgs )": "V\246\249m\163M\202\193zA\167=\204\155\198)" +"Rule: ocaml: ml -> cmo & cmi (%=src/PropLexer )": "\138\b\2306@\026)]\141\rkK\182\190\165\162" +"Rule: ocaml: mli -> cmi (%=src/Global )": "\r[>=,]\193g\207s\022%p\214W}" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/progs/BoolArgs )": "_\b\rjT\1526\168@vi\147=9\226\138" +"Rule: ocaml: ml -> cmo & cmi (%=src/progs/genqbf )": "\192\211h\211\181\141\006>\1917\025b6J\200\138" "Rule: ocaml dependencies ml (%=src/QBF )": "\024S\162 \223\022Z\249\026|=\018\234\024\253\134" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/TranslateArgs.ml": "\019+\147\220\152iE4\1936\212g&>m\252" "Rule: ocaml dependencies ml (%=src/Interface )": "\203@78dT\217|\231\178\192=3\1880\025" "Rule: ocaml dependencies mli (%=src/progs/BoolArgs )": "\166#\179\203I5\232\0266\152\245\134\160\240\003t" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Property.mli": "\007\231\186\223LW\002,\240W\145\167\2096H\202" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Global.mli": "\171q\018\130\028\199\002\163\187\201ft\141'\188S" "Rule: ocaml dependencies mli (%=src/Debug )": "\134\243\230\002+\197\"\148?\bh\162\197f\163\151" "Rule: ocaml dependencies mli (%=src/progs/GenArgs )": "<\023\19588[\205o&\231?\178\019\225\156G" -"Rule: ocaml: mli -> cmi (%=src/progs/TranslateArgs )": "\247l\166\1672\159\166\173+\029a2\148\005\214," -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/Property.mli": "\007\231\186\223LW\002,\240W\145\167\2096H\202" -"Rule: ocaml: ml -> cmo & cmi (%=src/progs/translate )": "\253\128:\212\132n(U\215\176u{g\160\150\156" +"Rule: ocaml: mli -> cmi (%=src/progs/TranslateArgs )": "E\226\138\238\141\005/Q\160\r]\159\149\255\182!" +"Rule: ocaml: ml -> cmo & cmi (%=src/progs/translate )": "\204\139H\240\223\235\243\007\221\235u\228\252\173eg" "Rule: ocaml dependencies ml (%=src/Property )": "^y\191(t\147\001F\172nZ\182\137\187\231>" "Rule: ocamllex (%=src/ExprLexer )": "et\209bAj\229q\132(\248\203\006\002i\211" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Expression )": "\202\003\024\230\144\184Y\192\001-\169a\019\1292\216" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Expression )": "\153\207\014\253\142\187\192Ce,c\143\212~\176V" "Rule: ocaml dependencies ml (%=src/Expression )": "[LzdsO\024\221]}\162\031\168\135\135\224" "Rule: ocaml dependencies ml (%=src/progs/GenArgs )": "\031'|O\129\014\023?\015\011j, \018'\025" -"Rule: ocaml: mli -> cmi (%=src/progs/GenArgs )": "\242\182w\218\143\188\182c8$\201\tZ\195U\189" -"Rule: ocaml: cmx* & o* -> native (%=src/progs/translate )": "\029@\157\007\007\156S\208\004\142z\177(\148\243\219" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/QBF.ml": "\156\178\195\253&\029\144r\147d\011\213\136\186I\137" -"Rule: ocaml: cmx* & o* -> native (%=src/progs/bool )": "Z\152\005\157,\206\2400\177\165\160\205\223\244Q\191" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/bool.ml": ">P\220\219A\188\23556\182:\016\181z\023\192" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/ExprParser.mly": "\232$\020W\230l\201\253\248\186(7\204\216Y\225" -"Rule: ocaml: mli -> cmi (%=src/PropParser )": "\171\019Z\r\251\r\245|\246+-\158\178`\157\150" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/Debug )": "n\153\2528\145Jvn\180\136\205\189z\204\231\181" +"Rule: ocaml: mli -> cmi (%=src/progs/GenArgs )": "Rq\019\151\2029\003\182\132\139\005'\171\204\014K" +"Rule: ocaml: cmx* & o* -> native (%=src/progs/translate )": "5\201\162\216l\242?S|\005JM\173w\026\187" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/SymbolTable.mli": "h\133\174\194\209\194>\000i\025\1665\232\193\253\228" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/PropParser.mly": "//\200\212\234y\025\193?\175n\132\137\177\142[" +"Rule: ocaml: cmx* & o* -> native (%=src/progs/bool )": "\137\012\173&\209B\187\198\222\181\225q;\n!\154" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/ExprLexer.mll": "\b|W^c\189R*.\131\230\004\244,\020\188" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Circuit.mli": "\133\187\165\027G\159\018:\222O0\227\179\018\031\151" +"Rule: ocaml: mli -> cmi (%=src/PropParser )": "\184o\014\166`\226\193x\237<|\223\021\250\144\206" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/AIGER.mli": "\198LU\2316u`[\171\238\018\137\007\177\"\016" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Parser.ml": "t\154\142DN\236~\019\024\185\246XG>.\005" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/Debug )": "\131i\016\200\147\243\160\020\244\151j\189h\197<\165" "Rule: ocaml dependencies ml (%=src/progs/genqbf )": "]N8\173!\139K{\135\198=\152S\243\247\242" "Rule: ocaml dependencies mli (%=src/progs/TranslateArgs )": "\149s\230\174\251wA:\218\189\213\189\005\215\130\025" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/Circuit.ml": "\217j\139\197\204\214\003\190\162\161\r&\021\135{\003" "Rule: ocaml dependencies ml (%=src/Circuit )": "\200U\218p\154j\225\192\212\1863z\237\147V\128" -"Rule: ocaml: ml & cmi -> cmx & o (%=src/PropLexer )": "c\165\240\254\021\164\129f\024/|\023>\127G\181" +"Rule: ocaml: ml & cmi -> cmx & o (%=src/PropLexer )": "=\213\002\203r\158\021=H7^\183\172TXY" "Rule: ocaml dependencies mli (%=src/PropParser )": "\025\210\208\012v\208\188y\158\166\194\248\246XFZ" "Rule: ocamllex (%=src/PropLexer )": "\167\199$O\026\168\139\1679\146\014\149e\207\149\\" -"Resource: /Users/tzuhan/+research/+active/project_hyperqube/tool_hyperqube/expression/src/progs/BoolArgs.ml": "\249\193\007\130\252\134\152\021\\\166^\188\216S\177B" +"Resource: /Users/tzuhan/+research/HyperQube/src/expression/src/progs/BoolArgs.mli": "\199\166mBK\151o\152|\000WU\133L*S" "Rule: ocaml dependencies ml (%=src/AIGER )": "\197\129\216J\139\210)!\143A\209\158D\140Z[" -"Rule: ocaml: ml -> cmo & cmi (%=src/Parser )": "\029t_2\150\174I\236\142\151QVV\181\238F" -"Rule: ocaml: mli -> cmi (%=src/progs/BoolArgs )": "\153\235\023\151\230\238w0\004\018\145/\207\247\202)" +"Rule: ocaml: ml -> cmo & cmi (%=src/Parser )": "4\189lHk\247\012!\142\215\227@\143\200\219*" +"Rule: ocaml: mli -> cmi (%=src/progs/BoolArgs )": "\149$g\211\189\149~\021\208\181p\182\255`\209\127" diff --git a/src/expression/_build/_log b/src/expression/_build/_log index c7ffb377..f2a262fd 100644 --- a/src/expression/_build/_log +++ b/src/expression/_build/_log @@ -1,143 +1,143 @@ ### Starting build. # Target: src/progs/genqbf.ml.depends, tags: { extension:ml, file:src/progs/genqbf.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/progs/genqbf.ml > src/progs/genqbf.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/progs/genqbf.ml > src/progs/genqbf.ml.depends # Target: src/AIGER.mli.depends, tags: { extension:mli, file:src/AIGER.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/AIGER.mli > src/AIGER.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/AIGER.mli > src/AIGER.mli.depends # Target: src/Circuit.mli.depends, tags: { extension:mli, file:src/Circuit.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Circuit.mli > src/Circuit.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Circuit.mli > src/Circuit.mli.depends # cached # Target: src/Expression.mli.depends, tags: { extension:mli, file:src/Expression.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Expression.mli > src/Expression.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Expression.mli > src/Expression.mli.depends # cached # Target: src/Expression.cmi, tags: { byte, compile, extension:mli, file:src/Expression.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Expression.cmi src/Expression.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Expression.cmi src/Expression.mli # cached # Target: src/Circuit.cmi, tags: { byte, compile, extension:mli, file:src/Circuit.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Circuit.cmi src/Circuit.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Circuit.cmi src/Circuit.mli # cached # Target: src/Debug.mli.depends, tags: { extension:mli, file:src/Debug.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Debug.mli > src/Debug.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Debug.mli > src/Debug.mli.depends # cached # Target: src/Debug.cmi, tags: { byte, compile, extension:mli, file:src/Debug.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Debug.cmi src/Debug.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Debug.cmi src/Debug.mli # cached # Target: src/ExprLexer.mll, tags: { extension:mll, file:src/ExprLexer.mll, include, lexer, ocaml, ocamllex, quiet } -ocamllex.opt -q src/ExprLexer.mll # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamllex.opt -q src/ExprLexer.mll # cached # Target: src/ExprLexer.ml.depends, tags: { extension:ml, file:src/ExprLexer.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/ExprLexer.ml > src/ExprLexer.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/ExprLexer.ml > src/ExprLexer.ml.depends # cached # Target: src/ExprParser.mly, tags: { extension:mly, file:src/ExprParser.mly, include, infer, ocaml, ocamlyacc, parser, quiet } -ocamlyacc src/ExprParser.mly # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlyacc src/ExprParser.mly # cached # Target: src/ExprParser.mli.depends, tags: { extension:mli, file:src/ExprParser.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/ExprParser.mli > src/ExprParser.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/ExprParser.mli > src/ExprParser.mli.depends # cached # Target: src/ExprParser.cmi, tags: { byte, compile, extension:mli, file:src/ExprParser.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/ExprParser.cmi src/ExprParser.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/ExprParser.cmi src/ExprParser.mli # cached # Target: src/Global.mli.depends, tags: { extension:mli, file:src/Global.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Global.mli > src/Global.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Global.mli > src/Global.mli.depends # cached # Target: src/Global.cmi, tags: { byte, compile, extension:mli, file:src/Global.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Global.cmi src/Global.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Global.cmi src/Global.mli # cached # Target: src/ExprLexer.cmo, tags: { byte, compile, extension:cmo, extension:ml, file:src/ExprLexer.cmo, file:src/ExprLexer.ml, implem, include, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/ExprLexer.cmo src/ExprLexer.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/ExprLexer.cmo src/ExprLexer.ml # cached # Target: src/progs/GenArgs.mli.depends, tags: { extension:mli, file:src/progs/GenArgs.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/progs/GenArgs.mli > src/progs/GenArgs.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/progs/GenArgs.mli > src/progs/GenArgs.mli.depends # Target: src/QBF.mli.depends, tags: { extension:mli, file:src/QBF.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/QBF.mli > src/QBF.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/QBF.mli > src/QBF.mli.depends # Target: src/Model.mli.depends, tags: { extension:mli, file:src/Model.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Model.mli > src/Model.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Model.mli > src/Model.mli.depends # Target: src/Property.mli.depends, tags: { extension:mli, file:src/Property.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Property.mli > src/Property.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Property.mli > src/Property.mli.depends # Target: src/Model.cmi, tags: { byte, compile, extension:mli, file:src/Model.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Model.cmi src/Model.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Model.cmi src/Model.mli # Target: src/Property.cmi, tags: { byte, compile, extension:mli, file:src/Property.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Property.cmi src/Property.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Property.cmi src/Property.mli # Target: src/QBF.cmi, tags: { byte, compile, extension:mli, file:src/QBF.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/QBF.cmi src/QBF.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/QBF.cmi src/QBF.mli # Target: src/Interface.mli.depends, tags: { extension:mli, file:src/Interface.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Interface.mli > src/Interface.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Interface.mli > src/Interface.mli.depends # cached # Target: src/Interface.cmi, tags: { byte, compile, extension:mli, file:src/Interface.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Interface.cmi src/Interface.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Interface.cmi src/Interface.mli # cached # Target: src/Parser.ml.depends, tags: { extension:ml, file:src/Parser.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Parser.ml > src/Parser.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Parser.ml > src/Parser.ml.depends # cached # Target: src/Parser.cmo, tags: { byte, compile, extension:cmo, extension:ml, file:src/Parser.cmo, file:src/Parser.ml, implem, include, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Parser.cmo src/Parser.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/Parser.cmo src/Parser.ml # cached # Target: src/PropLexer.mll, tags: { extension:mll, file:src/PropLexer.mll, include, lexer, ocaml, ocamllex, quiet } -ocamllex.opt -q src/PropLexer.mll +/Users/tzuhan/.opam/4.07.0/bin/ocamllex.opt -q src/PropLexer.mll # Target: src/PropLexer.ml.depends, tags: { extension:ml, file:src/PropLexer.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/PropLexer.ml > src/PropLexer.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/PropLexer.ml > src/PropLexer.ml.depends # Target: src/PropParser.mly, tags: { extension:mly, file:src/PropParser.mly, include, infer, ocaml, ocamlyacc, parser, quiet } -ocamlyacc src/PropParser.mly -+ ocamlyacc src/PropParser.mly +/Users/tzuhan/.opam/4.07.0/bin/ocamlyacc src/PropParser.mly ++ /Users/tzuhan/.opam/4.07.0/bin/ocamlyacc src/PropParser.mly 22 shift/reduce conflicts. # Target: src/PropParser.mli.depends, tags: { extension:mli, file:src/PropParser.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/PropParser.mli > src/PropParser.mli.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/PropParser.mli > src/PropParser.mli.depends # Target: src/PropParser.cmi, tags: { byte, compile, extension:mli, file:src/PropParser.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/PropParser.cmi src/PropParser.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/PropParser.cmi src/PropParser.mli # Target: src/AIGER.cmi, tags: { byte, compile, extension:mli, file:src/AIGER.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/AIGER.cmi src/AIGER.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/AIGER.cmi src/AIGER.mli # Target: src/progs/GenArgs.cmi, tags: { byte, compile, extension:mli, file:src/progs/GenArgs.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src/progs -I src -o src/progs/GenArgs.cmi src/progs/GenArgs.mli +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src/progs -I src -o src/progs/GenArgs.cmi src/progs/GenArgs.mli # Target: src/PropLexer.cmo, tags: { byte, compile, extension:cmo, extension:ml, file:src/PropLexer.cmo, file:src/PropLexer.ml, implem, include, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/PropLexer.cmo src/PropLexer.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/PropLexer.cmo src/PropLexer.ml # Target: src/progs/genqbf.cmo, tags: { byte, compile, extension:cmo, extension:ml, file:src/progs/genqbf.cmo, file:src/progs/genqbf.ml, implem, include, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src/progs -I src -o src/progs/genqbf.cmo src/progs/genqbf.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src/progs -I src -o src/progs/genqbf.cmo src/progs/genqbf.ml # Target: src/AIGER.ml.depends, tags: { extension:ml, file:src/AIGER.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/AIGER.ml > src/AIGER.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/AIGER.ml > src/AIGER.ml.depends # Target: src/Expression.ml.depends, tags: { extension:ml, file:src/Expression.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Expression.ml > src/Expression.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Expression.ml > src/Expression.ml.depends # cached # Target: src/Expression.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Expression.cmx, file:src/Expression.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Expression.cmx src/Expression.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Expression.cmx src/Expression.ml # cached # Target: src/SymbolTable.ml.depends, tags: { extension:ml, file:src/SymbolTable.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/SymbolTable.ml > src/SymbolTable.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/SymbolTable.ml > src/SymbolTable.ml.depends # cached # Target: src/SymbolTable.mli.depends, tags: { extension:mli, file:src/SymbolTable.mli, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/SymbolTable.mli > src/SymbolTable.mli.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/SymbolTable.mli > src/SymbolTable.mli.depends # cached # Target: src/SymbolTable.cmi, tags: { byte, compile, extension:mli, file:src/SymbolTable.mli, include, interf, ocaml, quiet } -ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/SymbolTable.cmi src/SymbolTable.mli # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlc.opt -c -w -4-32 -I src -I src/progs -o src/SymbolTable.cmi src/SymbolTable.mli # cached # Target: src/SymbolTable.cmx, tags: { compile, extension:cmx, extension:ml, file:src/SymbolTable.cmx, file:src/SymbolTable.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/SymbolTable.cmx src/SymbolTable.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/SymbolTable.cmx src/SymbolTable.ml # cached # Target: src/Circuit.ml.depends, tags: { extension:ml, file:src/Circuit.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Circuit.ml > src/Circuit.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Circuit.ml > src/Circuit.ml.depends # cached # Target: src/Circuit.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Circuit.cmx, file:src/Circuit.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Circuit.cmx src/Circuit.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Circuit.cmx src/Circuit.ml # cached # Target: src/Debug.ml.depends, tags: { extension:ml, file:src/Debug.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Debug.ml > src/Debug.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Debug.ml > src/Debug.ml.depends # cached # Target: src/Debug.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Debug.cmx, file:src/Debug.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Debug.cmx src/Debug.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Debug.cmx src/Debug.ml # cached # Target: src/ExprParser.ml.depends, tags: { extension:ml, file:src/ExprParser.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/ExprParser.ml > src/ExprParser.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/ExprParser.ml > src/ExprParser.ml.depends # cached # Target: src/Global.ml.depends, tags: { extension:ml, file:src/Global.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Global.ml > src/Global.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Global.ml > src/Global.ml.depends # cached # Target: src/Global.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Global.cmx, file:src/Global.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Global.cmx src/Global.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Global.cmx src/Global.ml # cached # Target: src/ExprParser.cmx, tags: { compile, extension:cmx, extension:ml, file:src/ExprParser.cmx, file:src/ExprParser.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/ExprParser.cmx src/ExprParser.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/ExprParser.cmx src/ExprParser.ml # cached # Target: src/ExprLexer.cmx, tags: { compile, extension:cmx, extension:ml, file:src/ExprLexer.cmx, file:src/ExprLexer.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/ExprLexer.cmx src/ExprLexer.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/ExprLexer.cmx src/ExprLexer.ml # cached # Target: src/progs/GenArgs.ml.depends, tags: { extension:ml, file:src/progs/GenArgs.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/progs/GenArgs.ml > src/progs/GenArgs.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/progs/GenArgs.ml > src/progs/GenArgs.ml.depends # Target: src/QBF.ml.depends, tags: { extension:ml, file:src/QBF.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/QBF.ml > src/QBF.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/QBF.ml > src/QBF.ml.depends # Target: src/Model.ml.depends, tags: { extension:ml, file:src/Model.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Model.ml > src/Model.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Model.ml > src/Model.ml.depends # Target: src/Property.ml.depends, tags: { extension:ml, file:src/Property.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Property.ml > src/Property.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Property.ml > src/Property.ml.depends # Target: src/Model.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Model.cmx, file:src/Model.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Model.cmx src/Model.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Model.cmx src/Model.ml # Target: src/Property.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Property.cmx, file:src/Property.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Property.cmx src/Property.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Property.cmx src/Property.ml # Target: src/QBF.cmx, tags: { compile, extension:cmx, extension:ml, file:src/QBF.cmx, file:src/QBF.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/QBF.cmx src/QBF.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/QBF.cmx src/QBF.ml # Target: src/Interface.ml.depends, tags: { extension:ml, file:src/Interface.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/Interface.ml > src/Interface.ml.depends # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/Interface.ml > src/Interface.ml.depends # cached # Target: src/Interface.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Interface.cmx, file:src/Interface.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Interface.cmx src/Interface.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Interface.cmx src/Interface.ml # cached # Target: src/Parser.cmx, tags: { compile, extension:cmx, extension:ml, file:src/Parser.cmx, file:src/Parser.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Parser.cmx src/Parser.ml # cached +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/Parser.cmx src/Parser.ml # cached # Target: src/PropParser.ml.depends, tags: { extension:ml, file:src/PropParser.ml, include, ocaml, ocamldep, quiet } -ocamldep.opt -modules src/PropParser.ml > src/PropParser.ml.depends +/Users/tzuhan/.opam/4.07.0/bin/ocamldep.opt -modules src/PropParser.ml > src/PropParser.ml.depends # Target: src/PropParser.cmx, tags: { compile, extension:cmx, extension:ml, file:src/PropParser.cmx, file:src/PropParser.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/PropParser.cmx src/PropParser.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/PropParser.cmx src/PropParser.ml # Target: src/AIGER.cmx, tags: { compile, extension:cmx, extension:ml, file:src/AIGER.cmx, file:src/AIGER.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/AIGER.cmx src/AIGER.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/AIGER.cmx src/AIGER.ml # Target: src/progs/GenArgs.cmx, tags: { compile, extension:cmx, extension:ml, file:src/progs/GenArgs.cmx, file:src/progs/GenArgs.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src/progs -I src -o src/progs/GenArgs.cmx src/progs/GenArgs.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src/progs -I src -o src/progs/GenArgs.cmx src/progs/GenArgs.ml # Target: src/PropLexer.cmx, tags: { compile, extension:cmx, extension:ml, file:src/PropLexer.cmx, file:src/PropLexer.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/PropLexer.cmx src/PropLexer.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src -I src/progs -o src/PropLexer.cmx src/PropLexer.ml # Target: src/progs/genqbf.cmx, tags: { compile, extension:cmx, extension:ml, file:src/progs/genqbf.cmx, file:src/progs/genqbf.ml, implem, include, native, ocaml, quiet } -ocamlopt.opt -c -w -4-32 -I src/progs -I src -o src/progs/genqbf.cmx src/progs/genqbf.ml +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt -c -w -4-32 -I src/progs -I src -o src/progs/genqbf.cmx src/progs/genqbf.ml # Target: src/progs/genqbf.native, tags: { dont_link_with, extension:native, file:src/progs/genqbf.native, include, link, native, ocaml, program, quiet } -ocamlopt.opt unix.cmxa str.cmxa -I src -I src/progs src/Expression.cmx src/SymbolTable.cmx src/AIGER.cmx src/Circuit.cmx src/Debug.cmx src/Global.cmx src/ExprParser.cmx src/ExprLexer.cmx src/Interface.cmx src/Model.cmx src/Parser.cmx src/Property.cmx src/PropParser.cmx src/PropLexer.cmx src/QBF.cmx src/progs/GenArgs.cmx src/progs/genqbf.cmx -o src/progs/genqbf.native +/Users/tzuhan/.opam/4.07.0/bin/ocamlopt.opt unix.cmxa str.cmxa -I src -I src/progs src/Expression.cmx src/SymbolTable.cmx src/AIGER.cmx src/Circuit.cmx src/Debug.cmx src/Global.cmx src/ExprParser.cmx src/ExprLexer.cmx src/Interface.cmx src/Model.cmx src/Parser.cmx src/Property.cmx src/PropParser.cmx src/PropLexer.cmx src/QBF.cmx src/progs/GenArgs.cmx src/progs/genqbf.cmx -o src/progs/genqbf.native # Parallel statistics: { count(total): 4(64), max: 3, min: 2, average(total): 2.500(1.094) } # Compilation successful. diff --git a/src/expression/_build/ocamlc.where b/src/expression/_build/ocamlc.where index 8fd78cc7..96afd0dc 100644 --- a/src/expression/_build/ocamlc.where +++ b/src/expression/_build/ocamlc.where @@ -1 +1 @@ -/usr/local/lib/ocaml +/Users/tzuhan/.opam/4.07.0/lib/ocaml diff --git a/src/expression/_build/src/AIGER.cmi b/src/expression/_build/src/AIGER.cmi index 9f4cb10d..39dcd72f 100644 Binary files a/src/expression/_build/src/AIGER.cmi and b/src/expression/_build/src/AIGER.cmi differ diff --git a/src/expression/_build/src/AIGER.cmx b/src/expression/_build/src/AIGER.cmx index 4d78cb5e..54990673 100644 Binary files a/src/expression/_build/src/AIGER.cmx and b/src/expression/_build/src/AIGER.cmx differ diff --git a/src/expression/_build/src/AIGER.o b/src/expression/_build/src/AIGER.o index 97c969cd..7f8bf1d6 100644 Binary files a/src/expression/_build/src/AIGER.o and b/src/expression/_build/src/AIGER.o differ diff --git a/src/expression/_build/src/Circuit.cmi b/src/expression/_build/src/Circuit.cmi index 6a70cf05..6d1dbe21 100644 Binary files a/src/expression/_build/src/Circuit.cmi and b/src/expression/_build/src/Circuit.cmi differ diff --git a/src/expression/_build/src/Circuit.cmx b/src/expression/_build/src/Circuit.cmx index 13063dcf..e2075307 100644 Binary files a/src/expression/_build/src/Circuit.cmx and b/src/expression/_build/src/Circuit.cmx differ diff --git a/src/expression/_build/src/Circuit.o b/src/expression/_build/src/Circuit.o index 22866943..eb7ee586 100644 Binary files a/src/expression/_build/src/Circuit.o and b/src/expression/_build/src/Circuit.o differ diff --git a/src/expression/_build/src/Debug.cmi b/src/expression/_build/src/Debug.cmi index 232dfb54..5724b498 100644 Binary files a/src/expression/_build/src/Debug.cmi and b/src/expression/_build/src/Debug.cmi differ diff --git a/src/expression/_build/src/Debug.cmx b/src/expression/_build/src/Debug.cmx index 23d0afb4..1de45548 100644 Binary files a/src/expression/_build/src/Debug.cmx and b/src/expression/_build/src/Debug.cmx differ diff --git a/src/expression/_build/src/Debug.o b/src/expression/_build/src/Debug.o index d47b0eee..ec8e839a 100644 Binary files a/src/expression/_build/src/Debug.o and b/src/expression/_build/src/Debug.o differ diff --git a/src/expression/_build/src/ExprLexer.cmi b/src/expression/_build/src/ExprLexer.cmi index 8ef68839..d4c0d8a6 100644 Binary files a/src/expression/_build/src/ExprLexer.cmi and b/src/expression/_build/src/ExprLexer.cmi differ diff --git a/src/expression/_build/src/ExprLexer.cmo b/src/expression/_build/src/ExprLexer.cmo index eb6e02bd..bfc97153 100644 Binary files a/src/expression/_build/src/ExprLexer.cmo and b/src/expression/_build/src/ExprLexer.cmo differ diff --git a/src/expression/_build/src/ExprLexer.cmx b/src/expression/_build/src/ExprLexer.cmx index e3798c1c..d4c8d1a4 100644 Binary files a/src/expression/_build/src/ExprLexer.cmx and b/src/expression/_build/src/ExprLexer.cmx differ diff --git a/src/expression/_build/src/ExprLexer.o b/src/expression/_build/src/ExprLexer.o index 5fa8ecfd..9f9f6157 100644 Binary files a/src/expression/_build/src/ExprLexer.o and b/src/expression/_build/src/ExprLexer.o differ diff --git a/src/expression/_build/src/ExprParser.cmi b/src/expression/_build/src/ExprParser.cmi index a611a30a..908f6d08 100644 Binary files a/src/expression/_build/src/ExprParser.cmi and b/src/expression/_build/src/ExprParser.cmi differ diff --git a/src/expression/_build/src/ExprParser.cmx b/src/expression/_build/src/ExprParser.cmx index 157f2bd0..a08feb28 100644 Binary files a/src/expression/_build/src/ExprParser.cmx and b/src/expression/_build/src/ExprParser.cmx differ diff --git a/src/expression/_build/src/ExprParser.o b/src/expression/_build/src/ExprParser.o index 10029397..12f15b14 100644 Binary files a/src/expression/_build/src/ExprParser.o and b/src/expression/_build/src/ExprParser.o differ diff --git a/src/expression/_build/src/Expression.cmi b/src/expression/_build/src/Expression.cmi index a71bd911..261b33c2 100644 Binary files a/src/expression/_build/src/Expression.cmi and b/src/expression/_build/src/Expression.cmi differ diff --git a/src/expression/_build/src/Expression.cmx b/src/expression/_build/src/Expression.cmx index 5aae7a2c..da82dbd4 100644 Binary files a/src/expression/_build/src/Expression.cmx and b/src/expression/_build/src/Expression.cmx differ diff --git a/src/expression/_build/src/Expression.o b/src/expression/_build/src/Expression.o index a74e25b7..c71c61ca 100644 Binary files a/src/expression/_build/src/Expression.o and b/src/expression/_build/src/Expression.o differ diff --git a/src/expression/_build/src/Global.cmi b/src/expression/_build/src/Global.cmi index d374d551..37e48190 100644 Binary files a/src/expression/_build/src/Global.cmi and b/src/expression/_build/src/Global.cmi differ diff --git a/src/expression/_build/src/Global.cmx b/src/expression/_build/src/Global.cmx index a70beb83..aa55b219 100644 Binary files a/src/expression/_build/src/Global.cmx and b/src/expression/_build/src/Global.cmx differ diff --git a/src/expression/_build/src/Global.o b/src/expression/_build/src/Global.o index eca9acd9..be4d643e 100644 Binary files a/src/expression/_build/src/Global.o and b/src/expression/_build/src/Global.o differ diff --git a/src/expression/_build/src/Interface.cmi b/src/expression/_build/src/Interface.cmi index 7b4743fd..4199ce0d 100644 Binary files a/src/expression/_build/src/Interface.cmi and b/src/expression/_build/src/Interface.cmi differ diff --git a/src/expression/_build/src/Interface.cmx b/src/expression/_build/src/Interface.cmx index 89e34a16..c4891b7c 100644 Binary files a/src/expression/_build/src/Interface.cmx and b/src/expression/_build/src/Interface.cmx differ diff --git a/src/expression/_build/src/Interface.o b/src/expression/_build/src/Interface.o index 25940f3c..973884dc 100644 Binary files a/src/expression/_build/src/Interface.o and b/src/expression/_build/src/Interface.o differ diff --git a/src/expression/_build/src/Model.cmi b/src/expression/_build/src/Model.cmi index 0f0e2645..9b3c4b57 100644 Binary files a/src/expression/_build/src/Model.cmi and b/src/expression/_build/src/Model.cmi differ diff --git a/src/expression/_build/src/Model.cmx b/src/expression/_build/src/Model.cmx index 47913862..610dda9b 100644 Binary files a/src/expression/_build/src/Model.cmx and b/src/expression/_build/src/Model.cmx differ diff --git a/src/expression/_build/src/Model.o b/src/expression/_build/src/Model.o index b38670be..15623e15 100644 Binary files a/src/expression/_build/src/Model.o and b/src/expression/_build/src/Model.o differ diff --git a/src/expression/_build/src/Parser.cmi b/src/expression/_build/src/Parser.cmi index 7398150c..1d1fa45b 100644 Binary files a/src/expression/_build/src/Parser.cmi and b/src/expression/_build/src/Parser.cmi differ diff --git a/src/expression/_build/src/Parser.cmo b/src/expression/_build/src/Parser.cmo index cbb56e4a..1d3cbe9f 100644 Binary files a/src/expression/_build/src/Parser.cmo and b/src/expression/_build/src/Parser.cmo differ diff --git a/src/expression/_build/src/Parser.cmx b/src/expression/_build/src/Parser.cmx index 4b03a92c..0a235f10 100644 Binary files a/src/expression/_build/src/Parser.cmx and b/src/expression/_build/src/Parser.cmx differ diff --git a/src/expression/_build/src/Parser.o b/src/expression/_build/src/Parser.o index 4b83ef9e..bfedf292 100644 Binary files a/src/expression/_build/src/Parser.o and b/src/expression/_build/src/Parser.o differ diff --git a/src/expression/_build/src/PropLexer.cmi b/src/expression/_build/src/PropLexer.cmi index 96e6a7ff..eee3b0d5 100644 Binary files a/src/expression/_build/src/PropLexer.cmi and b/src/expression/_build/src/PropLexer.cmi differ diff --git a/src/expression/_build/src/PropLexer.cmo b/src/expression/_build/src/PropLexer.cmo index 8c9b9866..9116f7d0 100644 Binary files a/src/expression/_build/src/PropLexer.cmo and b/src/expression/_build/src/PropLexer.cmo differ diff --git a/src/expression/_build/src/PropLexer.cmx b/src/expression/_build/src/PropLexer.cmx index 527c1c9a..9a9670ec 100644 Binary files a/src/expression/_build/src/PropLexer.cmx and b/src/expression/_build/src/PropLexer.cmx differ diff --git a/src/expression/_build/src/PropLexer.o b/src/expression/_build/src/PropLexer.o index b7c93f37..6940ee89 100644 Binary files a/src/expression/_build/src/PropLexer.o and b/src/expression/_build/src/PropLexer.o differ diff --git a/src/expression/_build/src/PropParser.cmi b/src/expression/_build/src/PropParser.cmi index db9c494c..1c900b01 100644 Binary files a/src/expression/_build/src/PropParser.cmi and b/src/expression/_build/src/PropParser.cmi differ diff --git a/src/expression/_build/src/PropParser.cmx b/src/expression/_build/src/PropParser.cmx index c516f595..dcf7f7f3 100644 Binary files a/src/expression/_build/src/PropParser.cmx and b/src/expression/_build/src/PropParser.cmx differ diff --git a/src/expression/_build/src/PropParser.o b/src/expression/_build/src/PropParser.o index a1098bb3..3cf78986 100644 Binary files a/src/expression/_build/src/PropParser.o and b/src/expression/_build/src/PropParser.o differ diff --git a/src/expression/_build/src/Property.cmi b/src/expression/_build/src/Property.cmi index e2161ef8..3bc7f0ec 100644 Binary files a/src/expression/_build/src/Property.cmi and b/src/expression/_build/src/Property.cmi differ diff --git a/src/expression/_build/src/Property.cmx b/src/expression/_build/src/Property.cmx index 3baa9928..d8ee4f79 100644 Binary files a/src/expression/_build/src/Property.cmx and b/src/expression/_build/src/Property.cmx differ diff --git a/src/expression/_build/src/Property.o b/src/expression/_build/src/Property.o index 29c3c7c2..5abf8a12 100644 Binary files a/src/expression/_build/src/Property.o and b/src/expression/_build/src/Property.o differ diff --git a/src/expression/_build/src/QBF.cmi b/src/expression/_build/src/QBF.cmi index e44348e7..a052d6e5 100644 Binary files a/src/expression/_build/src/QBF.cmi and b/src/expression/_build/src/QBF.cmi differ diff --git a/src/expression/_build/src/QBF.cmx b/src/expression/_build/src/QBF.cmx index b4753fc4..a1693013 100644 Binary files a/src/expression/_build/src/QBF.cmx and b/src/expression/_build/src/QBF.cmx differ diff --git a/src/expression/_build/src/QBF.o b/src/expression/_build/src/QBF.o index d60cce57..292a1453 100644 Binary files a/src/expression/_build/src/QBF.o and b/src/expression/_build/src/QBF.o differ diff --git a/src/expression/_build/src/SymbolTable.cmi b/src/expression/_build/src/SymbolTable.cmi index 2af6caa1..3c03b070 100644 Binary files a/src/expression/_build/src/SymbolTable.cmi and b/src/expression/_build/src/SymbolTable.cmi differ diff --git a/src/expression/_build/src/SymbolTable.cmx b/src/expression/_build/src/SymbolTable.cmx index 187a230f..163aea96 100644 Binary files a/src/expression/_build/src/SymbolTable.cmx and b/src/expression/_build/src/SymbolTable.cmx differ diff --git a/src/expression/_build/src/SymbolTable.o b/src/expression/_build/src/SymbolTable.o index de7d6190..05978793 100644 Binary files a/src/expression/_build/src/SymbolTable.o and b/src/expression/_build/src/SymbolTable.o differ diff --git a/src/expression/_build/src/progs/BoolArgs.cmi b/src/expression/_build/src/progs/BoolArgs.cmi index 9c5ba43c..c107774b 100644 Binary files a/src/expression/_build/src/progs/BoolArgs.cmi and b/src/expression/_build/src/progs/BoolArgs.cmi differ diff --git a/src/expression/_build/src/progs/BoolArgs.cmx b/src/expression/_build/src/progs/BoolArgs.cmx index 0089d6f5..af03c719 100644 Binary files a/src/expression/_build/src/progs/BoolArgs.cmx and b/src/expression/_build/src/progs/BoolArgs.cmx differ diff --git a/src/expression/_build/src/progs/BoolArgs.o b/src/expression/_build/src/progs/BoolArgs.o index fafd9d0f..ed10b7a7 100644 Binary files a/src/expression/_build/src/progs/BoolArgs.o and b/src/expression/_build/src/progs/BoolArgs.o differ diff --git a/src/expression/_build/src/progs/GenArgs.cmi b/src/expression/_build/src/progs/GenArgs.cmi index a1b1e3b1..ca8945df 100644 Binary files a/src/expression/_build/src/progs/GenArgs.cmi and b/src/expression/_build/src/progs/GenArgs.cmi differ diff --git a/src/expression/_build/src/progs/GenArgs.cmx b/src/expression/_build/src/progs/GenArgs.cmx index 057ce849..b0c0dd50 100644 Binary files a/src/expression/_build/src/progs/GenArgs.cmx and b/src/expression/_build/src/progs/GenArgs.cmx differ diff --git a/src/expression/_build/src/progs/GenArgs.o b/src/expression/_build/src/progs/GenArgs.o index f6491958..53bb9ec4 100644 Binary files a/src/expression/_build/src/progs/GenArgs.o and b/src/expression/_build/src/progs/GenArgs.o differ diff --git a/src/expression/_build/src/progs/TranslateArgs.cmi b/src/expression/_build/src/progs/TranslateArgs.cmi index ea3cabd7..fb91d339 100644 Binary files a/src/expression/_build/src/progs/TranslateArgs.cmi and b/src/expression/_build/src/progs/TranslateArgs.cmi differ diff --git a/src/expression/_build/src/progs/TranslateArgs.cmx b/src/expression/_build/src/progs/TranslateArgs.cmx index 37d58438..b1b2f385 100644 Binary files a/src/expression/_build/src/progs/TranslateArgs.cmx and b/src/expression/_build/src/progs/TranslateArgs.cmx differ diff --git a/src/expression/_build/src/progs/TranslateArgs.o b/src/expression/_build/src/progs/TranslateArgs.o index c5b7f689..7f036566 100644 Binary files a/src/expression/_build/src/progs/TranslateArgs.o and b/src/expression/_build/src/progs/TranslateArgs.o differ diff --git a/src/expression/_build/src/progs/bool.cmi b/src/expression/_build/src/progs/bool.cmi index df79d84c..bb41d016 100644 Binary files a/src/expression/_build/src/progs/bool.cmi and b/src/expression/_build/src/progs/bool.cmi differ diff --git a/src/expression/_build/src/progs/bool.cmo b/src/expression/_build/src/progs/bool.cmo index d7064d76..8a78688e 100644 Binary files a/src/expression/_build/src/progs/bool.cmo and b/src/expression/_build/src/progs/bool.cmo differ diff --git a/src/expression/_build/src/progs/bool.cmx b/src/expression/_build/src/progs/bool.cmx index dcd9502f..0c22dc6d 100644 Binary files a/src/expression/_build/src/progs/bool.cmx and b/src/expression/_build/src/progs/bool.cmx differ diff --git a/src/expression/_build/src/progs/bool.native b/src/expression/_build/src/progs/bool.native index 85b67da7..c91b8b5c 100755 Binary files a/src/expression/_build/src/progs/bool.native and b/src/expression/_build/src/progs/bool.native differ diff --git a/src/expression/_build/src/progs/bool.o b/src/expression/_build/src/progs/bool.o index 1f1ee695..85b884e2 100644 Binary files a/src/expression/_build/src/progs/bool.o and b/src/expression/_build/src/progs/bool.o differ diff --git a/src/expression/_build/src/progs/genqbf.cmi b/src/expression/_build/src/progs/genqbf.cmi index f43b9bdb..fdd6b289 100644 Binary files a/src/expression/_build/src/progs/genqbf.cmi and b/src/expression/_build/src/progs/genqbf.cmi differ diff --git a/src/expression/_build/src/progs/genqbf.cmo b/src/expression/_build/src/progs/genqbf.cmo index 7bdd6a3a..1e3aa626 100644 Binary files a/src/expression/_build/src/progs/genqbf.cmo and b/src/expression/_build/src/progs/genqbf.cmo differ diff --git a/src/expression/_build/src/progs/genqbf.cmx b/src/expression/_build/src/progs/genqbf.cmx index 5421367d..7f6a10bb 100644 Binary files a/src/expression/_build/src/progs/genqbf.cmx and b/src/expression/_build/src/progs/genqbf.cmx differ diff --git a/src/expression/_build/src/progs/genqbf.native b/src/expression/_build/src/progs/genqbf.native index 5ae51804..4673c198 100755 Binary files a/src/expression/_build/src/progs/genqbf.native and b/src/expression/_build/src/progs/genqbf.native differ diff --git a/src/expression/_build/src/progs/genqbf.o b/src/expression/_build/src/progs/genqbf.o index f947b33e..ea802550 100644 Binary files a/src/expression/_build/src/progs/genqbf.o and b/src/expression/_build/src/progs/genqbf.o differ diff --git a/src/expression/_build/src/progs/translate.cmi b/src/expression/_build/src/progs/translate.cmi index d4d13063..ce82cae5 100644 Binary files a/src/expression/_build/src/progs/translate.cmi and b/src/expression/_build/src/progs/translate.cmi differ diff --git a/src/expression/_build/src/progs/translate.cmo b/src/expression/_build/src/progs/translate.cmo index 5bde591c..6a9111e0 100644 Binary files a/src/expression/_build/src/progs/translate.cmo and b/src/expression/_build/src/progs/translate.cmo differ diff --git a/src/expression/_build/src/progs/translate.cmx b/src/expression/_build/src/progs/translate.cmx index 0aafe521..6c21e89e 100644 Binary files a/src/expression/_build/src/progs/translate.cmx and b/src/expression/_build/src/progs/translate.cmx differ diff --git a/src/expression/_build/src/progs/translate.native b/src/expression/_build/src/progs/translate.native index 072b5a92..605ceb8f 100755 Binary files a/src/expression/_build/src/progs/translate.native and b/src/expression/_build/src/progs/translate.native differ diff --git a/src/expression/_build/src/progs/translate.o b/src/expression/_build/src/progs/translate.o index 861b68c0..3ec167b6 100644 Binary files a/src/expression/_build/src/progs/translate.o and b/src/expression/_build/src/progs/translate.o differ diff --git a/src/expression/bin/bool b/src/expression/bin/bool index 85b67da7..c91b8b5c 100755 Binary files a/src/expression/bin/bool and b/src/expression/bin/bool differ diff --git a/src/expression/bin/genqbf b/src/expression/bin/genqbf index 5ae51804..4673c198 100755 Binary files a/src/expression/bin/genqbf and b/src/expression/bin/genqbf differ diff --git a/src/expression/bin/translate b/src/expression/bin/translate index 072b5a92..605ceb8f 100755 Binary files a/src/expression/bin/translate and b/src/expression/bin/translate differ diff --git a/src/expression/src/Expression.mli b/src/expression/src/Expression.mli index 917ef1ae..8966f4b6 100644 --- a/src/expression/src/Expression.mli +++ b/src/expression/src/Expression.mli @@ -6,19 +6,19 @@ type ident = string type literal = | Atom of variable | NegAtom of variable - + type expression = True | False | Literal of literal | Neg of expression | Or of expression * expression -| MOr of expression list +| MOr of expression list | And of expression * expression | MAnd of expression list | Implies of expression * expression | Iff of expression * expression - + type disjunctive_formula = FalseDisj | TrueDisj @@ -40,7 +40,7 @@ type quantifier = | Exists of variable list type quantified_expression = (quantifier list) * expression - + type quantified_formula = (quantifier list) * formula @@ -49,7 +49,7 @@ type quantified_formula = (quantifier list) * formula val build_and : formula -> formula -> formula val build_or : formula -> formula -> formula val build_implies : formula -> formula -> formula - + val nnf: expression -> expression val nnf_fast: expression -> expression val cnf: expression -> disjunctive_formula list @@ -59,20 +59,20 @@ val nnf_formula: formula -> formula val nnf_formula_fast: formula -> formula val cnf_formula: formula -> formula val dnf_formula: formula -> formula - - + + val simplify_formula : formula -> formula -val formula_to_expression : formula -> expression - +val formula_to_expression : formula -> expression + (* PRINTING FUNCTIONS *) val literal_to_str : literal -> string val conjunctive_formula_to_str : conjunctive_formula -> string val disjunctive_formula_to_str : disjunctive_formula -> string val expression_to_str : expression -> string val formula_to_str : formula -> string - + (* OUTPUT FUNCTIONS *) val fprint_literal : out_channel -> literal -> unit @@ -80,12 +80,12 @@ val fprint_conjunctive_formula : out_channel -> conjunctive_formula -> unit val fprint_disjunctive_formula : out_channel -> disjunctive_formula -> unit val fprint_expression : out_channel -> expression -> unit val fprint_formula : out_channel -> formula -> unit - + val get_vars : formula -> variable list val get_vars_expr : expression -> variable list val get_vars_disjunctive_formula : disjunctive_formula -> variable list val get_vars_conjunctive_formula : conjunctive_formula -> variable list - + val size : formula -> int -val size_expr : expression -> int +val size_expr : expression -> int diff --git a/exec/single_model_parser.py b/src/utilities/single_model_parser.py similarity index 95% rename from exec/single_model_parser.py rename to src/utilities/single_model_parser.py index 7bbf6e20..cf94acbd 100644 --- a/exec/single_model_parser.py +++ b/src/utilities/single_model_parser.py @@ -283,21 +283,20 @@ def format_trans(tr): ######################### smv_file_name = sys.argv[1] fomula_file_name = sys.argv[2] - parsed_model_file_I_name = sys.argv[3] parsed_model_file_R_name = sys.argv[4] translated_formula_file_name = sys.argv[5] - +QS_file_name = sys.argv[6] FLAG = "" -if(len(sys.argv)==7): - FLAG = sys.argv[6] +if(len(sys.argv)==8): + FLAG = sys.argv[7] To_Negate_formula=(FLAG=="" or FLAG=="-bughunt") -print("\n============ Read SMV Model ============") +print("\n=== Read SMV Model ===") ######################### # Model Initialization # ######################### @@ -310,9 +309,9 @@ def format_trans(tr): print("\n[ success! SMV model accepted. ]") # ### DEBUG -# print("====================================") +# print("=========") # print("FSM Model info:") -print("\n============ Parse SMV Model ============") +print("\n=== Parse SMV Model ===") state_variables = list(enc.stateVars) # print("All variables: ") @@ -483,12 +482,13 @@ def gen_R(): # generating files for genQBF gen_I() gen_R() -print("\n[ success! SMV model parsed into Boolean Expressions: " + parsed_model_file_I_name + parsed_model_file_R_name+"]") +print("\n[ success! SMV model parsed into Boolean Expressions. ]") +# print("\n[ success! SMV model parsed into Boolean Expressions. " + parsed_model_file_I_name + parsed_model_file_R_name+"]") ################################## # HyperLTL Formula Construction # ################################## -print("\n============ Translate HyperLTL Formula ============") +print("\n=== Translate HyperLTL Formula ===") text = "" file = open(fomula_file_name, 'r') Lines = file.readlines() @@ -502,9 +502,9 @@ def gen_R(): ## detect the optional flag if (FLAG == "-bughunt"): - print("(**detect -bughunt flag, formula negated.)\n") + print("(detect -bughunt flag, formula negated.)\n") elif (FLAG == "-find"): - print("(**detect -find flag, use original formula.)\n") + print("(detect -find flag, use original formula.)\n") else: print("(**no optional flag detected, perform BMC with negated formula.\n") @@ -577,7 +577,6 @@ def gen_R(): print("[ !!! HyperQube error: arithmetic comparison is not correctly constructed. Use '=' or '!=' to connect two numerical variables. ]") quit() - # print(vars[0]) var_l = str(vars[0]).rsplit('_', 1) var_r = str(vars[1]).rsplit('_', 1) @@ -637,7 +636,7 @@ def gen_R(): print("[ error: invald format of quantifiers and path variables. ]") print("correct format {exists, forall} {var1_name}. {exists, forall} {var2_name}. ") -QS = open("QS.bool", "w") +QS = open(QS_file_name, "w") QS.write(Quants) QS.close() # clea up quantifiers @@ -656,7 +655,7 @@ def gen_R(): text= "~("+ text + ")" ### finally -print("formula translated into Boolean representation: \n" + Quants + ", " + text) +# print("formula translated into Boolean representation: \n" + Quants + ", " + text) def gen_P(): ## write to R_bool file @@ -665,4 +664,5 @@ def gen_P(): P_bool.close() gen_P() -print("[ success! input formula translated into Boolean Expressions: test_P.bool ]") +# print("[ success! input formula translated into Boolean Expressions: test_P.bool ]") +print("[ success! input formula translated into Boolean Expressions.]") diff --git a/temp.key b/temp.key new file mode 100755 index 00000000..f3b039ae Binary files /dev/null and b/temp.key differ diff --git a/test.qcir b/test.qcir new file mode 100644 index 00000000..e69de29b diff --git a/test.sh b/test.sh new file mode 100755 index 00000000..b6d289b6 --- /dev/null +++ b/test.sh @@ -0,0 +1,110 @@ +#!/bin/bash +TIMEFORMAT="%Rs" +GENQBF=src/expression/bin/genqbf # classic 1 quants +# I=test/I.bool +# R=test/R.bool +# J=test/I.bool +# S=test/R.bool +# P=test/P.hq +# k=1 +# QS='EE' +# SEM='PES' +# QCIR_OUT=test/HQ.qcir +# time ${GENQBF} -I ${I} -R ${R} -J ${J} -S ${S} -P ${P} -k ${k} -F ${QS} -f qcir -o ${QCIR_OUT} -sem ${SEM} -n --fast + + + + +AUTOHYPER='/Users/tzuhan/install/autohyper/app/AutoHyper' + +# case 1: +# SMV='cases_compare/NI_v1.smv' +# HQ='cases_compare/NI_f1.hq' +# HQAUTO='cases_compare/NI_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${HQ} 3 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + + +# case 2: input non-determinism (overhead: inclusion check) +# SMV='cases_compare/NI_v2.smv' +# HQ='cases_compare/NI_f1.hq' +# HQAUTO='cases_compare/NI_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${HQ} 3 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + + +# case 3: transition non-determinism (overhead: inclusion check) +# SMV='cases_compare/NI_v3.smv' +# HQ='cases_compare/NI_f1.hq' +# HQAUTO='cases_compare/NI_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${HQ} 4 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + + +# Adversarial Planning 3x3: +# SMV='cases_compare/adv_v1.smv' +# HQ='cases_compare/adv_f1.hq' +# HQAUTO='cases_compare/adv_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${HQ} 5 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + + +# Adversarial Planning 4x4 (overhead: inclusion checking) +# SMV='cases_compare/adv_v2.smv' +# HQ='cases_compare/adv_f1.hq' +# HQAUTO='cases_compare/adv_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${HQ} 5 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + + +# Deniability small: (overhead: on product construction) +# SMV='cases_compare/den_small.smv' +# HQ='cases_compare/den_f1.hq' +# HQAUTO='cases_compare/den_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${SMV} ${HQ} 7 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + +# Deniability: +# SMV='cases_compare/den.smv' +# HQ='cases_compare/den_f1.hq' +# HQAUTO='cases_compare/den_f2.hq' +# time ./hyperqb.sh ${SMV} ${SMV} ${SMV} ${HQ} 7 -pes -find +# echo "" +# echo "------(AutoHyper Starts)------" +# time ${AUTOHYPER} -nusmv ${SMV} ${HQAUTO} -v 4 + +# Mappying Synthesis - examples +SMV_A='cases_compare/msynth_MA.smv' +SMV_B='cases_compare/msynth_MB.smv' +SMV_M='cases_compare/msynth_MM.smv' +HQ='cases_compare/msynth_f1.hq' +HQAUTO='cases_compare/msynth_f2.hq' +time ./hyperqb.sh ${SMV_M} ${SMV_A} ${SMV_B} ${SMV_A} ${SMV_B} ${HQ} 5 -pes -find +echo "" +echo "------(AutoHyper Starts)------" +time ${AUTOHYPER} -nusmv ${SMV_M} ${SMV_A} ${SMV_B} ${SMV_A} ${SMV_B} ${HQAUTO} -v 4 + + +# Mappying Synthesis - Alice and Bob with non-interference +SMV_A='cases_compare/msynth1_MA.smv' +SMV_B='cases_compare/msynth1_MB.smv' +SMV_M='cases_compare/msynth1_MM.smv' +HQ='cases_compare/msynth1_f1.hq' +HQAUTO='cases_compare/msynth1_f2.hq' +# echo "HyperQB total time: " +time ./hyperqb.sh ${SMV_M} ${SMV_A} ${SMV_B} ${SMV_A} ${SMV_B} ${HQ} 8 -pes -find +echo "" +echo "------(AutoHyper Starts)------" +time ${AUTOHYPER} -nusmv ${SMV_M} ${SMV_A} ${SMV_B} ${SMV_A} ${SMV_B} ${HQAUTO} -v 4 diff --git a/test/HQ.qcir b/test/HQ.qcir new file mode 100644 index 00000000..852b4cc7 --- /dev/null +++ b/test/HQ.qcir @@ -0,0 +1,16009 @@ +#QCIR-G14 +exists(3056, 7057, 3725, 7726, 2045, 6046, 3882, 7883, 1798, 5799, 2874, 6875, 1722, 5723, 1634, 5635, 2292, 6293, 63, 4064, 2718, 6719, 297, 4298, 2196, 6197, 2418, 6419, 99, 4100, 2520, 6521, 523, 4524, 1203, 5204, 252, 4253, 3403, 7404, 3033, 7034, 332, 4333, 664, 4665, 21, 4022, 3141, 7142, 3562, 7563, 534, 4535, 2739, 6740, 1547, 5548, 3477, 7478, 3499, 7500, 3252, 7253, 2062, 6063, 111, 4112, 3370, 7371, 597, 4598, 2580, 6581, 3431, 7432, 1804, 5805, 2494, 6495, 1746, 5747, 1413, 5414, 1563, 5564, 454, 4455, 267, 4268, 735, 4736, 2456, 6457, 1161, 5162, 2201, 6202, 3086, 7087, 3171, 7172, 3459, 7460, 1680, 5681, 1328, 5329, 3575, 7576, 2802, 6803, 884, 4885, 1927, 5928, 3026, 7027, 920, 4921, 3142, 7143, 3322, 7323, 621, 4622, 982, 4983, 656, 4657, 3068, 7069, 2623, 6624, 3890, 7891, 750, 4751, 1052, 5053, 3429, 7430, 27, 4028, 1288, 5289, 556, 4557, 601, 4602, 3896, 7897, 2722, 6723, 1665, 5666, 964, 4965, 1652, 5653, 1994, 5995, 1811, 5812, 3159, 7160, 2634, 6635, 2704, 6705, 2754, 6755, 1713, 5714, 1191, 5192, 3671, 7672, 1074, 5075, 3944, 7945, 1076, 5077, 1771, 5772, 1293, 5294, 996, 4997, 1362, 5363, 3216, 7217, 2790, 6791, 3095, 7096, 2665, 6666, 3462, 7463, 2690, 6691, 1147, 5148, 2424, 6425, 1150, 5151, 584, 4585, 225, 4226, 2499, 6500, 2386, 6387, 155, 4156, 2786, 6787, 1857, 5858, 1991, 5992, 2678, 6679, 3357, 7358, 3256, 7257, 3240, 7241, 363, 4364, 3931, 7932, 1425, 5426, 1514, 5515, 3979, 7980, 45, 4046, 2207, 6208, 3878, 7879, 854, 4855, 2240, 6241, 1494, 5495, 1638, 5639, 306, 4307, 1849, 5850, 741, 4742, 2581, 6582, 1935, 5936, 1202, 5203, 14, 4015, 3788, 7789, 2347, 6348, 1303, 5304, 2986, 6987, 2537, 6538, 699, 4700, 489, 4490, 895, 4896, 952, 4953, 3112, 7113, 2109, 6110, 2122, 6123, 2265, 6266, 3999, 8000, 2411, 6412, 2922, 6923, 1468, 5469, 1551, 5552, 3722, 7723, 1335, 5336, 101, 4102, 270, 4271, 278, 4279, 34, 4035, 1231, 5232, 721, 4722, 2647, 6648, 1754, 5755, 2218, 6219, 1630, 5631, 3376, 7377, 272, 4273, 3315, 7316, 1996, 5997, 538, 4539, 66, 4067, 1168, 5169, 2344, 6345, 2884, 6885, 608, 4609, 352, 4353, 1411, 5412, 1913, 5914, 1385, 5386, 3976, 7977, 3237, 7238, 1215, 5216, 3377, 7378, 1728, 5729, 3604, 7605, 2831, 6832, 2319, 6320, 2747, 6748, 441, 4442, 715, 4716, 3157, 7158, 2660, 6661, 2769, 6770, 796, 4797, 883, 4884, 1508, 5509, 1068, 5069, 764, 4765, 1015, 5016, 2289, 6290, 3501, 7502, 1487, 5488, 1312, 5313, 3571, 7572, 1497, 5498, 2779, 6780, 3805, 7806, 3249, 7250, 1042, 5043, 3905, 7906, 3983, 7984, 2677, 6678, 1723, 5724, 1214, 5215, 437, 4438, 3209, 7210, 3731, 7732, 2382, 6383, 1750, 5751, 1149, 5150, 1486, 5487, 2173, 6174, 3640, 7641, 3253, 7254, 571, 4572, 2885, 6886, 52, 4053, 3655, 7656, 2833, 6834, 1078, 5079, 951, 4952, 3857, 7858, 1692, 5693, 803, 4804, 1424, 5425, 1350, 5351, 3653, 7654, 2982, 6983, 2591, 6592, 378, 4379, 2219, 6220, 857, 4858, 2511, 6512, 3027, 7028, 3519, 7520, 836, 4837, 1067, 5068, 1590, 5591, 641, 4642, 671, 4672, 3273, 7274, 3792, 7793, 178, 4179, 251, 4252, 446, 4447, 2829, 6830, 2714, 6715, 257, 4258, 1543, 5544, 3658, 7659, 1681, 5682, 1922, 5923, 432, 4433, 2428, 6429, 1408, 5409, 2589, 6590, 106, 4107, 1627, 5628, 1828, 5829, 3529, 7530, 229, 4230, 3411, 7412, 1329, 5330, 1523, 5524, 2139, 6140, 1856, 5857, 1700, 5701, 402, 4403, 1670, 5671, 3285, 7286, 3926, 7927, 1611, 5612, 2053, 6054, 3088, 7089, 508, 4509, 3907, 7908, 3184, 7185, 307, 4308, 2883, 6884, 840, 4841, 2944, 6945, 3897, 7898, 798, 4799, 1013, 5014, 490, 4491, 2286, 6287, 33, 4034, 1807, 5808, 2343, 6344, 3416, 7417, 2019, 6020, 817, 4818, 256, 4257, 2193, 6194, 470, 4471, 2617, 6618, 981, 4982, 3728, 7729, 962, 4963, 1998, 5999, 1641, 5642, 3076, 7077, 397, 4398, 3006, 7007, 3469, 7470, 2614, 6615, 3852, 7853, 1137, 5138, 207, 4208, 980, 4981, 1341, 5342, 305, 4306, 581, 4582, 3889, 7890, 3222, 7223, 2840, 6841, 2881, 6882, 777, 4778, 3970, 7971, 2107, 6108, 2507, 6508, 3075, 7076, 3606, 7607, 2560, 6561, 1671, 5672, 2221, 6222, 1036, 5037, 127, 4128, 1053, 5054, 328, 4329, 636, 4637, 1397, 5398, 3117, 7118, 162, 4163, 3709, 7710, 3247, 7248, 783, 4784, 2750, 6751, 1698, 5699, 1718, 5719, 1105, 5106, 939, 4940, 2985, 6986, 3168, 7169, 1597, 5598, 2814, 6815, 2281, 6282, 3678, 7679, 3185, 7186, 763, 4764, 2051, 6052, 3695, 7696, 833, 4834, 197, 4198, 614, 4615, 1363, 5364, 859, 4860, 3235, 7236, 593, 4594, 3257, 7258, 1216, 5217, 3994, 7995, 492, 4493, 3699, 7700, 2393, 6394, 3466, 7467, 2888, 6889, 1141, 5142, 2656, 6657, 3922, 7923, 3242, 7243, 3238, 7239, 3941, 7942, 2643, 6644, 1775, 5776, 84, 4085, 1701, 5702, 451, 4452, 1564, 5565, 1871, 5872, 1933, 5934, 1454, 5455, 157, 4158, 2751, 6752, 684, 4685, 1217, 5218, 905, 4906, 1843, 5844, 1151, 5152, 940, 4941, 414, 4415, 1096, 5097, 3726, 7727, 3389, 7390, 2152, 6153, 1315, 5316, 3646, 7647, 3083, 7084, 2272, 6273, 2070, 6071, 466, 4467, 1827, 5828, 109, 4110, 2767, 6768, 1404, 5405, 3946, 7947, 3434, 7435, 3972, 7973, 2, 4003, 1499, 5500, 1008, 5009, 3164, 7165, 788, 4789, 3329, 7330, 689, 4690, 3740, 7741, 2619, 6620, 676, 4677, 910, 4911, 2065, 6066, 762, 4763, 3186, 7187, 149, 4150, 60, 4061, 2525, 6526, 2553, 6554, 2054, 6055, 1049, 5050, 3812, 7813, 2610, 6611, 1387, 5388, 2373, 6374, 2594, 6595, 3704, 7705, 302, 4303, 505, 4506, 2081, 6082, 2372, 6373, 1806, 5807, 2133, 6134, 3489, 7490, 266, 4267, 1162, 5163, 2941, 6942, 2506, 6507, 104, 4105, 704, 4705, 2477, 6478, 3138, 7139, 3819, 7820, 960, 4961, 4, 4005, 3445, 7446, 3486, 7487, 1835, 5836, 1418, 5419, 329, 4330, 3933, 7934, 3108, 7109, 3779, 7780, 3039, 7040, 2977, 6978, 3199, 7200, 2517, 6518, 3443, 7444, 2478, 6479, 3662, 7663, 891, 4892, 596, 4597, 2781, 6782, 869, 4870, 3768, 7769, 557, 4558, 2973, 6974, 24, 4025, 3835, 7836, 2778, 6779, 255, 4256, 1909, 5910, 3149, 7150, 616, 4617, 908, 4909, 97, 4098, 284, 4285, 43, 4044, 3908, 7909, 3359, 7360, 1220, 5221, 919, 4920, 3187, 7188, 2609, 6610, 3284, 7285, 2334, 6335, 852, 4853, 3052, 7053, 2545, 6546, 2029, 6030, 3612, 7613, 3484, 7485, 2688, 6689, 1242, 5243, 1776, 5777, 3799, 7800, 3885, 7886, 643, 4644, 3206, 7207, 3181, 7182, 2808, 6809, 1097, 5098, 3736, 7737, 1715, 5716, 2526, 6527, 1971, 5972, 2333, 6334, 639, 4640, 2445, 6446, 1850, 5851, 244, 4245, 1884, 5885, 1300, 5301, 2676, 6677, 1721, 5722, 53, 4054, 739, 4740, 2605, 6606, 3893, 7894, 1200, 5201, 136, 4137, 3597, 7598, 3293, 7294, 2130, 6131, 384, 4385, 3654, 7655, 3492, 7493, 806, 4807, 1349, 5350, 1848, 5849, 3978, 7979, 734, 4735, 2391, 6392, 3309, 7310, 1505, 5506, 3733, 7734, 4001, 8002, 1923, 5924, 2340, 6341, 1483, 5484, 782, 4783, 948, 4949, 529, 4530, 2280, 6281, 2235, 6236, 2876, 6877, 973, 4974, 472, 4473, 925, 4926, 1767, 5768, 2924, 6925, 3721, 7722, 2141, 6142, 2246, 6247, 23, 4024, 2897, 6898, 1440, 5441, 2762, 6763, 2734, 6735, 2727, 6728, 1289, 5290, 3801, 7802, 3126, 7127, 2600, 6601, 2642, 6643, 1083, 5084, 1145, 5146, 2117, 6118, 1501, 5502, 183, 4184, 2748, 6749, 2022, 6023, 3384, 7385, 2775, 6776, 2096, 6097, 2773, 6774, 81, 4082, 3923, 7924, 2631, 6632, 3751, 7752, 3069, 7070, 1051, 5052, 1398, 5399, 2216, 6217, 1539, 5540, 2918, 6919, 1492, 5493, 1578, 5579, 2886, 6887, 3690, 7691, 2505, 6506, 1111, 5112, 2165, 6166, 191, 4192, 2287, 6288, 3511, 7512, 2253, 6254, 1275, 5276, 2365, 6366, 1317, 5318, 613, 4614, 887, 4888, 1875, 5876, 2243, 6244, 1166, 5167, 930, 4931, 3335, 7336, 2578, 6579, 1500, 5501, 1370, 5371, 977, 4978, 2909, 6910, 160, 4161, 1389, 5390, 2926, 6927, 3904, 7905, 2563, 6564, 2933, 6934, 2002, 6003, 264, 4265, 86, 4087, 2128, 6129, 1732, 5733, 3770, 7771, 3630, 7631, 1120, 5121, 1180, 5181, 165, 4166, 120, 4121, 3681, 7682, 275, 4276, 3528, 7529, 1986, 5987, 2447, 6448, 196, 4197, 3071, 7072, 3625, 7626, 11, 4012, 1801, 5802, 912, 4913, 3648, 7649, 3738, 7739, 1825, 5826, 1131, 5132, 1194, 5195, 377, 4378, 3246, 7247, 740, 4741, 3971, 7972, 133, 4134, 288, 4289, 138, 4139, 655, 4656, 381, 4382, 628, 4629, 1730, 5731, 2843, 6844, 1050, 5051, 2300, 6301, 1061, 5062, 1249, 5250, 2524, 6525, 35, 4036, 575, 4576, 100, 4101, 3752, 7753, 1420, 5421, 1503, 5504, 38, 4039, 2052, 6053, 2905, 6906, 1087, 5088, 899, 4900, 3550, 7551, 219, 4220, 1642, 5643, 3716, 7717, 847, 4848, 2149, 6150, 3747, 7748, 3305, 7306, 2194, 6195, 2317, 6318, 512, 4513, 520, 4521, 2202, 6203, 2362, 6363, 2342, 6343, 1851, 5852, 1143, 5144, 2157, 6158, 1881, 5882, 2956, 6957, 752, 4753, 1904, 5905, 1284, 5285, 1257, 5258, 657, 4658, 88, 4089, 3314, 7315, 394, 4395, 3031, 7032, 1348, 5349, 1232, 5233, 2050, 6051, 2320, 6321, 1980, 5981, 3233, 7234, 6, 4007, 650, 4651, 3201, 7202, 2597, 6598, 2266, 6267, 1568, 5569, 2873, 6874, 1467, 5468, 3351, 7352, 1239, 5240, 2528, 6529, 9, 4010, 2865, 6866, 3559, 7560, 3536, 7537, 3388, 7389, 2607, 6608, 3147, 7148, 1557, 5558, 218, 4219, 1594, 5595, 3657, 7658, 2187, 6188, 2744, 6745, 372, 4373, 142, 4143, 774, 4775, 1417, 5418, 2433, 6434, 818, 4819, 634, 4635, 2155, 6156, 3617, 7618, 1055, 5056, 3182, 7183, 3962, 7963, 31, 4032, 1012, 5013, 2960, 6961, 791, 4792, 2283, 6284, 341, 4342, 349, 4350, 3762, 7763, 3009, 7010, 861, 4862, 41, 4042, 3930, 7931, 3526, 7527, 3753, 7754, 804, 4805, 2550, 6551, 2487, 6488, 543, 4544, 2997, 6998, 868, 4869, 2214, 6215, 2684, 6685, 2304, 6305, 3950, 7951, 3838, 7839, 310, 4311, 605, 4606, 2839, 6840, 997, 4998, 1346, 5347, 2143, 6144, 3144, 7145, 2414, 6415, 3900, 7901, 886, 4887, 3627, 7628, 3338, 7339, 2415, 6416, 2310, 6311, 1372, 5373, 1340, 5341, 234, 4235, 1885, 5886, 3344, 7345, 253, 4254, 2799, 6800, 2904, 6905, 1751, 5752, 2276, 6277, 2005, 6006, 1095, 5096, 3688, 7689, 2547, 6548, 339, 4340, 832, 4833, 2395, 6396, 1970, 5971, 566, 4567, 658, 4659, 1655, 5656, 2146, 6147, 346, 4347, 2969, 6970, 1809, 5810, 1018, 5019, 2844, 6845, 3633, 7634, 822, 4823, 281, 4282, 3091, 7092, 2759, 6760, 1855, 5856, 3569, 7570, 3358, 7359, 1380, 5381, 2397, 6398, 1973, 5974, 993, 4994, 3096, 7097, 3537, 7538, 3769, 7770, 1831, 5832, 923, 4924, 2352, 6353, 600, 4601, 2098, 6099, 2838, 6839, 3479, 7480, 2666, 6667, 3821, 7822, 1365, 5366, 3871, 7872, 3122, 7123, 2651, 6652, 2012, 6013, 667, 4668, 2429, 6430, 758, 4759, 1695, 5696, 1605, 5606, 979, 4980, 3782, 7783, 678, 4679, 3109, 7110, 2947, 6948, 2056, 6057, 1559, 5560, 1982, 5983, 1662, 5663, 3202, 7203, 1480, 5481, 595, 4596, 1320, 5321, 3811, 7812, 2328, 6329, 89, 4090, 713, 4714, 1085, 5086, 3638, 7639, 3845, 7846, 3696, 7697, 2637, 6638, 2868, 6869, 317, 4318, 1534, 5535, 578, 4579, 347, 4348, 1635, 5636, 123, 4124, 1714, 5715, 1251, 5252, 610, 4611, 623, 4624, 2024, 6025, 1258, 5259, 665, 4666, 2112, 6113, 3939, 7940, 651, 4652, 1944, 5945, 3598, 7599, 1741, 5742, 862, 4863, 3928, 7929, 1407, 5408, 1764, 5765, 1784, 5785, 3706, 7707, 3034, 7035, 888, 4889, 1160, 5161, 2728, 6729, 1814, 5815, 1354, 5355, 3160, 7161, 3867, 7868, 1707, 5708, 1412, 5413, 1947, 5948, 1770, 5771, 802, 4803, 1386, 5387, 3967, 7968, 1785, 5786, 561, 4562, 3776, 7777, 456, 4457, 2611, 6612, 2150, 6151, 1458, 5459, 1481, 5482, 2408, 6409, 3137, 7138, 1119, 5120, 1195, 5196, 1170, 5171, 1285, 5286, 1902, 5903, 2222, 6223, 3982, 7983, 3679, 7680, 2296, 6297, 1600, 5601, 2258, 6259, 1010, 5011, 3610, 7611, 3136, 7137, 528, 4529, 3085, 7086, 175, 4176, 3066, 7067, 718, 4719, 3258, 7259, 2170, 6171, 1452, 5453, 866, 4867, 697, 4698, 971, 4972, 3624, 7625, 770, 4771, 2315, 6316, 1529, 5530, 1544, 5545, 540, 4541, 1946, 5947, 2570, 6571, 2023, 6024, 2901, 6902, 504, 4505, 1803, 5804, 1310, 5311, 3288, 7289, 355, 4356, 2845, 6846, 2943, 6944, 2381, 6382, 2962, 6963, 3710, 7711, 1591, 5592, 1763, 5764, 1931, 5932, 3956, 7957, 2412, 6413, 2087, 6088, 442, 4443, 2260, 6261, 212, 4213, 2169, 6170, 1485, 5486, 3872, 7873, 3410, 7411, 1961, 5962, 3296, 7297, 3380, 7381, 2965, 6966, 3042, 7043, 2446, 6447, 1941, 5942, 1742, 5743, 880, 4881, 555, 4556, 1415, 5416, 811, 4812, 2126, 6127, 3408, 7409, 723, 4724, 1852, 5853, 8, 4009, 312, 4313, 2521, 6522, 2562, 6563, 1518, 5519, 3396, 7397, 2337, 6338, 3935, 7936, 2603, 6604, 968, 4969, 3200, 7201, 481, 4482, 3808, 7809, 2120, 6121, 146, 4147, 287, 4288, 1821, 5822, 3331, 7332, 3787, 7788, 1734, 5735, 262, 4263, 686, 4687, 3012, 7013, 1438, 5439, 542, 4543, 2632, 6633, 3151, 7152, 2209, 6210, 3713, 7714, 1357, 5358, 71, 4072, 494, 4495, 1574, 5575, 591, 4592, 3207, 7208, 2208, 6209, 3518, 7519, 2284, 6285, 938, 4939, 3951, 7952, 3816, 7817, 1759, 5760, 3254, 7255, 2178, 6179, 1647, 5648, 1690, 5691, 1213, 5214, 54, 4055, 1656, 5657, 1164, 5165, 1744, 5745, 2388, 6389, 1619, 5620, 3748, 7749, 2464, 6465, 2957, 6958, 362, 4363, 3815, 7816, 3412, 7413, 3764, 7765, 1691, 5692, 3649, 7650, 3538, 7539, 2467, 6468, 2236, 6237, 2732, 6733, 1443, 5444, 1091, 5092, 649, 4650, 1135, 5136, 3643, 7644, 2644, 6645, 395, 4396, 702, 4703, 1192, 5193, 3771, 7772, 1471, 5472, 3509, 7510, 3942, 7943, 3313, 7314, 1874, 5875, 46, 4047, 3367, 7368, 3809, 7810, 129, 4130, 3308, 7309, 3837, 7838, 1047, 5048, 2211, 6212, 3251, 7252, 1795, 5796, 3001, 7002, 2994, 6995, 1437, 5438, 477, 4478, 3269, 7270, 941, 4942, 3448, 7449, 2166, 6167, 1121, 5122, 1394, 5395, 1366, 5367, 3913, 7914, 150, 4151, 1847, 5848, 1772, 5773, 3642, 7643, 3772, 7773, 518, 4519, 3583, 7584, 1299, 5300, 3135, 7136, 1818, 5819, 2322, 6323, 3392, 7393, 2649, 6650, 200, 4201, 3228, 7229, 2705, 6706, 1907, 5908, 1427, 5428, 2990, 6991, 775, 4776, 1530, 5531, 49, 4050, 507, 4508, 3004, 7005, 187, 4188, 1890, 5891, 1167, 5168, 379, 4380, 3148, 7149, 1731, 5732, 1601, 5602, 2185, 6186, 1431, 5432, 2323, 6324, 2821, 6822, 125, 4126, 1702, 5703, 2339, 6340, 2435, 6436, 2224, 6225, 1780, 5781, 617, 4618, 2536, 6537, 2348, 6349, 864, 4865, 1356, 5357, 308, 4309, 1912, 5913, 1978, 5979, 2571, 6572, 1281, 5282, 2077, 6078, 3530, 7531, 2363, 6364, 3623, 7624, 383, 4384, 3447, 7448, 3833, 7834, 2504, 6505, 3603, 7604, 1840, 5841, 1977, 5978, 1650, 5651, 3665, 7666, 1753, 5754, 1952, 5953, 3262, 7263, 2291, 6292, 2991, 6992, 156, 4157, 3243, 7244, 1124, 5125, 26, 4027, 680, 4681, 1779, 5780, 5, 4006, 957, 4958, 2040, 6041, 3195, 7196, 2906, 6907, 1965, 5966, 121, 4122, 1246, 5247, 1782, 5783, 3498, 7499, 324, 4325, 2561, 6562, 849, 4850, 1657, 5658, 787, 4788, 3698, 7699, 3858, 7859, 161, 4162, 3180, 7181, 3791, 7792, 1752, 5753, 881, 4882, 1892, 5893, 1606, 5607, 1419, 5420, 1038, 5039, 210, 4211, 188, 4189, 350, 4351, 3170, 7171, 105, 4106, 1226, 5227, 875, 4876, 1632, 5633, 90, 4091, 1382, 5383, 286, 4287, 3720, 7721, 1773, 5774, 3843, 7844, 1866, 5867, 1507, 5508, 434, 4435, 1622, 5623, 1240, 5241, 1475, 5476, 3828, 7829, 1546, 5547, 921, 4922, 1873, 5874, 2518, 6519, 3003, 7004, 2137, 6138, 2653, 6654, 2118, 6119, 1381, 5382, 3074, 7075, 3100, 7101, 1113, 5114, 1726, 5727, 900, 4901, 648, 4649, 2404, 6405, 1517, 5518, 3279, 7280, 620, 4621, 2321, 6322, 1423, 5424, 1253, 5254, 1688, 5689, 2828, 6829, 2612, 6613, 2440, 6441, 2453, 6454, 2910, 6911, 2495, 6496, 73, 4074, 1140, 5141, 2270, 6271, 1531, 5532, 2804, 6805, 2299, 6300, 731, 4732, 1405, 5406, 1880, 5881, 1951, 5952, 116, 4117, 2105, 6106, 2121, 6122, 2774, 6775, 3014, 7015, 1968, 5969, 3586, 7587, 342, 4343, 2349, 6350, 1465, 5466, 2953, 6954, 180, 4181, 1988, 5989, 726, 4727, 3585, 7586, 1609, 5610, 241, 4242, 548, 4549, 3413, 7414, 269, 4270, 480, 4481, 3959, 7960, 1130, 5131, 1816, 5817, 2459, 6460, 3354, 7355, 1786, 5787, 3664, 7665, 2964, 6965, 2626, 6627, 3644, 7645, 2519, 6520, 1684, 5685, 1865, 5866, 2679, 6680, 1699, 5700, 2999, 7000, 2756, 6757, 1826, 5827, 497, 4498, 1235, 5236, 2430, 6431, 203, 4204, 393, 4394, 3490, 7491, 2097, 6098, 607, 4608, 3618, 7619, 2394, 6395, 1983, 5984, 2129, 6130, 1464, 5465, 343, 4344, 2103, 6104, 992, 4993, 3839, 7840, 3899, 7900, 1891, 5892, 338, 4339, 602, 4603, 780, 4781, 280, 4281, 2255, 6256, 1376, 5377, 3503, 7504, 793, 4794, 242, 4243, 3958, 7959, 145, 4146, 3563, 7564, 1864, 5865, 137, 4138, 749, 4750, 1558, 5559, 3949, 7950, 3668, 7669, 2387, 6388, 2142, 6143, 2812, 6813, 474, 4475, 537, 4538, 3803, 7804, 1677, 5678, 2090, 6091, 2124, 6125, 2451, 6452, 3820, 7821, 1859, 5860, 1466, 5467, 1223, 5224, 2772, 6773, 510, 4511, 3587, 7588, 1103, 5104, 2443, 6444, 1082, 5083, 1631, 5632, 1869, 5870, 3937, 7938, 1925, 5926, 2783, 6784, 228, 4229, 1021, 5022, 1306, 5307, 935, 4936, 164, 4165, 409, 4410, 2784, 6785, 2001, 6002, 3053, 7054, 2485, 6486, 549, 4550, 2629, 6630, 1403, 5404, 1331, 5332, 506, 4507, 1837, 5838, 3500, 7501, 3953, 7954, 2539, 6540, 189, 4190, 1651, 5652, 1353, 5354, 1687, 5688, 2992, 6993, 2341, 6342, 632, 4633, 2975, 6976, 1371, 5372, 2140, 6141, 576, 4577, 1101, 5102, 3881, 7882, 3622, 7623, 2569, 6570, 1451, 5452, 1478, 5479, 3700, 7701, 85, 4086, 294, 4295, 3491, 7492, 3433, 7434, 3786, 7787, 3051, 7052, 759, 4760, 2712, 6713, 1685, 5686, 1584, 5585, 1063, 5064, 879, 4880, 3589, 7590, 3863, 7864, 3693, 7694, 1127, 5128, 3049, 7050, 2765, 6766, 2702, 6703, 1102, 5103, 830, 4831, 3975, 7976, 1208, 5209, 2566, 6567, 878, 4879, 2302, 6303, 1429, 5430, 277, 4278, 2242, 6243, 2733, 6734, 79, 4080, 405, 4406, 931, 4932, 3382, 7383, 3632, 7633, 1294, 5295, 1610, 5611, 436, 4437, 1872, 5873, 1351, 5352, 1498, 5499, 1774, 5775, 3667, 7668, 3759, 7760, 1449, 5450, 3854, 7855, 1532, 5533, 1024, 5025, 2183, 6184, 1984, 5985, 1755, 5756, 2836, 6837, 885, 4886, 3064, 7065, 3225, 7226, 781, 4782, 2979, 6980, 987, 4988, 1663, 5664, 3264, 7265, 184, 4185, 3702, 7703, 1958, 5959, 3406, 7407, 1236, 5237, 1566, 5567, 3796, 7797, 3879, 7880, 3245, 7246, 1156, 5157, 3038, 7039, 1007, 5008, 2575, 6576, 1621, 5622, 1157, 5158, 3194, 7195, 2013, 6014, 545, 4546, 3461, 7462, 1561, 5562, 3847, 7848, 3936, 7937, 666, 4667, 1079, 5080, 618, 4619, 2533, 6534, 2948, 6949, 3512, 7513, 3932, 7933, 2940, 6941, 1668, 5669, 3997, 7998, 2858, 6859, 3637, 7638, 279, 4280, 2331, 6332, 113, 4114, 2410, 6411, 2383, 6384, 3458, 7459, 2390, 6391, 1056, 5057, 3094, 7095, 1090, 5091, 2523, 6524, 3391, 7392, 1014, 5015, 1122, 5123, 645, 4646, 3456, 7457, 2041, 6042, 1992, 5993, 239, 4240, 3952, 7953, 2946, 6947, 3616, 7617, 3636, 7637, 1747, 5748, 2515, 6516, 1592, 5593, 2234, 6235, 1037, 5038, 1966, 5967, 2123, 6124, 3058, 7059, 3067, 7068, 2101, 6102, 2574, 6575, 2049, 6050, 462, 4463, 2466, 6467, 1230, 5231, 756, 4757, 3531, 7532, 3822, 7823, 860, 4861, 2254, 6255, 1929, 5930, 696, 4697, 396, 4397, 2199, 6200, 1572, 5573, 690, 4691, 3873, 7874, 3840, 7841, 1019, 5020, 927, 4928, 2434, 6435, 568, 4569, 1477, 5478, 1981, 5982, 3340, 7341, 2369, 6370, 1460, 5461, 2758, 6759, 1839, 5840, 1177, 5178, 223, 4224, 3739, 7740, 2708, 6709, 3365, 7366, 2661, 6662, 2039, 6040, 1999, 6000, 2860, 6861, 28, 4029, 2568, 6569, 695, 4696, 1436, 5437, 3660, 7661, 3650, 7651, 1081, 5082, 589, 4590, 2148, 6149, 3017, 7018, 3742, 7743, 114, 4115, 2809, 6810, 3092, 7093, 3506, 7507, 1867, 5868, 1930, 5931, 1029, 5030, 3046, 7047, 3595, 7596, 1153, 5154, 50, 4051, 2110, 6111, 3634, 7635, 954, 4955, 2220, 6221, 1536, 5537, 3208, 7209, 3991, 7992, 3582, 7583, 3150, 7151, 3842, 7843, 2073, 6074, 755, 4756, 192, 4193, 2847, 6848, 943, 4944, 1088, 5089, 1905, 5906, 1915, 5916, 465, 4466, 488, 4489, 96, 4097, 2615, 6616, 3318, 7319, 3107, 7108, 2572, 6573, 1264, 5265, 3070, 7071, 1041, 5042, 283, 4284, 2638, 6639, 2864, 6865, 1554, 5555, 2364, 6365, 37, 4038, 2955, 6956, 2916, 6917, 2018, 6019, 2088, 6089, 2295, 6296, 1488, 5489, 3832, 7833, 2336, 6337, 2541, 6542, 3427, 7428, 2491, 6492, 809, 4810, 2379, 6380, 2172, 6173, 2919, 6920, 1990, 5991, 1060, 5061, 1911, 5912, 3283, 7284, 2850, 6851, 2998, 6999, 1876, 5877, 3063, 7064, 2227, 6228, 871, 4872, 2452, 6453, 2161, 6162, 2639, 6640, 36, 4037, 1247, 5248, 2719, 6720, 2703, 6704, 3040, 7041, 3125, 7126, 2630, 6631, 1280, 5281, 1183, 5184, 527, 4528, 245, 4246, 3450, 7451, 2241, 6242, 1808, 5809, 3128, 7129, 3041, 7042, 3116, 7117, 3327, 7328, 3894, 7895, 1219, 5220, 2996, 6997, 604, 4605, 2635, 6636, 2735, 6736, 3110, 7111, 2262, 6263, 2468, 6469, 535, 4536, 1439, 5440, 2061, 6062, 2664, 6665, 3495, 7496, 550, 4551, 2558, 6559, 56, 4057, 1705, 5706, 47, 4048, 3270, 7271, 1694, 5695, 2036, 6037, 25, 4026, 2731, 6732, 3504, 7505, 2003, 6004, 2111, 6112, 450, 4451, 1106, 5107, 536, 4537, 3221, 7222, 1540, 5541, 2403, 6404, 3869, 7870, 1645, 5646, 2817, 6818, 2951, 6952, 2136, 6137, 198, 4199, 1040, 5041, 2837, 6838, 3691, 7692, 2742, 6743, 1502, 5503, 19, 4020, 464, 4465, 2952, 6953, 2493, 6494, 2290, 6291, 2195, 6196, 1620, 5621, 662, 4663, 2862, 6863, 330, 4331, 661, 4662, 1683, 5684, 769, 4770, 3030, 7031, 3353, 7354, 2020, 6021, 2645, 6646, 3718, 7719, 2959, 6960, 3701, 7702, 2582, 6583, 3524, 7525, 3572, 7573, 3432, 7433, 746, 4747, 3798, 7799, 2482, 6483, 1898, 5899, 3553, 7554, 2573, 6574, 3916, 7917, 3508, 7509, 3259, 7260, 3440, 7441, 1824, 5825, 2887, 6888, 1908, 5909, 2713, 6714, 2861, 6862, 694, 4695, 3599, 7600, 2914, 6915, 2551, 6552, 2848, 6849, 3697, 7698, 2115, 6116, 2746, 6747, 3099, 7100, 1062, 5063, 151, 4152, 2312, 6313, 1422, 5423, 3274, 7275, 404, 4405, 532, 4533, 2367, 6368, 2552, 6553, 1171, 5172, 2674, 6675, 1268, 5269, 3886, 7887, 55, 4056, 3888, 7889, 3371, 7372, 3105, 7106, 2995, 6996, 289, 4290, 2226, 6227, 1347, 5348, 2004, 6005, 1863, 5864, 681, 4682, 3578, 7579, 2682, 6683, 2351, 6352, 3337, 7338, 444, 4445, 1441, 5442, 3290, 7291, 889, 4890, 959, 4960, 2060, 6061, 476, 4477, 285, 4286, 2796, 6797, 3169, 7170, 322, 4323, 2033, 6034, 1535, 5536, 1976, 5977, 926, 4927, 3059, 7060, 1172, 5173, 428, 4429, 2737, 6738, 679, 4680, 3689, 7690, 744, 4745, 3015, 7016, 3326, 7327, 2673, 6674, 2710, 6711, 211, 4212, 1158, 5159, 3441, 7442, 2473, 6474, 3390, 7391, 1585, 5586, 1504, 5505, 1324, 5325, 2954, 6955, 240, 4241, 2132, 6133, 3781, 7782, 828, 4829, 2987, 6988, 2350, 6351, 3749, 7750, 1094, 5095, 1854, 5855, 2766, 6767, 135, 4136, 1274, 5275, 3089, 7090, 3291, 7292, 855, 4856, 3419, 7420, 3267, 7268, 177, 4178, 3113, 7114, 2419, 6420, 1017, 5018, 1664, 5665, 3876, 7877, 3077, 7078, 1432, 5433, 2818, 6819, 1391, 5392, 1796, 5797, 1516, 5517, 766, 4767, 1626, 5627, 179, 4180, 1506, 5507, 3727, 7728, 259, 4260, 2650, 6651, 2301, 6302, 3576, 7577, 3793, 7794, 3826, 7827, 3400, 7401, 2967, 6968, 918, 4919, 842, 4843, 647, 4648, 947, 4948, 1379, 5380, 3945, 7946, 1142, 5143, 2789, 6790, 2400, 6401, 1522, 5523, 2646, 6647, 265, 4266, 3161, 7162, 1065, 5066, 2516, 6517, 1787, 5788, 1327, 5328, 2531, 6532, 2556, 6557, 2950, 6951, 1084, 5085, 3268, 7269, 2509, 6510, 2191, 6192, 850, 4851, 1636, 5637, 2584, 6585, 1307, 5308, 182, 4183, 1044, 5045, 1512, 5513, 323, 4324, 2177, 6178, 1016, 5017, 3364, 7365, 698, 4699, 2711, 6712, 2699, 6700, 3190, 7191, 2757, 6758, 2308, 6309, 3927, 7928, 877, 4878, 1138, 5139, 2245, 6246, 1039, 5040, 2780, 6781, 1832, 5833, 1618, 5619, 2009, 6010, 1426, 5427, 345, 4346, 2604, 6605, 3475, 7476, 1819, 5820, 2980, 6981, 3684, 7685, 3943, 7944, 2968, 6969, 2252, 6253, 1173, 5174, 963, 4964, 633, 4634, 2949, 6950, 1783, 5784, 519, 4520, 1395, 5396, 3505, 7506, 2500, 6501, 1369, 5370, 112, 4113, 1979, 5980, 2303, 6304, 475, 4476, 422, 4423, 745, 4746, 3675, 7676, 3884, 7885, 3028, 7029, 3998, 7999, 3552, 7553, 3581, 7582, 1224, 5225, 254, 4255, 2093, 6094, 4000, 8001, 2671, 6672, 3214, 7215, 220, 4221, 2233, 6234, 3814, 7815, 2332, 6333, 3317, 7318, 767, 4768, 3356, 7357, 1308, 5309, 3628, 7629, 1152, 5153, 1526, 5527, 147, 4148, 2593, 6594, 498, 4499, 730, 4731, 17, 4018, 3397, 7398, 260, 4261, 1719, 5720, 3973, 7974, 1697, 5698, 3023, 7024, 3686, 7687, 2465, 6466, 3955, 7956, 1964, 5965, 1330, 5331, 1023, 5024, 2870, 6871, 3000, 7001, 371, 4372, 1228, 5229, 1686, 5687, 2753, 6754, 2038, 6039, 1617, 5618, 3661, 7662, 3715, 7716, 1689, 5690, 547, 4548, 3166, 7167, 274, 4275, 808, 4809, 3729, 7730, 78, 4079, 3355, 7356, 2700, 6701, 2318, 6319, 2823, 6824, 3437, 7438, 1491, 5492, 2791, 6792, 1562, 5563, 1648, 5649, 580, 4581, 1948, 5949, 1115, 5116, 1637, 5638, 1882, 5883, 2675, 6676, 845, 4846, 2898, 6899, 544, 4545, 1187, 5188, 2598, 6599, 3483, 7484, 75, 4076, 248, 4249, 949, 4950, 3143, 7144, 2942, 6943, 485, 4486, 2135, 6136, 3155, 7156, 1064, 5065, 569, 4570, 582, 4583, 2159, 6160, 2928, 6929, 2667, 6668, 872, 4873, 2314, 6315, 3425, 7426, 692, 4693, 353, 4354, 3925, 7926, 3265, 7266, 829, 4830, 2685, 6686, 2527, 6528, 2293, 6294, 2801, 6802, 1434, 5435, 2811, 6812, 2384, 6385, 3554, 7555, 956, 4957, 823, 4824, 2895, 6896, 609, 4610, 117, 4118, 3988, 7989, 3409, 7410, 3692, 7693, 3620, 7621, 2853, 6854, 515, 4516, 1654, 5655, 683, 4684, 3082, 7083, 3302, 7303, 765, 4766, 2455, 6456, 1337, 5338, 799, 4800, 1640, 5641, 2437, 6438, 1862, 5863, 3564, 7565, 3140, 7141, 615, 4616, 3178, 7179, 1287, 5288, 3343, 7344, 3915, 7916, 1883, 5884, 3152, 7153, 3134, 7135, 2857, 6858, 1196, 5197, 333, 4334, 2726, 6727, 2484, 6485, 1675, 5676, 1845, 5846, 3870, 7871, 554, 4555, 3929, 7930, 911, 4912, 3115, 7116, 917, 4918, 1393, 5394, 3310, 7311, 3212, 7213, 1298, 5299, 2989, 6990, 356, 4357, 760, 4761, 3130, 7131, 619, 4620, 816, 4817, 2376, 6377, 546, 4547, 1708, 5709, 2399, 6400, 2230, 6231, 2740, 6741, 3080, 7081, 1793, 5794, 1210, 5211, 3961, 7962, 301, 4302, 2210, 6211, 3497, 7498, 2912, 6913, 1378, 5379, 1972, 5973, 3375, 7376, 660, 4661, 3098, 7099, 3602, 7603, 57, 4058, 3018, 7019, 3334, 7335, 2981, 6982, 3903, 7904, 3, 4004, 1342, 5343, 2017, 6018, 716, 4717, 313, 4314, 682, 4683, 2325, 6326, 2197, 6198, 367, 4368, 916, 4917, 2072, 6073, 902, 4903, 335, 4336, 3520, 7521, 3806, 7807, 814, 4815, 2259, 6260, 611, 4612, 3203, 7204, 2449, 6450, 1712, 5713, 821, 4822, 3131, 7132, 2625, 6626, 1669, 5670, 3453, 7454, 863, 4864, 1118, 5119, 316, 4317, 2777, 6778, 2439, 6440, 1666, 5667, 1720, 5721, 3378, 7379, 3914, 7915, 1877, 5878, 3386, 7387, 3496, 7497, 1186, 5187, 3062, 7063, 2026, 6027, 1006, 5007, 3596, 7597, 3601, 7602, 2138, 6139, 831, 4832, 2931, 6932, 3008, 7009, 398, 4399, 3676, 7677, 3172, 7173, 969, 4970, 42, 4043, 2079, 6080, 2532, 6533, 1823, 5824, 3457, 7458, 1834, 5835, 612, 4613, 2000, 6001, 3352, 7353, 2670, 6671, 15, 4016, 2488, 6489, 3825, 7826, 3123, 7124, 176, 4177, 2228, 6229, 2899, 6900, 1805, 5806, 1271, 5272, 2749, 6750, 2094, 6095, 491, 4492, 91, 4092, 3580, 7581, 603, 4604, 1490, 5491, 1603, 5604, 416, 4417, 2480, 6481, 1322, 5323, 2513, 6514, 486, 4487, 3287, 7288, 482, 4483, 1624, 5625, 3133, 7134, 659, 4660, 226, 4227, 2902, 6903, 670, 4671, 2618, 6619, 132, 4133, 3614, 7615, 570, 4571, 3415, 7416, 1537, 5538, 103, 4104, 1286, 5287, 1185, 5186, 1607, 5608, 753, 4754, 2116, 6117, 420, 4421, 3674, 7675, 401, 4402, 1556, 5557, 1276, 5277, 1633, 5634, 2794, 6795, 736, 4737, 1273, 5274, 1112, 5113, 3980, 7981, 3685, 7686, 3349, 7350, 2502, 6503, 1903, 5904, 2805, 6806, 2852, 6853, 2764, 6765, 1311, 5312, 2067, 6068, 1048, 5049, 3924, 7925, 913, 4914, 2851, 6852, 1768, 5769, 598, 4599, 3877, 7878, 590, 4591, 2297, 6298, 3084, 7085, 3734, 7735, 1402, 5403, 1643, 5644, 337, 4338, 1, 4002, 2538, 6539, 3626, 7627, 2585, 6586, 2274, 6275, 1204, 5205, 1245, 5246, 1975, 5976, 942, 4943, 986, 4987, 573, 4574, 3544, 7545, 1089, 5090, 2686, 6687, 3226, 7227, 296, 4297, 1435, 5436, 2457, 6458, 2144, 6145, 1939, 5940, 1100, 5101, 1943, 5944, 531, 4532, 2871, 6872, 2032, 6033, 2795, 6796, 3817, 7818, 1080, 5081, 2903, 6904, 2205, 6206, 3600, 7601, 2409, 6410, 3306, 7307, 2738, 6739, 77, 4078, 3732, 7733, 3645, 7646, 3239, 7240, 1673, 5674, 560, 4561, 3515, 7516, 606, 4607, 3055, 7056, 3385, 7386, 2937, 6938, 452, 4453, 1960, 5961, 3346, 7347, 1950, 5951, 2628, 6629, 1117, 5118, 2407, 6408, 3744, 7745, 1762, 5763, 2285, 6286, 3312, 7313, 839, 4840, 1175, 5176, 320, 4321, 2035, 6036, 3574, 7575, 3746, 7747, 3743, 7744, 1740, 5741, 1009, 5010, 358, 4359, 789, 4790, 2576, 6577, 1602, 5603, 16, 4017, 373, 4374, 72, 4073, 2271, 6272, 3666, 7667, 3592, 7593, 2215, 6216, 2217, 6218, 2163, 6164, 1674, 5675, 3097, 7098, 2327, 6328, 516, 4517, 2681, 6682, 3446, 7447, 2264, 6265, 1928, 5929, 3428, 7429, 365, 4366, 3868, 7869, 1334, 5335, 2420, 6421, 967, 4968, 3275, 7276, 3830, 7831, 2792, 6793, 3102, 7103, 3220, 7221, 3394, 7395, 2212, 6213, 3568, 7569, 3898, 7899, 2359, 6360, 2810, 6811, 587, 4588, 1682, 5683, 1338, 5339, 1159, 5160, 3850, 7851, 1030, 5031, 2822, 6823, 988, 4989, 1333, 5334, 1463, 5464, 1182, 5183, 1474, 5475, 3774, 7775, 2913, 6914, 3987, 7988, 794, 4795, 3804, 7805, 2078, 6079, 484, 4485, 2548, 6549, 2145, 6146, 2564, 6565, 2489, 6490, 1571, 5572, 2055, 6056, 2869, 6870, 32, 4033, 2042, 6043, 2530, 6531, 1283, 5284, 299, 4300, 3011, 7012, 1457, 5458, 3114, 7115, 3673, 7674, 3263, 7264, 2896, 6897, 2047, 6048, 3556, 7557, 271, 4272, 59, 4060, 325, 4326, 1070, 5071, 222, 4223, 2867, 6868, 3966, 7967, 1125, 5126, 3480, 7481, 2083, 6084, 2213, 6214, 826, 4827, 3198, 7199, 1555, 5556, 975, 4976, 2481, 6482, 3176, 7177, 2534, 6535, 3547, 7548, 1737, 5738, 2813, 6814, 2389, 6390, 2958, 6959, 1577, 5578, 169, 4170, 1581, 5582, 376, 4377, 3037, 7038, 2010, 6011, 2011, 6012, 3079, 7080, 1321, 5322, 3281, 7282, 314, 4315, 2106, 6107, 421, 4422, 3103, 7104, 460, 4461, 3719, 7720, 1433, 5434, 3472, 7473, 1267, 5268, 563, 4564, 909, 4910, 1176, 5177, 1343, 5344, 1165, 5166, 1888, 5889, 1659, 5660, 1313, 5314, 3191, 7192, 1836, 5837, 642, 4643, 2921, 6922, 2413, 6414, 3607, 7608, 20, 4021, 2057, 6058, 2268, 6269, 3266, 7267, 625, 4626, 2662, 6663, 1545, 5546, 2153, 6154, 3111, 7112, 208, 4209, 1234, 5235, 3895, 7896, 521, 4522, 3167, 7168, 433, 4434, 3836, 7837, 3188, 7189, 1086, 5087, 205, 4206, 2361, 6362, 201, 4202, 471, 4472, 3760, 7761, 1575, 5576, 2147, 6148, 3745, 7746, 2945, 6946, 1955, 5956, 58, 4059, 1108, 5109, 3175, 7176, 2273, 6274, 215, 4216, 374, 4375, 1895, 5896, 1595, 5596, 3513, 7514, 3963, 7964, 153, 4154, 3534, 7535, 2770, 6771, 2579, 6580, 3507, 7508, 1921, 5922, 1799, 5800, 1261, 5262, 1901, 5902, 3271, 7272, 2879, 6880, 173, 4174, 406, 4407, 126, 4127, 2125, 6126, 233, 4234, 172, 4173, 1525, 5526, 1184, 5185, 771, 4772, 3366, 7367, 3672, 7673, 2063, 6064, 1802, 5803, 447, 4448, 375, 4376, 3957, 7958, 3865, 7866, 3846, 7847, 3848, 7849, 3494, 7495, 3210, 7211, 673, 4674, 1250, 5251, 2021, 6022, 2189, 6190, 3651, 7652, 1533, 5534, 2893, 6894, 800, 4801, 1599, 5600, 1020, 5021, 1920, 5921, 3393, 7394, 2925, 6926, 727, 4728, 1190, 5191, 3032, 7033, 1565, 5566, 1212, 5213, 3395, 7396, 1255, 5256, 998, 4999, 2510, 6511, 3659, 7660, 2668, 6669, 2436, 6437, 1548, 5549, 3711, 7712, 3452, 7453, 3341, 7342, 3687, 7688, 2307, 6308, 30, 4031, 1374, 5375, 3866, 7867, 3232, 7233, 1844, 5845, 2385, 6386, 1745, 5746, 1000, 5001, 122, 4123, 3977, 7978, 70, 4071, 3311, 7312, 2374, 6375, 3189, 7190, 3454, 7455, 1569, 5570, 1107, 5108, 1262, 5263, 779, 4780, 626, 4627, 3829, 7830, 3418, 7419, 2932, 6933, 2154, 6155, 1724, 5725, 3874, 7875, 1987, 5988, 1644, 5645, 819, 4820, 2720, 6721, 873, 4874, 950, 4951, 473, 4474, 653, 4654, 194, 4195, 2190, 6191, 282, 4283, 1445, 5446, 29, 4030, 230, 4231, 3174, 7175, 3892, 7893, 2663, 6664, 638, 4639, 2014, 6015, 457, 4458, 2826, 6827, 1109, 5110, 202, 4203, 2238, 6239, 3213, 7214, 1661, 5662, 2658, 6659, 1541, 5542, 2752, 6753, 3423, 7424, 326, 4327, 3347, 7348, 1031, 5032, 22, 4023, 65, 4066, 1934, 5935, 110, 4111, 2546, 6547, 3121, 7122, 711, 4712, 206, 4207, 2203, 6204, 2503, 6504, 2624, 6625, 646, 4647, 896, 4897, 2479, 6480, 3474, 7475, 525, 4526, 945, 4946, 630, 4631, 87, 4088, 2392, 6393, 2377, 6378, 1238, 5239, 1461, 5462, 3551, 7552, 1301, 5302, 720, 4721, 526, 4527, 1316, 5317, 427, 4428, 1373, 5374, 3560, 7561, 2396, 6397, 724, 4725, 1259, 5260, 1133, 5134, 2244, 6245, 2785, 6786, 292, 4293, 1058, 5059, 2830, 6831, 80, 4081, 170, 4171, 2249, 6250, 2936, 6937, 2917, 6918, 2186, 6187, 583, 4584, 435, 4436, 1495, 5496, 7, 4008, 2877, 6878, 990, 4991, 303, 4304, 2694, 6695, 171, 4172, 1139, 5140, 1736, 5737, 3127, 7128, 3050, 7051, 2326, 6327, 2706, 6707, 924, 4925, 3986, 7987, 1511, 5512, 1515, 5516, 193, 4194, 2907, 6908, 399, 4400, 2680, 6681, 3139, 7140, 2544, 6545, 158, 4159, 403, 4404, 174, 4175, 1778, 5779, 1900, 5901, 3223, 7224, 1054, 5055, 567, 4568, 2043, 6044, 511, 4512, 1917, 5918, 3541, 7542, 1945, 5946, 2269, 6270, 2086, 6087, 2555, 6556, 2168, 6169, 1593, 5594, 3683, 7684, 3487, 7488, 501, 4502, 340, 4341, 238, 4239, 2697, 6698, 2206, 6207, 3777, 7778, 2279, 6280, 3754, 7755, 2104, 6105, 2807, 6808, 1706, 5707, 1820, 5821, 890, 4891, 3350, 7351, 2855, 6856, 1889, 5890, 768, 4769, 2599, 6600, 1608, 5609, 2929, 6930, 955, 4956, 994, 4995, 425, 4426, 2353, 6354, 3124, 7125, 2669, 6670, 1623, 5624, 3584, 7585, 1188, 5189, 797, 4798, 2048, 6049, 2636, 6637, 1887, 5888, 892, 4893, 1842, 5843, 1860, 5861, 2729, 6730, 2247, 6248, 3286, 7287, 2508, 6509, 443, 4444, 1735, 5736, 729, 4730, 2961, 6962, 3369, 7370, 2683, 6684, 3029, 7030, 3444, 7445, 2692, 6693, 1144, 5145, 3132, 7133, 3730, 7731, 128, 4129, 725, 4726, 824, 4825, 985, 4986, 3072, 7073, 445, 4446, 2471, 6472, 2483, 6484, 1241, 5242, 159, 4160, 3851, 7852, 2338, 6339, 2027, 6028, 1266, 5267, 2707, 6708, 217, 4218, 928, 4929, 3647, 7648, 2174, 6175, 675, 4676, 1446, 5447, 761, 4762, 1252, 5253, 1906, 5907, 263, 4264, 801, 4802, 2298, 6299, 1790, 5791, 1469, 5470, 1022, 5023, 3421, 7422, 1756, 5757, 2294, 6295, 3362, 7363, 3379, 7380, 1985, 5986, 1169, 5170, 978, 4979, 1709, 5710, 2277, 6278, 478, 4479, 1476, 5477, 1473, 5474, 3613, 7614, 2204, 6205, 3402, 7403, 1954, 5955, 2972, 6973, 3043, 7044, 1442, 5443, 2498, 6499, 2984, 6985, 3218, 7219, 1710, 5711, 635, 4636, 2282, 6283, 3183, 7184, 3430, 7431, 3481, 7482, 2378, 6379, 3834, 7835, 68, 4069, 3332, 7333, 18, 4019, 2687, 6688, 2158, 6159, 2652, 6653, 687, 4688, 3670, 7671, 1225, 5226, 1099, 5100, 354, 4355, 3054, 7055, 2438, 6439, 1791, 5792, 48, 4049, 2261, 6262, 336, 4337, 3299, 7300, 3470, 7471, 2175, 6176, 1178, 5179, 3735, 7736, 3320, 7321, 3129, 7130, 3398, 7399, 3048, 7049, 3090, 7091, 64, 4065, 2432, 6433, 1155, 5156, 2788, 6789, 237, 4238, 3790, 7791, 2596, 6597, 1077, 5078, 1355, 5356, 2417, 6418, 701, 4702, 232, 4233, 3250, 7251, 1392, 5393, 1919, 5920, 246, 4247, 2816, 6817, 1243, 5244, 3948, 7949, 530, 4531, 812, 4813, 705, 4706, 44, 4045, 3737, 7738, 3611, 7612, 448, 4449, 629, 4630, 3093, 7094, 2076, 6077, 3304, 7305, 2875, 6876, 1297, 5298, 2156, 6157, 637, 4638, 93, 4094, 3345, 7346, 2787, 6788, 2529, 6530, 2842, 6843, 3557, 7558, 3778, 7779, 732, 4733, 1181, 5182, 2069, 6070, 672, 4673, 2974, 6975, 1360, 5361, 261, 4262, 166, 4167, 1071, 5072, 1789, 5790, 3741, 7742, 1110, 5111, 1949, 5950, 2091, 6092, 2472, 6473, 3533, 7534, 2543, 6544, 3594, 7595, 2248, 6249, 2462, 6463, 2880, 6881, 2497, 6498, 3010, 7011, 1899, 5900, 2184, 6185, 810, 4811, 3860, 7861, 2798, 6799, 3960, 7961, 426, 4427, 1126, 5127, 3219, 7220, 1725, 5726, 2800, 6801, 1227, 5228, 524, 4525, 1482, 5483, 483, 4484, 2167, 6168, 719, 4720, 298, 4299, 999, 5000, 247, 4248, 1493, 5494, 2592, 6593, 3016, 7017, 844, 4845, 493, 4494, 1453, 5454, 3694, 7695, 976, 4977, 3621, 7622, 1132, 5133, 3002, 7003, 102, 4103, 3145, 7146, 3708, 7709, 1567, 5568, 3549, 7550, 2421, 6422, 3570, 7571, 1358, 5359, 1897, 5898, 807, 4808, 3527, 7528, 3989, 7990, 1550, 5551, 366, 4367, 965, 4966, 3947, 7948, 1260, 5261, 3162, 7163, 3478, 7479, 522, 4523, 3883, 7884, 236, 4237, 2620, 6621, 2089, 6090, 458, 4459, 2892, 6893, 3855, 7856, 124, 4125, 2723, 6724, 2099, 6100, 3794, 7795, 1237, 5238, 2492, 6493, 3493, 7494, 3282, 7283, 1388, 5389, 453, 4454, 1295, 5296, 98, 4099, 1416, 5417, 3333, 7334, 3981, 7982, 3535, 7536, 2621, 6622, 2730, 6731, 293, 4294, 3827, 7828, 688, 4689, 3703, 7704, 722, 4723, 2633, 6634, 3783, 7784, 2935, 6936, 509, 4510, 3789, 7790, 3146, 7147, 2305, 6306, 2834, 6835, 3669, 7670, 2448, 6449, 1277, 5278, 1538, 5539, 1542, 5543, 2672, 6673, 805, 4806, 970, 4971, 3101, 7102, 3968, 7969, 2071, 6072, 1027, 5028, 1319, 5320, 3476, 7477, 216, 4217, 3467, 7468, 1028, 5029, 3546, 7547, 3065, 7066, 304, 4305, 2900, 6901, 856, 4857, 1833, 5834, 3938, 7939, 3532, 7533, 2891, 6892, 2486, 6487, 747, 4748, 3818, 7819, 1573, 5574, 2725, 6726, 2108, 6109, 250, 4251, 3516, 7517, 2854, 6855, 1625, 5626, 2856, 6857, 3435, 7436, 2181, 6182, 624, 4625, 3969, 7970, 1583, 5584, 1678, 5679, 69, 4070, 1510, 5511, 295, 4296, 2763, 6764, 894, 4895, 717, 4718, 2554, 6555, 1154, 5155, 2470, 6471, 1484, 5485, 3766, 7767, 2806, 6807, 2311, 6312, 61, 4062, 318, 4319, 1509, 5510, 3912, 7913, 922, 4923, 1703, 5704, 564, 4565, 1653, 5654, 3590, 7591, 2595, 6596, 2442, 6443, 500, 4501, 2059, 6060, 3677, 7678, 468, 4469, 1325, 5326, 2441, 6442, 2695, 6696, 3236, 7237, 2863, 6864, 2890, 6891, 1588, 5589, 144, 4145, 3763, 7764, 903, 4904, 3119, 7120, 1957, 5958, 3588, 7589, 3891, 7892, 827, 4828, 559, 4560, 1868, 5869, 3875, 7876, 3502, 7503, 1489, 5490, 141, 4142, 2406, 6407, 2237, 6238, 1830, 5831, 3591, 7592, 1290, 5291, 1292, 5293, 3463, 7464, 2313, 6314, 2074, 6075, 2058, 6059, 2835, 6836, 3773, 7774, 3964, 7965, 487, 4488, 2654, 6655, 3514, 7515, 843, 4844, 1001, 5002, 227, 4228, 2586, 6587, 1400, 5401, 3025, 7026, 2330, 6331, 3525, 7526, 3823, 7824, 733, 4734, 574, 4575, 3864, 7865, 2192, 6193, 3022, 7023, 517, 4518, 13, 4014, 3324, 7325, 331, 4332, 2514, 6515, 3021, 7022, 3635, 7636, 76, 4077, 140, 4141, 1794, 5795, 652, 4653, 2745, 6746, 2031, 6032, 438, 4439, 1314, 5315, 1604, 5605, 496, 4497, 419, 4420, 1815, 5816, 2398, 6399, 2080, 6081, 2755, 6756, 1924, 5925, 1069, 5070, 3990, 7991, 3020, 7021, 1375, 5376, 707, 4708, 411, 4412, 2549, 6550, 2963, 6964, 1034, 5035, 2370, 6371, 1352, 5353, 3231, 7232, 904, 4905, 243, 4244, 3767, 7768, 382, 4383, 2522, 6523, 2250, 6251, 2613, 6614, 387, 4388, 2356, 6357, 1002, 5003, 3451, 7452, 1658, 5659, 3087, 7088, 2114, 6115, 2501, 6502, 3464, 7465, 2134, 6135, 3522, 7523, 2016, 6017, 2640, 6641, 2691, 6692, 152, 4153, 2825, 6826, 3652, 7653, 3007, 7008, 2306, 6307, 469, 4470, 3372, 7373, 1456, 5457, 853, 4854, 2535, 6536, 2820, 6821, 1336, 5337, 3177, 7178, 1205, 5206, 1792, 5793, 1788, 5789, 1073, 5074, 1587, 5588, 3217, 7218, 94, 4095, 3974, 7975, 3813, 7814, 3399, 7400, 2329, 6330, 130, 4131, 1005, 5006, 893, 4894, 1769, 5770, 693, 4694, 3424, 7425, 1209, 5210, 1447, 5448, 1462, 5463, 2782, 6783, 708, 4709, 3229, 7230, 1114, 5115, 1309, 5310, 3449, 7450, 154, 4155, 221, 4222, 2657, 6658, 631, 4632, 1800, 5801, 1072, 5073, 743, 4744, 1233, 5234, 3363, 7364, 1248, 5249, 1136, 5137, 1739, 5740, 3158, 7159, 3995, 7996, 1639, 5640, 1969, 5970, 499, 4500, 3723, 7724, 700, 4701, 3780, 7781, 3593, 7594, 2355, 6356, 3294, 7295, 119, 4120, 2832, 6833, 1043, 5044, 1738, 5739, 3420, 7421, 2927, 6928, 3165, 7166, 2970, 6971, 3573, 7574, 1589, 5590, 553, 4554, 1777, 5778, 2601, 6602, 3485, 7486, 1886, 5887, 408, 4409, 2229, 6230, 3707, 7708, 1646, 5647, 2275, 6276, 2889, 6890, 778, 4779, 1615, 5616, 3272, 7273, 3542, 7543, 1339, 5340, 2239, 6240, 1146, 5147, 728, 4729, 1197, 5198, 321, 4322, 3323, 7324, 429, 4430, 3543, 7544, 334, 4335, 579, 4580, 2085, 6086, 1003, 5004, 1367, 5368, 1318, 5319, 3234, 7235, 3404, 7405, 3205, 7206, 668, 4669, 407, 4408, 258, 4259, 3298, 7299, 961, 4962, 1812, 5813, 1364, 5365, 1936, 5937, 677, 4678, 2460, 6461, 1967, 5968, 3712, 7713, 3426, 7427, 1757, 5758, 2971, 6972, 835, 4836, 2444, 6445, 2113, 6114, 1817, 5818, 1676, 5677, 1748, 5749, 348, 4349, 1263, 5264, 2724, 6725, 1148, 5149, 361, 4362, 974, 4975, 1104, 5105, 400, 4401, 3381, 7382, 3473, 7474, 2068, 6069, 2803, 6804, 3035, 7036, 3360, 7361, 1549, 5550, 3714, 7715, 3215, 7216, 2939, 6940, 3539, 7540, 3757, 7758, 2760, 6761, 1265, 5266, 898, 4899, 2358, 6359, 2743, 6744, 1256, 5257, 1765, 5766, 706, 4707, 897, 4898, 1201, 5202, 772, 4773, 867, 4868, 751, 4752, 654, 4655, 3910, 7911, 3192, 7193, 1206, 5207, 562, 4563, 1045, 5046, 2476, 6477, 1861, 5862, 495, 4496, 440, 4441, 572, 4573, 1727, 5728, 412, 4413, 3383, 7384, 2401, 6402, 2368, 6369, 2716, 6717, 876, 4877, 3455, 7456, 3919, 7920, 946, 4947, 1649, 5650, 118, 4119, 1781, 5782, 1733, 5734, 3641, 7642, 1956, 5957, 1026, 5027, 3173, 7174, 1893, 5894, 391, 4392, 3705, 7706, 2768, 6769, 2463, 6464, 3540, 7541, 1932, 5933, 1660, 5661, 2542, 6543, 2095, 6096, 1075, 5076, 513, 4514, 1211, 5212, 357, 4358, 3984, 7985, 3024, 7025, 2627, 6628, 1766, 5767, 1414, 5415, 1841, 5842, 2008, 6009, 1066, 5067, 932, 4933, 131, 4132, 1189, 5190, 273, 4274, 2092, 6093, 2976, 6977, 944, 4945, 40, 4041, 1579, 5580, 1218, 5219, 1496, 5497, 2257, 6258, 754, 4755, 3407, 7408, 3295, 7296, 3301, 7302, 2416, 6417, 1761, 5762, 2908, 6909, 738, 4739, 168, 4169, 1598, 5599, 3853, 7854, 2160, 6161, 2357, 6358, 2469, 6470, 2616, 6617, 1910, 5911, 2422, 6423, 1450, 5451, 2046, 6047, 712, 4713, 1383, 5384, 424, 4425, 558, 4559, 2171, 6172, 1679, 5680, 2188, 6189, 2846, 6847, 3120, 7121, 1704, 5705, 417, 4418, 311, 4312, 2565, 6566, 1421, 5422, 792, 4793, 2015, 6016, 3656, 7657, 143, 4144, 851, 4852, 2375, 6376, 1179, 5180, 1046, 5047, 2824, 6825, 1879, 5880, 1270, 5271, 1279, 5280, 1428, 5429, 139, 4140, 2474, 6475, 134, 4135, 3797, 7798, 2335, 6336, 2223, 6224, 1853, 5854, 838, 4839, 1582, 5583, 1553, 5554, 2360, 6361, 319, 4320, 3918, 7919, 2827, 6828, 3887, 7888, 1129, 5130, 370, 4371, 2815, 6816, 3019, 7020, 685, 4686, 3005, 7006, 1326, 5327, 3921, 7922, 1513, 5514, 1092, 5093, 2151, 6152, 3468, 7469, 467, 4468, 3280, 7281, 1448, 5449, 224, 4225, 163, 4164, 2693, 6694, 82, 4083, 1244, 5245, 2866, 6867, 3193, 7194, 1560, 5561, 2606, 6607, 2475, 6476, 1918, 5919, 1472, 5473, 3577, 7578, 592, 4593, 1304, 5305, 2007, 6008, 3036, 7037, 703, 4704, 3917, 7918, 461, 4462, 936, 4937, 1479, 5480, 1011, 5012, 552, 4553, 1672, 5673, 2450, 6451, 1406, 5407, 3248, 7249, 1528, 5529, 3758, 7759, 1914, 5915, 214, 4215, 62, 4063, 1390, 5391, 3438, 7439, 1829, 5830, 1345, 5346, 3911, 7912, 3682, 7683, 148, 4149, 3906, 7907, 2324, 6325, 392, 4393, 594, 4595, 181, 4182, 276, 4277, 1033, 5034, 3920, 7921, 2588, 6589, 3629, 7630, 1963, 5964, 418, 4419, 413, 4414, 3993, 7994, 431, 4432, 1870, 5871, 3565, 7566, 1399, 5400, 1278, 5279, 1749, 5750, 1974, 5975, 459, 4460, 3802, 7803, 2179, 6180, 3548, 7549, 2025, 6026, 2559, 6560, 2427, 6428, 3197, 7198, 3044, 7045, 585, 4586, 953, 4954, 300, 4301, 813, 4814, 834, 4835, 3368, 7369, 3374, 7375, 2084, 6085, 737, 4738, 108, 4109, 3373, 7374, 1199, 5200, 3750, 7751, 3785, 7786, 3724, 7725, 1613, 5614, 2102, 6103, 2256, 6257, 742, 4743, 2402, 6403, 3211, 7212, 2309, 6310, 815, 4816, 3880, 7881, 3230, 7231, 1222, 5223, 315, 4316, 2689, 6690, 2655, 6656, 390, 4391, 1822, 5823, 1291, 5292, 3965, 7966, 691, 4692, 3321, 7322, 2911, 6912, 2267, 6268, 502, 4503, 2590, 6591, 972, 4973, 213, 4214, 1198, 5199, 3784, 7785, 1409, 5410, 1444, 5445, 1940, 5941, 958, 4959, 914, 4915, 2622, 6623, 2717, 6718, 1254, 5255, 1035, 5036, 2030, 6031, 2371, 6372, 1760, 5761, 870, 4871, 3405, 7406, 622, 4623, 3844, 7845, 1797, 5798, 1997, 5998, 1032, 5033, 2345, 6346, 2512, 6513, 2423, 6424, 577, 4578, 3255, 7256, 2540, 6541, 3755, 7756, 1332, 5333, 327, 4328, 1570, 5571, 1995, 5996, 2198, 6199, 773, 4774, 2082, 6083, 423, 4424, 1134, 5135, 1989, 5990, 3934, 7935, 430, 4431, 2938, 6939, 2608, 6609, 268, 4269, 640, 4641, 3289, 7290, 39, 4040, 2659, 6660, 3567, 7568, 1098, 5099, 2736, 6737, 644, 4645, 449, 4450, 1057, 5058, 757, 4758, 882, 4883, 2278, 6279, 415, 4416, 235, 4236, 364, 4365, 3488, 7489, 2771, 6772, 2993, 6994, 1586, 5587, 3387, 7388, 3510, 7511, 3163, 7164, 663, 4664, 3605, 7606, 1163, 5164, 3901, 7902, 1962, 5963, 2698, 6699, 503, 4504, 1174, 5175, 3954, 7955, 2641, 6642, 1729, 5730, 439, 4440, 3558, 7559, 3465, 7466, 2648, 6649, 186, 4187, 1455, 5456, 1813, 5814, 167, 4168, 3277, 7278, 2776, 6777, 2164, 6165, 3517, 7518, 2431, 6432, 2426, 6427, 1629, 5630, 1858, 5859, 360, 4361, 3292, 7293, 3061, 7062, 785, 4786, 989, 4990, 3859, 7860, 3401, 7402, 2761, 6762, 3619, 7620, 3663, 7664, 1521, 5522, 389, 4390, 1527, 5528, 3153, 7154, 3328, 7329, 2978, 6979, 966, 4967, 1296, 5297, 1614, 5615, 2405, 6406, 309, 4310, 2461, 6462, 1193, 5194, 3940, 7941, 1377, 5378, 1384, 5385, 3057, 7058, 1810, 5811, 3196, 7197, 2232, 6233, 3013, 7014, 2131, 6132, 1323, 5324, 2354, 6355, 991, 4992, 3118, 7119, 1396, 5397, 2915, 6916, 369, 4370, 2180, 6181, 67, 4068, 2587, 6588, 588, 4589, 2496, 6497, 115, 4116, 674, 4675, 3985, 7986, 2793, 6794, 2490, 6491, 3609, 7610, 2075, 6076, 2567, 6568, 74, 4075, 848, 4849, 2066, 6067, 204, 4205, 1926, 5927, 795, 4796, 2251, 6252, 3104, 7105, 748, 4749, 1207, 5208, 514, 4515, 3909, 7910, 3241, 7242, 3060, 7061, 2028, 6029, 3045, 7046, 2923, 6924, 3417, 7418, 3765, 7766, 2583, 6584, 3523, 7524, 3278, 7279, 586, 4587, 901, 4902, 710, 4711, 2127, 6128, 2741, 6742, 2458, 6459, 2037, 6038, 3436, 7437, 185, 4186, 1894, 5895, 3325, 7326, 1717, 5718, 2934, 6935, 2263, 6264, 3081, 7082, 3348, 7349, 3996, 7997, 2882, 6883, 83, 4084, 1361, 5362, 455, 4456, 669, 4670, 1116, 5117, 1519, 5520, 3807, 7808, 291, 4292, 1272, 5273, 3260, 7261, 3631, 7632, 1612, 5613, 3276, 7277, 463, 4464, 1916, 5917, 388, 4389, 344, 4345, 2894, 6895, 2859, 6860, 1093, 5094, 1344, 5345, 231, 4232, 2920, 6921, 709, 4710, 1938, 5939, 368, 4369, 3471, 7472, 3361, 7362, 107, 4108, 1937, 5938, 825, 4826, 2721, 6722, 3824, 7825, 3460, 7461, 1025, 5026, 3227, 7228, 3300, 7301, 3861, 7862, 627, 4628, 906, 4907, 714, 4715, 10, 4011, 3680, 7681, 841, 4842, 3414, 7415, 3992, 7993, 995, 4996, 199, 4200, 1524, 5525, 380, 4381, 1953, 5954, 3336, 7337, 565, 4566, 2715, 6716, 2577, 6578, 2044, 6045, 784, 4785, 1401, 5402, 3775, 7776, 1758, 5759, 2983, 6984, 1959, 5960, 2346, 6347, 2034, 6035, 2064, 6065, 2819, 6820, 3339, 7340, 3078, 7079, 2878, 6879, 1552, 5553, 1221, 5222, 3795, 7796, 386, 4387, 3297, 7298, 1368, 5369, 2225, 6226, 3555, 7556, 2006, 6007, 551, 4552, 3756, 7757, 2316, 6317, 937, 4938, 1616, 5617, 2849, 6850, 2288, 6289, 410, 4411, 1128, 5129, 1359, 5360, 865, 4866, 3244, 7245, 1711, 5712, 1716, 5717, 290, 4291, 3442, 7443, 359, 4360, 2366, 6367, 3224, 7225, 385, 4386, 820, 4821, 933, 4934, 1282, 5283, 983, 4984, 2176, 6177, 1838, 5839, 2709, 6710, 786, 4787, 2988, 6989, 2602, 6603, 2872, 6873, 51, 4052, 2966, 6967, 3608, 7609, 3330, 7331, 3862, 7863, 790, 4791, 92, 4093, 934, 4935, 1430, 5431, 3579, 7580, 3810, 7811, 3204, 7205, 3303, 7304, 3073, 7074, 3615, 7616, 479, 4480, 3639, 7640, 776, 4777, 351, 4352, 984, 4985, 1696, 5697, 874, 4875, 1520, 5521, 3316, 7317, 2231, 6232, 3521, 7522, 1896, 5897, 2380, 6381, 2841, 6842, 1942, 5943, 539, 4540, 1302, 5303, 3307, 7308, 1667, 5668, 1743, 5744, 2696, 6697, 1123, 5124, 209, 4210, 846, 4847, 1004, 5005, 2425, 6426, 1459, 5460, 3422, 7423, 2701, 6702, 1628, 5629, 3800, 7801, 533, 4534, 3106, 7107, 915, 4916, 3342, 7343, 2557, 6558, 1269, 5270, 3482, 7483, 2162, 6163, 2454, 6455, 1229, 5230, 3261, 7262, 3566, 7567, 599, 4600, 858, 4859, 3439, 7440, 2119, 6120, 1059, 5060, 190, 4191, 2797, 6798, 2182, 6183, 12, 4013, 837, 4838, 1580, 5581, 3841, 7842, 929, 4930, 541, 4542, 1846, 5847, 195, 4196, 1305, 5306, 3545, 7546, 1693, 5694, 3761, 7762, 1596, 5597, 249, 4250, 95, 4096, 3717, 7718, 3831, 7832, 3561, 7562, 3047, 7048, 1576, 5577, 1470, 5471, 3179, 7180, 3156, 7157, 1410, 5411, 2200, 6201, 3902, 7903, 3849, 7850, 1878, 5879, 3154, 7155, 3856, 7857, 2100, 6101, 1993, 5994, 2930, 6931, 907, 4908, 3319, 7320) +output(8003) +12004 = or(-1,2) +12003 = and(12004,-3) +12002 = or(12003,4) +12001 = or(12002,-5) +12000 = or(12001,-6) +11999 = and(12000,-7) +11998 = and(11999,-8) +11997 = and(11998,9) +11996 = and(11997,-10) +11995 = or(11996,11) +11994 = and(11995,-12) +11993 = or(11994,-13) +11992 = or(11993,14) +11991 = and(11992,15) +11990 = or(11991,-16) +11989 = and(11990,-17) +11988 = or(11989,-18) +11987 = and(11988,-19) +11986 = or(11987,20) +11985 = or(11986,21) +11984 = and(11985,22) +11983 = or(11984,23) +11982 = and(11983,-24) +11981 = or(11982,25) +11980 = or(11981,-26) +11979 = or(11980,27) +11978 = or(11979,28) +11977 = and(11978,29) +11976 = and(11977,30) +11975 = or(11976,-31) +11974 = and(11975,32) +11973 = or(11974,-33) +11972 = and(11973,-34) +11971 = or(11972,-35) +11970 = and(11971,36) +11969 = and(11970,37) +11968 = or(11969,-38) +11967 = and(11968,39) +11966 = or(11967,-40) +11965 = and(11966,41) +11964 = or(11965,42) +11963 = and(11964,43) +11962 = or(11963,-44) +11961 = or(11962,-45) +11960 = and(11961,46) +11959 = and(11960,-47) +11958 = or(11959,48) +11957 = or(11958,-49) +11956 = and(11957,-50) +11955 = and(11956,51) +11954 = and(11955,52) +11953 = or(11954,53) +11952 = and(11953,-54) +11951 = or(11952,55) +11950 = and(11951,-56) +11949 = and(11950,-57) +11948 = and(11949,58) +11947 = or(11948,-59) +11946 = or(11947,-60) +11945 = and(11946,-61) +11944 = or(11945,-62) +11943 = or(11944,63) +11942 = and(11943,64) +11941 = and(11942,-65) +11940 = and(11941,66) +11939 = or(11940,-67) +11938 = or(11939,68) +11937 = or(11938,-69) +11936 = and(11937,-70) +11935 = or(11936,-71) +11934 = or(11935,72) +11933 = or(11934,-73) +11932 = and(11933,74) +11931 = and(11932,-75) +11930 = and(11931,-76) +11929 = and(11930,-77) +11928 = or(11929,78) +11927 = and(11928,79) +11926 = or(11927,-80) +11925 = and(11926,-81) +11924 = or(11925,-82) +11923 = and(11924,83) +11922 = or(11923,-84) +11921 = or(11922,-85) +11920 = or(11921,-86) +11919 = and(11920,87) +11918 = or(11919,-88) +11917 = and(11918,89) +11916 = or(11917,-90) +11915 = and(11916,-91) +11914 = and(11915,92) +11913 = or(11914,-93) +11912 = or(11913,-94) +11911 = and(11912,95) +11910 = or(11911,-96) +11909 = or(11910,97) +11908 = and(11909,-98) +11907 = or(11908,99) +11906 = or(11907,-100) +11905 = and(11906,101) +11904 = or(11905,102) +11903 = and(11904,103) +11902 = and(11903,-104) +11901 = and(11902,105) +11900 = and(11901,-106) +11899 = or(11900,107) +11898 = or(11899,-108) +11897 = or(11898,-109) +11896 = or(11897,110) +11895 = or(11896,-111) +11894 = and(11895,112) +11893 = or(11894,113) +11892 = and(11893,114) +11891 = or(11892,115) +11890 = or(11891,116) +11889 = and(11890,-117) +11888 = or(11889,118) +11887 = and(11888,-119) +11886 = and(11887,120) +11885 = or(11886,121) +11884 = and(11885,-122) +11883 = or(11884,-123) +11882 = or(11883,-124) +11881 = and(11882,125) +11880 = or(11881,126) +11879 = and(11880,127) +11878 = or(11879,128) +11877 = and(11878,-129) +11876 = and(11877,-130) +11875 = or(11876,-131) +11874 = and(11875,132) +11873 = or(11874,133) +11872 = or(11873,134) +11871 = and(11872,135) +11870 = and(11871,136) +11869 = or(11870,-137) +11868 = or(11869,138) +11867 = or(11868,139) +11866 = and(11867,140) +11865 = or(11866,-141) +11864 = or(11865,-142) +11863 = and(11864,-143) +11862 = or(11863,-144) +11861 = and(11862,145) +11860 = and(11861,-146) +11859 = or(11860,147) +11858 = and(11859,-148) +11857 = or(11858,-149) +11856 = or(11857,-150) +11855 = or(11856,-151) +11854 = or(11855,-152) +11853 = or(11854,153) +11852 = or(11853,-154) +11851 = and(11852,-155) +11850 = or(11851,-156) +11849 = and(11850,157) +11848 = or(11849,158) +11847 = and(11848,-159) +11846 = or(11847,-160) +11845 = or(11846,161) +11844 = and(11845,-162) +11843 = or(11844,163) +11842 = and(11843,164) +11841 = and(11842,-165) +11840 = or(11841,-166) +11839 = and(11840,167) +11838 = or(11839,-168) +11837 = or(11838,-169) +11836 = or(11837,170) +11835 = and(11836,-171) +11834 = and(11835,-172) +11833 = and(11834,173) +11832 = and(11833,174) +11831 = or(11832,175) +11830 = or(11831,176) +11829 = or(11830,177) +11828 = or(11829,-178) +11827 = and(11828,179) +11826 = or(11827,180) +11825 = or(11826,181) +11824 = and(11825,182) +11823 = and(11824,-183) +11822 = or(11823,-184) +11821 = and(11822,185) +11820 = or(11821,186) +11819 = and(11820,187) +11818 = or(11819,188) +11817 = and(11818,189) +11816 = or(11817,190) +11815 = or(11816,-191) +11814 = or(11815,192) +11813 = or(11814,-193) +11812 = and(11813,194) +11811 = or(11812,195) +11810 = and(11811,-196) +11809 = and(11810,-197) +11808 = or(11809,198) +11807 = and(11808,-199) +11806 = or(11807,200) +11805 = and(11806,-201) +11804 = or(11805,-202) +11803 = and(11804,-203) +11802 = and(11803,-204) +11801 = or(11802,205) +11800 = or(11801,206) +11799 = and(11800,207) +11798 = and(11799,208) +11797 = and(11798,-209) +11796 = and(11797,210) +11795 = or(11796,-211) +11794 = or(11795,-212) +11793 = or(11794,-213) +11792 = or(11793,-214) +11791 = or(11792,215) +11790 = or(11791,-216) +11789 = and(11790,-217) +11788 = and(11789,218) +11787 = or(11788,-219) +11786 = and(11787,220) +11785 = or(11786,221) +11784 = and(11785,-222) +11783 = or(11784,223) +11782 = and(11783,224) +11781 = and(11782,225) +11780 = or(11781,226) +11779 = or(11780,-227) +11778 = and(11779,-228) +11777 = or(11778,-229) +11776 = and(11777,-230) +11775 = and(11776,231) +11774 = or(11775,-232) +11773 = or(11774,233) +11772 = or(11773,-234) +11771 = or(11772,235) +11770 = and(11771,236) +11769 = or(11770,-237) +11768 = and(11769,-238) +11767 = and(11768,-239) +11766 = and(11767,-240) +11765 = and(11766,241) +11764 = and(11765,242) +11763 = or(11764,243) +11762 = or(11763,-244) +11761 = and(11762,245) +11760 = or(11761,246) +11759 = or(11760,247) +11758 = and(11759,248) +11757 = and(11758,249) +11756 = or(11757,250) +11755 = or(11756,251) +11754 = or(11755,252) +11753 = or(11754,253) +11752 = and(11753,254) +11751 = and(11752,-255) +11750 = or(11751,-256) +11749 = and(11750,257) +11748 = or(11749,-258) +11747 = and(11748,259) +11746 = and(11747,-260) +11745 = or(11746,-261) +11744 = and(11745,-262) +11743 = and(11744,263) +11742 = or(11743,264) +11741 = or(11742,265) +11740 = and(11741,266) +11739 = and(11740,-267) +11738 = and(11739,-268) +11737 = or(11738,269) +11736 = or(11737,-270) +11735 = and(11736,271) +11734 = and(11735,272) +11733 = and(11734,-273) +11732 = or(11733,274) +11731 = and(11732,275) +11730 = and(11731,276) +11729 = or(11730,-277) +11728 = or(11729,278) +11727 = or(11728,-279) +11726 = and(11727,-280) +11725 = or(11726,281) +11724 = or(11725,282) +11723 = or(11724,-283) +11722 = or(11723,284) +11721 = and(11722,-285) +11720 = or(11721,-286) +11719 = or(11720,287) +11718 = or(11719,-288) +11717 = or(11718,-289) +11716 = or(11717,-290) +11715 = and(11716,291) +11714 = and(11715,292) +11713 = or(11714,293) +11712 = or(11713,-294) +11711 = and(11712,-295) +11710 = or(11711,-296) +11709 = or(11710,-297) +11708 = and(11709,-298) +11707 = or(11708,-299) +11706 = or(11707,300) +11705 = or(11706,-301) +11704 = and(11705,302) +11703 = or(11704,-303) +11702 = and(11703,-304) +11701 = and(11702,305) +11700 = or(11701,-306) +11699 = or(11700,-307) +11698 = or(11699,-308) +11697 = and(11698,-309) +11696 = and(11697,310) +11695 = or(11696,311) +11694 = and(11695,312) +11693 = and(11694,-313) +11692 = or(11693,314) +11691 = and(11692,-315) +11690 = and(11691,316) +11689 = and(11690,-317) +11688 = and(11689,318) +11687 = and(11688,319) +11686 = or(11687,-320) +11685 = and(11686,321) +11684 = and(11685,322) +11683 = or(11684,-323) +11682 = or(11683,-324) +11681 = or(11682,325) +11680 = and(11681,326) +11679 = and(11680,327) +11678 = and(11679,328) +11677 = and(11678,329) +11676 = or(11677,330) +11675 = and(11676,331) +11674 = and(11675,-332) +11673 = or(11674,-333) +11672 = or(11673,-334) +11671 = or(11672,-335) +11670 = and(11671,336) +11669 = and(11670,-337) +11668 = or(11669,-338) +11667 = and(11668,-339) +11666 = or(11667,340) +11665 = and(11666,-341) +11664 = and(11665,-342) +11663 = and(11664,343) +11662 = or(11663,344) +11661 = or(11662,345) +11660 = and(11661,346) +11659 = and(11660,347) +11658 = and(11659,348) +11657 = and(11658,349) +11656 = or(11657,-350) +11655 = and(11656,351) +11654 = or(11655,352) +11653 = and(11654,353) +11652 = and(11653,354) +11651 = and(11652,355) +11650 = or(11651,-356) +11649 = and(11650,357) +11648 = and(11649,358) +11647 = or(11648,-359) +11646 = or(11647,360) +11645 = and(11646,-361) +11644 = and(11645,-362) +11643 = or(11644,363) +11642 = and(11643,-364) +11641 = and(11642,-365) +11640 = and(11641,366) +11639 = or(11640,-367) +11638 = or(11639,-368) +11637 = or(11638,369) +11636 = and(11637,-370) +11635 = and(11636,371) +11634 = or(11635,372) +11633 = or(11634,-373) +11632 = or(11633,374) +11631 = and(11632,-375) +11630 = or(11631,376) +11629 = or(11630,-377) +11628 = or(11629,378) +11627 = or(11628,379) +11626 = and(11627,-380) +11625 = or(11626,381) +11624 = or(11625,-382) +11623 = or(11624,-383) +11622 = and(11623,384) +11621 = and(11622,-385) +11620 = or(11621,-386) +11619 = or(11620,-387) +11618 = and(11619,-388) +11617 = or(11618,389) +11616 = and(11617,390) +11615 = and(11616,391) +11614 = or(11615,-392) +11613 = and(11614,393) +11612 = and(11613,394) +11611 = and(11612,395) +11610 = or(11611,396) +11609 = or(11610,397) +11608 = and(11609,-398) +11607 = or(11608,399) +11606 = or(11607,-400) +11605 = or(11606,-401) +11604 = and(11605,-402) +11603 = or(11604,-403) +11602 = or(11603,404) +11601 = and(11602,-405) +11600 = and(11601,406) +11599 = and(11600,-407) +11598 = or(11599,-408) +11597 = and(11598,-409) +11596 = or(11597,-410) +11595 = and(11596,411) +11594 = or(11595,412) +11593 = or(11594,-413) +11592 = or(11593,-414) +11591 = and(11592,-415) +11590 = or(11591,-416) +11589 = and(11590,417) +11588 = or(11589,-418) +11587 = and(11588,419) +11586 = or(11587,-420) +11585 = and(11586,-421) +11584 = and(11585,-422) +11583 = and(11584,423) +11582 = and(11583,424) +11581 = and(11582,425) +11580 = and(11581,426) +11579 = and(11580,427) +11578 = or(11579,-428) +11577 = and(11578,-429) +11576 = or(11577,-430) +11575 = and(11576,431) +11574 = and(11575,432) +11573 = and(11574,-433) +11572 = or(11573,-434) +11571 = and(11572,-435) +11570 = or(11571,-436) +11569 = or(11570,437) +11568 = and(11569,-438) +11567 = or(11568,439) +11566 = or(11567,-440) +11565 = and(11566,-441) +11564 = and(11565,442) +11563 = or(11564,443) +11562 = or(11563,-444) +11561 = and(11562,445) +11560 = and(11561,-446) +11559 = or(11560,447) +11558 = and(11559,-448) +11557 = or(11558,449) +11556 = or(11557,450) +11555 = and(11556,-451) +11554 = or(11555,452) +11553 = and(11554,453) +11552 = or(11553,454) +11551 = and(11552,-455) +11550 = and(11551,-456) +11549 = or(11550,-457) +11548 = or(11549,458) +11547 = and(11548,459) +11546 = or(11547,460) +11545 = or(11546,-461) +11544 = and(11545,462) +11543 = and(11544,-463) +11542 = or(11543,-464) +11541 = and(11542,465) +11540 = or(11541,466) +11539 = or(11540,467) +11538 = or(11539,-468) +11537 = and(11538,-469) +11536 = and(11537,470) +11535 = or(11536,-471) +11534 = and(11535,472) +11533 = and(11534,473) +11532 = and(11533,-474) +11531 = or(11532,475) +11530 = or(11531,476) +11529 = or(11530,477) +11528 = or(11529,-478) +11527 = and(11528,479) +11526 = or(11527,480) +11525 = or(11526,481) +11524 = or(11525,-482) +11523 = or(11524,-483) +11522 = or(11523,-484) +11521 = or(11522,485) +11520 = or(11521,-486) +11519 = or(11520,487) +11518 = or(11519,488) +11517 = and(11518,489) +11516 = or(11517,-490) +11515 = and(11516,-491) +11514 = and(11515,-492) +11513 = or(11514,-493) +11512 = or(11513,-494) +11511 = and(11512,495) +11510 = and(11511,496) +11509 = and(11510,497) +11508 = or(11509,-498) +11507 = or(11508,499) +11506 = or(11507,-500) +11505 = and(11506,501) +11504 = and(11505,-502) +11503 = or(11504,503) +11502 = and(11503,-504) +11501 = and(11502,505) +11500 = and(11501,-506) +11499 = and(11500,507) +11498 = and(11499,-508) +11497 = or(11498,-509) +11496 = or(11497,-510) +11495 = or(11496,-511) +11494 = and(11495,512) +11493 = or(11494,-513) +11492 = and(11493,-514) +11491 = and(11492,-515) +11490 = or(11491,-516) +11489 = and(11490,517) +11488 = and(11489,-518) +11487 = and(11488,519) +11486 = or(11487,520) +11485 = and(11486,521) +11484 = or(11485,522) +11483 = and(11484,523) +11482 = or(11483,-524) +11481 = and(11482,525) +11480 = and(11481,-526) +11479 = or(11480,-527) +11478 = and(11479,-528) +11477 = or(11478,529) +11476 = or(11477,530) +11475 = and(11476,531) +11474 = and(11475,532) +11473 = and(11474,533) +11472 = or(11473,534) +11471 = or(11472,535) +11470 = and(11471,-536) +11469 = and(11470,-537) +11468 = or(11469,538) +11467 = or(11468,539) +11466 = or(11467,-540) +11465 = or(11466,-541) +11464 = and(11465,-542) +11463 = and(11464,543) +11462 = and(11463,544) +11461 = or(11462,-545) +11460 = or(11461,546) +11459 = or(11460,-547) +11458 = and(11459,-548) +11457 = or(11458,549) +11456 = or(11457,-550) +11455 = or(11456,-551) +11454 = or(11455,-552) +11453 = and(11454,-553) +11452 = or(11453,-554) +11451 = or(11452,555) +11450 = and(11451,556) +11449 = and(11450,-557) +11448 = or(11449,558) +11447 = and(11448,-559) +11446 = and(11447,-560) +11445 = and(11446,-561) +11444 = or(11445,562) +11443 = or(11444,563) +11442 = and(11443,564) +11441 = or(11442,565) +11440 = and(11441,-566) +11439 = and(11440,-567) +11438 = or(11439,-568) +11437 = and(11438,569) +11436 = or(11437,-570) +11435 = and(11436,571) +11434 = or(11435,-572) +11433 = or(11434,-573) +11432 = and(11433,574) +11431 = or(11432,-575) +11430 = and(11431,-576) +11429 = or(11430,-577) +11428 = and(11429,-578) +11427 = and(11428,-579) +11426 = or(11427,-580) +11425 = or(11426,581) +11424 = or(11425,-582) +11423 = and(11424,583) +11422 = or(11423,584) +11421 = and(11422,585) +11420 = or(11421,586) +11419 = and(11420,-587) +11418 = or(11419,588) +11417 = and(11418,589) +11416 = or(11417,-590) +11415 = or(11416,591) +11414 = or(11415,592) +11413 = and(11414,-593) +11412 = and(11413,-594) +11411 = and(11412,-595) +11410 = or(11411,596) +11409 = and(11410,597) +11408 = and(11409,598) +11407 = or(11408,-599) +11406 = and(11407,600) +11405 = or(11406,601) +11404 = or(11405,-602) +11403 = or(11404,-603) +11402 = and(11403,-604) +11401 = and(11402,-605) +11400 = or(11401,606) +11399 = or(11400,607) +11398 = or(11399,-608) +11397 = and(11398,609) +11396 = and(11397,610) +11395 = or(11396,611) +11394 = or(11395,612) +11393 = and(11394,613) +11392 = and(11393,-614) +11391 = and(11392,615) +11390 = and(11391,616) +11389 = and(11390,-617) +11388 = and(11389,-618) +11387 = or(11388,619) +11386 = and(11387,-620) +11385 = or(11386,-621) +11384 = and(11385,622) +11383 = or(11384,623) +11382 = or(11383,-624) +11381 = or(11382,-625) +11380 = and(11381,626) +11379 = or(11380,627) +11378 = and(11379,-628) +11377 = and(11378,629) +11376 = or(11377,-630) +11375 = or(11376,631) +11374 = or(11375,-632) +11373 = and(11374,-633) +11372 = and(11373,634) +11371 = and(11372,-635) +11370 = or(11371,-636) +11369 = and(11370,637) +11368 = or(11369,638) +11367 = or(11368,639) +11366 = or(11367,640) +11365 = and(11366,641) +11364 = and(11365,-642) +11363 = or(11364,-643) +11362 = or(11363,-644) +11361 = or(11362,645) +11360 = or(11361,646) +11359 = and(11360,-647) +11358 = or(11359,648) +11357 = and(11358,-649) +11356 = or(11357,650) +11355 = or(11356,651) +11354 = and(11355,652) +11353 = or(11354,653) +11352 = or(11353,-654) +11351 = or(11352,655) +11350 = or(11351,-656) +11349 = or(11350,-657) +11348 = or(11349,658) +11347 = or(11348,-659) +11346 = and(11347,660) +11345 = or(11346,661) +11344 = or(11345,662) +11343 = or(11344,-663) +11342 = and(11343,664) +11341 = and(11342,665) +11340 = and(11341,-666) +11339 = and(11340,-667) +11338 = or(11339,-668) +11337 = or(11338,-669) +11336 = and(11337,-670) +11335 = or(11336,-671) +11334 = and(11335,672) +11333 = and(11334,-673) +11332 = and(11333,674) +11331 = and(11332,675) +11330 = and(11331,-676) +11329 = or(11330,677) +11328 = or(11329,-678) +11327 = or(11328,679) +11326 = and(11327,-680) +11325 = and(11326,-681) +11324 = or(11325,682) +11323 = and(11324,-683) +11322 = or(11323,-684) +11321 = and(11322,-685) +11320 = or(11321,-686) +11319 = and(11320,687) +11318 = or(11319,688) +11317 = and(11318,689) +11316 = or(11317,690) +11315 = or(11316,691) +11314 = and(11315,692) +11313 = or(11314,693) +11312 = or(11313,694) +11311 = or(11312,695) +11310 = or(11311,-696) +11309 = or(11310,-697) +11308 = and(11309,-698) +11307 = and(11308,-699) +11306 = or(11307,-700) +11305 = and(11306,-701) +11304 = or(11305,-702) +11303 = and(11304,703) +11302 = and(11303,-704) +11301 = and(11302,-705) +11300 = or(11301,-706) +11299 = and(11300,707) +11298 = and(11299,-708) +11297 = or(11298,-709) +11296 = and(11297,-710) +11295 = or(11296,711) +11294 = or(11295,-712) +11293 = or(11294,-713) +11292 = and(11293,-714) +11291 = and(11292,-715) +11290 = or(11291,716) +11289 = or(11290,717) +11288 = or(11289,718) +11287 = and(11288,-719) +11286 = or(11287,-720) +11285 = or(11286,721) +11284 = or(11285,-722) +11283 = or(11284,-723) +11282 = and(11283,724) +11281 = or(11282,725) +11280 = and(11281,-726) +11279 = and(11280,-727) +11278 = and(11279,728) +11277 = or(11278,-729) +11276 = or(11277,730) +11275 = or(11276,731) +11274 = and(11275,732) +11273 = or(11274,733) +11272 = and(11273,734) +11271 = or(11272,-735) +11270 = or(11271,-736) +11269 = or(11270,-737) +11268 = and(11269,738) +11267 = and(11268,-739) +11266 = or(11267,740) +11265 = or(11266,-741) +11264 = or(11265,742) +11263 = or(11264,-743) +11262 = and(11263,-744) +11261 = or(11262,-745) +11260 = or(11261,-746) +11259 = or(11260,747) +11258 = or(11259,748) +11257 = or(11258,749) +11256 = and(11257,-750) +11255 = and(11256,-751) +11254 = or(11255,752) +11253 = and(11254,753) +11252 = or(11253,754) +11251 = and(11252,755) +11250 = or(11251,-756) +11249 = and(11250,757) +11248 = and(11249,758) +11247 = and(11248,759) +11246 = or(11247,760) +11245 = or(11246,-761) +11244 = or(11245,762) +11243 = and(11244,763) +11242 = or(11243,764) +11241 = or(11242,765) +11240 = or(11241,766) +11239 = and(11240,-767) +11238 = and(11239,768) +11237 = or(11238,-769) +11236 = or(11237,770) +11235 = and(11236,771) +11234 = and(11235,-772) +11233 = and(11234,-773) +11232 = or(11233,-774) +11231 = and(11232,-775) +11230 = or(11231,776) +11229 = and(11230,777) +11228 = or(11229,778) +11227 = and(11228,779) +11226 = or(11227,-780) +11225 = or(11226,-781) +11224 = and(11225,-782) +11223 = and(11224,-783) +11222 = and(11223,784) +11221 = or(11222,-785) +11220 = or(11221,786) +11219 = and(11220,787) +11218 = or(11219,-788) +11217 = or(11218,789) +11216 = or(11217,790) +11215 = and(11216,791) +11214 = or(11215,792) +11213 = and(11214,-793) +11212 = and(11213,-794) +11211 = and(11212,-795) +11210 = or(11211,-796) +11209 = or(11210,-797) +11208 = or(11209,798) +11207 = or(11208,-799) +11206 = and(11207,800) +11205 = and(11206,801) +11204 = and(11205,-802) +11203 = or(11204,-803) +11202 = or(11203,-804) +11201 = or(11202,-805) +11200 = and(11201,-806) +11199 = and(11200,807) +11198 = or(11199,-808) +11197 = or(11198,809) +11196 = and(11197,810) +11195 = and(11196,811) +11194 = and(11195,-812) +11193 = or(11194,813) +11192 = or(11193,814) +11191 = and(11192,815) +11190 = and(11191,816) +11189 = or(11190,817) +11188 = or(11189,-818) +11187 = or(11188,819) +11186 = and(11187,-820) +11185 = or(11186,-821) +11184 = and(11185,822) +11183 = or(11184,823) +11182 = and(11183,824) +11181 = and(11182,-825) +11180 = or(11181,826) +11179 = and(11180,-827) +11178 = or(11179,828) +11177 = or(11178,829) +11176 = and(11177,-830) +11175 = and(11176,831) +11174 = or(11175,-832) +11173 = and(11174,-833) +11172 = or(11173,-834) +11171 = and(11172,835) +11170 = and(11171,-836) +11169 = and(11170,837) +11168 = and(11169,-838) +11167 = and(11168,-839) +11166 = or(11167,840) +11165 = or(11166,-841) +11164 = or(11165,842) +11163 = and(11164,843) +11162 = or(11163,-844) +11161 = and(11162,845) +11160 = and(11161,846) +11159 = or(11160,-847) +11158 = and(11159,-848) +11157 = and(11158,-849) +11156 = or(11157,-850) +11155 = and(11156,-851) +11154 = or(11155,852) +11153 = or(11154,-853) +11152 = or(11153,-854) +11151 = or(11152,855) +11150 = and(11151,856) +11149 = or(11150,-857) +11148 = and(11149,858) +11147 = and(11148,859) +11146 = or(11147,-860) +11145 = or(11146,-861) +11144 = and(11145,-862) +11143 = and(11144,863) +11142 = or(11143,864) +11141 = or(11142,865) +11140 = or(11141,-866) +11139 = and(11140,-867) +11138 = or(11139,868) +11137 = or(11138,-869) +11136 = and(11137,870) +11135 = or(11136,871) +11134 = and(11135,-872) +11133 = or(11134,873) +11132 = or(11133,874) +11131 = or(11132,-875) +11130 = or(11131,876) +11129 = and(11130,-877) +11128 = and(11129,878) +11127 = and(11128,879) +11126 = and(11127,-880) +11125 = and(11126,-881) +11124 = or(11125,882) +11123 = or(11124,-883) +11122 = and(11123,884) +11121 = or(11122,-885) +11120 = and(11121,-886) +11119 = and(11120,887) +11118 = and(11119,-888) +11117 = or(11118,889) +11116 = or(11117,-890) +11115 = and(11116,-891) +11114 = or(11115,-892) +11113 = or(11114,-893) +11112 = or(11113,-894) +11111 = and(11112,895) +11110 = or(11111,896) +11109 = and(11110,897) +11108 = or(11109,898) +11107 = and(11108,-899) +11106 = or(11107,-900) +11105 = or(11106,901) +11104 = or(11105,902) +11103 = and(11104,903) +11102 = or(11103,904) +11101 = and(11102,905) +11100 = and(11101,-906) +11099 = and(11100,-907) +11098 = or(11099,-908) +11097 = or(11098,909) +11096 = or(11097,-910) +11095 = and(11096,-911) +11094 = or(11095,912) +11093 = or(11094,-913) +11092 = and(11093,-914) +11091 = or(11092,-915) +11090 = or(11091,-916) +11089 = or(11090,-917) +11088 = and(11089,-918) +11087 = or(11088,919) +11086 = or(11087,920) +11085 = and(11086,921) +11084 = or(11085,-922) +11083 = and(11084,-923) +11082 = and(11083,-924) +11081 = and(11082,-925) +11080 = and(11081,-926) +11079 = or(11080,927) +11078 = and(11079,-928) +11077 = or(11078,929) +11076 = and(11077,930) +11075 = and(11076,-931) +11074 = or(11075,932) +11073 = and(11074,933) +11072 = or(11073,-934) +11071 = and(11072,935) +11070 = and(11071,-936) +11069 = or(11070,-937) +11068 = and(11069,-938) +11067 = or(11068,939) +11066 = or(11067,-940) +11065 = and(11066,-941) +11064 = or(11065,-942) +11063 = or(11064,-943) +11062 = and(11063,-944) +11061 = or(11062,945) +11060 = or(11061,946) +11059 = and(11060,947) +11058 = or(11059,-948) +11057 = or(11058,949) +11056 = and(11057,-950) +11055 = and(11056,951) +11054 = or(11055,-952) +11053 = or(11054,953) +11052 = and(11053,-954) +11051 = or(11052,-955) +11050 = or(11051,-956) +11049 = and(11050,957) +11048 = or(11049,-958) +11047 = or(11048,-959) +11046 = or(11047,960) +11045 = and(11046,961) +11044 = and(11045,962) +11043 = or(11044,963) +11042 = or(11043,-964) +11041 = or(11042,965) +11040 = or(11041,-966) +11039 = and(11040,-967) +11038 = and(11039,-968) +11037 = or(11038,969) +11036 = and(11037,-970) +11035 = and(11036,971) +11034 = or(11035,-972) +11033 = and(11034,973) +11032 = and(11033,-974) +11031 = or(11032,975) +11030 = or(11031,976) +11029 = and(11030,977) +11028 = and(11029,-978) +11027 = or(11028,979) +11026 = or(11027,980) +11025 = or(11026,-981) +11024 = and(11025,982) +11023 = and(11024,983) +11022 = and(11023,-984) +11021 = and(11022,-985) +11020 = or(11021,-986) +11019 = or(11020,987) +11018 = or(11019,988) +11017 = and(11018,-989) +11016 = or(11017,990) +11015 = and(11016,991) +11014 = or(11015,992) +11013 = or(11014,-993) +11012 = or(11013,994) +11011 = or(11012,995) +11010 = or(11011,-996) +11009 = and(11010,997) +11008 = or(11009,-998) +11007 = and(11008,999) +11006 = and(11007,1000) +11005 = or(11006,-1001) +11004 = and(11005,1002) +11003 = or(11004,1003) +11002 = and(11003,1004) +11001 = and(11002,-1005) +11000 = or(11001,1006) +10999 = and(11000,-1007) +10998 = or(10999,1008) +10997 = and(10998,1009) +10996 = or(10997,1010) +10995 = or(10996,-1011) +10994 = or(10995,1012) +10993 = and(10994,1013) +10992 = or(10993,-1014) +10991 = or(10992,1015) +10990 = or(10991,-1016) +10989 = and(10990,-1017) +10988 = and(10989,1018) +10987 = or(10988,-1019) +10986 = and(10987,1020) +10985 = or(10986,-1021) +10984 = or(10985,1022) +10983 = or(10984,-1023) +10982 = or(10983,-1024) +10981 = or(10982,-1025) +10980 = and(10981,1026) +10979 = or(10980,-1027) +10978 = and(10979,1028) +10977 = or(10978,1029) +10976 = or(10977,-1030) +10975 = and(10976,-1031) +10974 = or(10975,-1032) +10973 = and(10974,-1033) +10972 = or(10973,-1034) +10971 = or(10972,-1035) +10970 = and(10971,1036) +10969 = and(10970,-1037) +10968 = or(10969,-1038) +10967 = and(10968,-1039) +10966 = and(10967,1040) +10965 = or(10966,-1041) +10964 = or(10965,1042) +10963 = and(10964,1043) +10962 = or(10963,1044) +10961 = or(10962,1045) +10960 = or(10961,1046) +10959 = or(10960,-1047) +10958 = and(10959,-1048) +10957 = and(10958,1049) +10956 = or(10957,-1050) +10955 = and(10956,1051) +10954 = or(10955,1052) +10953 = or(10954,1053) +10952 = or(10953,-1054) +10951 = and(10952,-1055) +10950 = and(10951,1056) +10949 = or(10950,-1057) +10948 = or(10949,1058) +10947 = or(10948,-1059) +10946 = or(10947,-1060) +10945 = and(10946,1061) +10944 = or(10945,-1062) +10943 = and(10944,-1063) +10942 = and(10943,-1064) +10941 = and(10942,-1065) +10940 = or(10941,1066) +10939 = or(10940,-1067) +10938 = and(10939,1068) +10937 = and(10938,-1069) +10936 = and(10937,1070) +10935 = and(10936,-1071) +10934 = or(10935,1072) +10933 = and(10934,1073) +10932 = and(10933,1074) +10931 = or(10932,-1075) +10930 = and(10931,-1076) +10929 = and(10930,-1077) +10928 = or(10929,1078) +10927 = and(10928,1079) +10926 = or(10927,1080) +10925 = and(10926,1081) +10924 = or(10925,-1082) +10923 = or(10924,1083) +10922 = and(10923,-1084) +10921 = and(10922,-1085) +10920 = or(10921,1086) +10919 = or(10920,-1087) +10918 = and(10919,-1088) +10917 = or(10918,1089) +10916 = and(10917,-1090) +10915 = and(10916,-1091) +10914 = or(10915,1092) +10913 = and(10914,1093) +10912 = or(10913,1094) +10911 = or(10912,1095) +10910 = and(10911,-1096) +10909 = or(10910,1097) +10908 = and(10909,-1098) +10907 = and(10908,1099) +10906 = and(10907,-1100) +10905 = or(10906,-1101) +10904 = or(10905,-1102) +10903 = and(10904,1103) +10902 = and(10903,1104) +10901 = or(10902,1105) +10900 = or(10901,-1106) +10899 = and(10900,-1107) +10898 = or(10899,1108) +10897 = and(10898,-1109) +10896 = and(10897,-1110) +10895 = and(10896,-1111) +10894 = and(10895,1112) +10893 = or(10894,1113) +10892 = and(10893,-1114) +10891 = and(10892,-1115) +10890 = or(10891,-1116) +10889 = and(10890,1117) +10888 = and(10889,1118) +10887 = or(10888,-1119) +10886 = or(10887,1120) +10885 = and(10886,-1121) +10884 = and(10885,-1122) +10883 = or(10884,1123) +10882 = or(10883,1124) +10881 = and(10882,1125) +10880 = or(10881,-1126) +10879 = or(10880,1127) +10878 = or(10879,1128) +10877 = or(10878,-1129) +10876 = or(10877,-1130) +10875 = or(10876,1131) +10874 = or(10875,1132) +10873 = or(10874,1133) +10872 = and(10873,-1134) +10871 = and(10872,1135) +10870 = or(10871,1136) +10869 = and(10870,1137) +10868 = and(10869,-1138) +10867 = or(10868,-1139) +10866 = or(10867,-1140) +10865 = or(10866,-1141) +10864 = and(10865,-1142) +10863 = or(10864,1143) +10862 = or(10863,-1144) +10861 = and(10862,-1145) +10860 = or(10861,-1146) +10859 = and(10860,-1147) +10858 = or(10859,-1148) +10857 = and(10858,-1149) +10856 = or(10857,-1150) +10855 = and(10856,-1151) +10854 = and(10855,1152) +10853 = or(10854,-1153) +10852 = and(10853,-1154) +10851 = or(10852,-1155) +10850 = or(10851,1156) +10849 = and(10850,-1157) +10848 = and(10849,1158) +10847 = or(10848,1159) +10846 = and(10847,1160) +10845 = and(10846,-1161) +10844 = or(10845,1162) +10843 = or(10844,-1163) +10842 = and(10843,1164) +10841 = or(10842,-1165) +10840 = and(10841,1166) +10839 = and(10840,-1167) +10838 = or(10839,1168) +10837 = and(10838,-1169) +10836 = or(10837,1170) +10835 = or(10836,-1171) +10834 = and(10835,-1172) +10833 = and(10834,-1173) +10832 = and(10833,1174) +10831 = or(10832,-1175) +10830 = or(10831,1176) +10829 = or(10830,-1177) +10828 = or(10829,1178) +10827 = or(10828,-1179) +10826 = and(10827,-1180) +10825 = and(10826,-1181) +10824 = or(10825,1182) +10823 = and(10824,-1183) +10822 = or(10823,1184) +10821 = or(10822,1185) +10820 = or(10821,1186) +10819 = and(10820,-1187) +10818 = and(10819,-1188) +10817 = or(10818,-1189) +10816 = and(10817,1190) +10815 = and(10816,1191) +10814 = or(10815,1192) +10813 = and(10814,-1193) +10812 = or(10813,-1194) +10811 = or(10812,1195) +10810 = or(10811,-1196) +10809 = or(10810,-1197) +10808 = and(10809,-1198) +10807 = or(10808,1199) +10806 = and(10807,-1200) +10805 = and(10806,1201) +10804 = or(10805,-1202) +10803 = and(10804,1203) +10802 = and(10803,1204) +10801 = and(10802,-1205) +10800 = or(10801,1206) +10799 = and(10800,1207) +10798 = and(10799,-1208) +10797 = or(10798,-1209) +10796 = or(10797,1210) +10795 = or(10796,1211) +10794 = and(10795,1212) +10793 = or(10794,-1213) +10792 = or(10793,1214) +10791 = and(10792,-1215) +10790 = or(10791,-1216) +10789 = and(10790,-1217) +10788 = or(10789,-1218) +10787 = or(10788,1219) +10786 = or(10787,1220) +10785 = and(10786,1221) +10784 = and(10785,-1222) +10783 = or(10784,-1223) +10782 = or(10783,-1224) +10781 = and(10782,1225) +10780 = or(10781,1226) +10779 = or(10780,1227) +10778 = or(10779,-1228) +10777 = or(10778,1229) +10776 = and(10777,-1230) +10775 = and(10776,1231) +10774 = or(10775,1232) +10773 = or(10774,1233) +10772 = and(10773,1234) +10771 = and(10772,-1235) +10770 = and(10771,-1236) +10769 = and(10770,-1237) +10768 = or(10769,1238) +10767 = or(10768,-1239) +10766 = and(10767,-1240) +10765 = and(10766,1241) +10764 = and(10765,1242) +10763 = and(10764,-1243) +10762 = or(10763,-1244) +10761 = and(10762,1245) +10760 = and(10761,-1246) +10759 = or(10760,-1247) +10758 = or(10759,1248) +10757 = and(10758,-1249) +10756 = or(10757,-1250) +10755 = or(10756,1251) +10754 = and(10755,1252) +10753 = and(10754,-1253) +10752 = or(10753,1254) +10751 = and(10752,-1255) +10750 = and(10751,1256) +10749 = and(10750,-1257) +10748 = or(10749,-1258) +10747 = and(10748,1259) +10746 = or(10747,-1260) +10745 = and(10746,-1261) +10744 = or(10745,1262) +10743 = or(10744,-1263) +10742 = and(10743,-1264) +10741 = and(10742,-1265) +10740 = and(10741,1266) +10739 = or(10740,-1267) +10738 = or(10739,1268) +10737 = and(10738,-1269) +10736 = or(10737,-1270) +10735 = and(10736,1271) +10734 = or(10735,1272) +10733 = and(10734,1273) +10732 = or(10733,1274) +10731 = and(10732,-1275) +10730 = or(10731,1276) +10729 = and(10730,-1277) +10728 = or(10729,-1278) +10727 = and(10728,-1279) +10726 = or(10727,1280) +10725 = and(10726,-1281) +10724 = and(10725,1282) +10723 = or(10724,1283) +10722 = or(10723,1284) +10721 = or(10722,1285) +10720 = and(10721,-1286) +10719 = or(10720,-1287) +10718 = and(10719,-1288) +10717 = or(10718,1289) +10716 = and(10717,1290) +10715 = or(10716,1291) +10714 = or(10715,1292) +10713 = and(10714,1293) +10712 = and(10713,-1294) +10711 = and(10712,1295) +10710 = or(10711,-1296) +10709 = or(10710,1297) +10708 = and(10709,1298) +10707 = or(10708,1299) +10706 = or(10707,1300) +10705 = and(10706,1301) +10704 = and(10705,1302) +10703 = or(10704,-1303) +10702 = and(10703,1304) +10701 = and(10702,1305) +10700 = or(10701,-1306) +10699 = and(10700,-1307) +10698 = or(10699,-1308) +10697 = or(10698,-1309) +10696 = or(10697,-1310) +10695 = and(10696,1311) +10694 = or(10695,-1312) +10693 = or(10694,1313) +10692 = and(10693,-1314) +10691 = and(10692,-1315) +10690 = or(10691,1316) +10689 = or(10690,1317) +10688 = and(10689,1318) +10687 = or(10688,-1319) +10686 = or(10687,1320) +10685 = and(10686,-1321) +10684 = or(10685,1322) +10683 = or(10684,-1323) +10682 = and(10683,1324) +10681 = and(10682,-1325) +10680 = or(10681,1326) +10679 = or(10680,-1327) +10678 = and(10679,-1328) +10677 = or(10678,1329) +10676 = and(10677,1330) +10675 = and(10676,-1331) +10674 = and(10675,1332) +10673 = and(10674,-1333) +10672 = and(10673,1334) +10671 = and(10672,1335) +10670 = and(10671,1336) +10669 = or(10670,-1337) +10668 = and(10669,-1338) +10667 = and(10668,1339) +10666 = and(10667,-1340) +10665 = or(10666,1341) +10664 = and(10665,-1342) +10663 = or(10664,-1343) +10662 = and(10663,1344) +10661 = or(10662,1345) +10660 = and(10661,-1346) +10659 = or(10660,-1347) +10658 = or(10659,-1348) +10657 = and(10658,-1349) +10656 = and(10657,1350) +10655 = or(10656,1351) +10654 = and(10655,1352) +10653 = or(10654,-1353) +10652 = or(10653,-1354) +10651 = or(10652,1355) +10650 = and(10651,1356) +10649 = and(10650,-1357) +10648 = or(10649,-1358) +10647 = or(10648,1359) +10646 = or(10647,-1360) +10645 = and(10646,-1361) +10644 = or(10645,-1362) +10643 = or(10644,1363) +10642 = or(10643,1364) +10641 = and(10642,1365) +10640 = or(10641,1366) +10639 = and(10640,-1367) +10638 = and(10639,-1368) +10637 = or(10638,-1369) +10636 = and(10637,-1370) +10635 = or(10636,1371) +10634 = and(10635,-1372) +10633 = or(10634,-1373) +10632 = or(10633,1374) +10631 = and(10632,-1375) +10630 = and(10631,-1376) +10629 = or(10630,-1377) +10628 = and(10629,1378) +10627 = and(10628,1379) +10626 = and(10627,-1380) +10625 = or(10626,1381) +10624 = and(10625,1382) +10623 = or(10624,-1383) +10622 = and(10623,1384) +10621 = and(10622,-1385) +10620 = and(10621,-1386) +10619 = and(10620,-1387) +10618 = or(10619,-1388) +10617 = or(10618,1389) +10616 = or(10617,-1390) +10615 = and(10616,1391) +10614 = and(10615,1392) +10613 = or(10614,-1393) +10612 = or(10613,-1394) +10611 = or(10612,-1395) +10610 = or(10611,1396) +10609 = and(10610,-1397) +10608 = and(10609,-1398) +10607 = or(10608,-1399) +10606 = or(10607,-1400) +10605 = or(10606,1401) +10604 = and(10605,1402) +10603 = or(10604,1403) +10602 = or(10603,-1404) +10601 = and(10602,1405) +10600 = or(10601,-1406) +10599 = and(10600,-1407) +10598 = or(10599,-1408) +10597 = and(10598,1409) +10596 = and(10597,1410) +10595 = and(10596,1411) +10594 = or(10595,1412) +10593 = and(10594,1413) +10592 = and(10593,-1414) +10591 = and(10592,1415) +10590 = or(10591,1416) +10589 = and(10590,-1417) +10588 = and(10589,1418) +10587 = and(10588,1419) +10586 = or(10587,-1420) +10585 = and(10586,-1421) +10584 = and(10585,1422) +10583 = and(10584,-1423) +10582 = and(10583,1424) +10581 = and(10582,-1425) +10580 = or(10581,1426) +10579 = or(10580,1427) +10578 = and(10579,1428) +10577 = or(10578,-1429) +10576 = and(10577,1430) +10575 = or(10576,-1431) +10574 = and(10575,-1432) +10573 = and(10574,-1433) +10572 = or(10573,1434) +10571 = or(10572,-1435) +10570 = or(10571,-1436) +10569 = or(10570,1437) +10568 = and(10569,1438) +10567 = or(10568,1439) +10566 = and(10567,-1440) +10565 = and(10566,1441) +10564 = and(10565,-1442) +10563 = or(10564,1443) +10562 = and(10563,-1444) +10561 = or(10562,1445) +10560 = and(10561,1446) +10559 = or(10560,-1447) +10558 = or(10559,1448) +10557 = and(10558,1449) +10556 = and(10557,-1450) +10555 = or(10556,-1451) +10554 = and(10555,-1452) +10553 = and(10554,-1453) +10552 = or(10553,-1454) +10551 = or(10552,1455) +10550 = or(10551,1456) +10549 = and(10550,1457) +10548 = or(10549,1458) +10547 = and(10548,1459) +10546 = and(10547,-1460) +10545 = or(10546,-1461) +10544 = or(10545,-1462) +10543 = and(10544,1463) +10542 = or(10543,1464) +10541 = and(10542,1465) +10540 = or(10541,1466) +10539 = or(10540,-1467) +10538 = or(10539,1468) +10537 = or(10538,-1469) +10536 = and(10537,1470) +10535 = or(10536,-1471) +10534 = or(10535,1472) +10533 = or(10534,1473) +10532 = or(10533,1474) +10531 = and(10532,1475) +10530 = or(10531,1476) +10529 = or(10530,1477) +10528 = or(10529,-1478) +10527 = and(10528,-1479) +10526 = or(10527,-1480) +10525 = or(10526,1481) +10524 = and(10525,-1482) +10523 = or(10524,1483) +10522 = and(10523,1484) +10521 = or(10522,-1485) +10520 = and(10521,-1486) +10519 = or(10520,-1487) +10518 = and(10519,1488) +10517 = or(10518,1489) +10516 = and(10517,1490) +10515 = and(10516,1491) +10514 = or(10515,1492) +10513 = or(10514,-1493) +10512 = or(10513,-1494) +10511 = and(10512,-1495) +10510 = and(10511,-1496) +10509 = or(10510,-1497) +10508 = or(10509,1498) +10507 = and(10508,-1499) +10506 = or(10507,-1500) +10505 = or(10506,-1501) +10504 = or(10505,1502) +10503 = and(10504,1503) +10502 = and(10503,-1504) +10501 = or(10502,-1505) +10500 = and(10501,-1506) +10499 = and(10500,1507) +10498 = and(10499,1508) +10497 = or(10498,-1509) +10496 = and(10497,1510) +10495 = and(10496,1511) +10494 = and(10495,1512) +10493 = or(10494,1513) +10492 = and(10493,1514) +10491 = or(10492,-1515) +10490 = or(10491,-1516) +10489 = or(10490,-1517) +10488 = and(10489,-1518) +10487 = and(10488,-1519) +10486 = and(10487,1520) +10485 = or(10486,1521) +10484 = and(10485,1522) +10483 = and(10484,1523) +10482 = or(10483,1524) +10481 = and(10482,-1525) +10480 = and(10481,-1526) +10479 = or(10480,1527) +10478 = or(10479,-1528) +10477 = or(10478,1529) +10476 = or(10477,1530) +10475 = and(10476,-1531) +10474 = or(10475,-1532) +10473 = and(10474,1533) +10472 = and(10473,1534) +10471 = or(10472,-1535) +10470 = and(10471,-1536) +10469 = and(10470,-1537) +10468 = or(10469,-1538) +10467 = and(10468,-1539) +10466 = and(10467,-1540) +10465 = and(10466,-1541) +10464 = and(10465,1542) +10463 = and(10464,-1543) +10462 = or(10463,-1544) +10461 = or(10462,-1545) +10460 = or(10461,1546) +10459 = or(10460,-1547) +10458 = or(10459,1548) +10457 = and(10458,1549) +10456 = and(10457,-1550) +10455 = or(10456,1551) +10454 = or(10455,1552) +10453 = or(10454,-1553) +10452 = and(10453,1554) +10451 = and(10452,-1555) +10450 = or(10451,1556) +10449 = and(10450,1557) +10448 = and(10449,1558) +10447 = or(10448,1559) +10446 = or(10447,1560) +10445 = and(10446,1561) +10444 = or(10445,-1562) +10443 = and(10444,1563) +10442 = and(10443,1564) +10441 = and(10442,1565) +10440 = or(10441,-1566) +10439 = or(10440,1567) +10438 = and(10439,-1568) +10437 = and(10438,1569) +10436 = or(10437,1570) +10435 = or(10436,1571) +10434 = and(10435,1572) +10433 = and(10434,-1573) +10432 = and(10433,1574) +10431 = or(10432,1575) +10430 = or(10431,-1576) +10429 = or(10430,1577) +10428 = or(10429,-1578) +10427 = or(10428,-1579) +10426 = and(10427,1580) +10425 = and(10426,1581) +10424 = and(10425,-1582) +10423 = or(10424,-1583) +10422 = or(10423,-1584) +10421 = and(10422,-1585) +10420 = and(10421,1586) +10419 = or(10420,1587) +10418 = or(10419,1588) +10417 = or(10418,1589) +10416 = and(10417,-1590) +10415 = or(10416,-1591) +10414 = and(10415,1592) +10413 = or(10414,-1593) +10412 = or(10413,-1594) +10411 = or(10412,-1595) +10410 = and(10411,1596) +10409 = or(10410,-1597) +10408 = and(10409,1598) +10407 = and(10408,-1599) +10406 = or(10407,1600) +10405 = or(10406,1601) +10404 = and(10405,-1602) +10403 = and(10404,1603) +10402 = and(10403,1604) +10401 = and(10402,-1605) +10400 = or(10401,1606) +10399 = and(10400,-1607) +10398 = and(10399,-1608) +10397 = and(10398,1609) +10396 = or(10397,-1610) +10395 = or(10396,-1611) +10394 = and(10395,1612) +10393 = or(10394,-1613) +10392 = and(10393,-1614) +10391 = and(10392,1615) +10390 = and(10391,-1616) +10389 = or(10390,-1617) +10388 = and(10389,1618) +10387 = and(10388,1619) +10386 = or(10387,1620) +10385 = or(10386,-1621) +10384 = or(10385,-1622) +10383 = or(10384,1623) +10382 = or(10383,-1624) +10381 = and(10382,1625) +10380 = and(10381,-1626) +10379 = or(10380,-1627) +10378 = and(10379,1628) +10377 = and(10378,1629) +10376 = or(10377,1630) +10375 = or(10376,-1631) +10374 = or(10375,1632) +10373 = or(10374,1633) +10372 = or(10373,1634) +10371 = and(10372,1635) +10370 = and(10371,-1636) +10369 = or(10370,1637) +10368 = or(10369,-1638) +10367 = or(10368,1639) +10366 = and(10367,1640) +10365 = or(10366,-1641) +10364 = and(10365,-1642) +10363 = or(10364,-1643) +10362 = or(10363,1644) +10361 = or(10362,1645) +10360 = or(10361,-1646) +10359 = or(10360,1647) +10358 = and(10359,1648) +10357 = and(10358,1649) +10356 = or(10357,-1650) +10355 = and(10356,-1651) +10354 = and(10355,1652) +10353 = or(10354,1653) +10352 = and(10353,-1654) +10351 = or(10352,1655) +10350 = and(10351,1656) +10349 = or(10350,1657) +10348 = or(10349,1658) +10347 = or(10348,1659) +10346 = and(10347,-1660) +10345 = or(10346,1661) +10344 = and(10345,-1662) +10343 = or(10344,1663) +10342 = and(10343,1664) +10341 = and(10342,-1665) +10340 = and(10341,-1666) +10339 = or(10340,1667) +10338 = and(10339,1668) +10337 = or(10338,-1669) +10336 = or(10337,-1670) +10335 = and(10336,1671) +10334 = or(10335,-1672) +10333 = or(10334,-1673) +10332 = or(10333,1674) +10331 = or(10332,-1675) +10330 = or(10331,-1676) +10329 = and(10330,-1677) +10328 = or(10329,1678) +10327 = and(10328,-1679) +10326 = and(10327,-1680) +10325 = and(10326,-1681) +10324 = and(10325,1682) +10323 = and(10324,1683) +10322 = and(10323,1684) +10321 = or(10322,1685) +10320 = or(10321,-1686) +10319 = and(10320,1687) +10318 = and(10319,-1688) +10317 = or(10318,1689) +10316 = and(10317,1690) +10315 = and(10316,1691) +10314 = or(10315,-1692) +10313 = or(10314,-1693) +10312 = and(10313,1694) +10311 = and(10312,-1695) +10310 = and(10311,1696) +10309 = and(10310,1697) +10308 = or(10309,1698) +10307 = and(10308,-1699) +10306 = or(10307,-1700) +10305 = or(10306,-1701) +10304 = and(10305,1702) +10303 = or(10304,1703) +10302 = and(10303,-1704) +10301 = or(10302,1705) +10300 = or(10301,1706) +10299 = or(10300,1707) +10298 = or(10299,1708) +10297 = and(10298,-1709) +10296 = and(10297,-1710) +10295 = or(10296,1711) +10294 = or(10295,-1712) +10293 = and(10294,1713) +10292 = or(10293,-1714) +10291 = and(10292,-1715) +10290 = or(10291,-1716) +10289 = and(10290,1717) +10288 = and(10289,1718) +10287 = or(10288,1719) +10286 = and(10287,-1720) +10285 = and(10286,1721) +10284 = and(10285,1722) +10283 = or(10284,-1723) +10282 = and(10283,1724) +10281 = or(10282,-1725) +10280 = or(10281,-1726) +10279 = and(10280,-1727) +10278 = or(10279,-1728) +10277 = and(10278,-1729) +10276 = or(10277,1730) +10275 = or(10276,1731) +10274 = and(10275,1732) +10273 = or(10274,-1733) +10272 = and(10273,1734) +10271 = and(10272,-1735) +10270 = or(10271,1736) +10269 = and(10270,1737) +10268 = or(10269,-1738) +10267 = and(10268,-1739) +10266 = and(10267,1740) +10265 = or(10266,1741) +10264 = and(10265,1742) +10263 = and(10264,-1743) +10262 = or(10263,1744) +10261 = or(10262,1745) +10260 = and(10261,-1746) +10259 = or(10260,-1747) +10258 = and(10259,-1748) +10257 = and(10258,-1749) +10256 = or(10257,1750) +10255 = or(10256,-1751) +10254 = or(10255,1752) +10253 = and(10254,1753) +10252 = and(10253,-1754) +10251 = or(10252,-1755) +10250 = and(10251,-1756) +10249 = and(10250,-1757) +10248 = and(10249,-1758) +10247 = and(10248,-1759) +10246 = and(10247,-1760) +10245 = or(10246,1761) +10244 = and(10245,-1762) +10243 = and(10244,1763) +10242 = and(10243,-1764) +10241 = or(10242,1765) +10240 = and(10241,-1766) +10239 = or(10240,-1767) +10238 = or(10239,-1768) +10237 = and(10238,-1769) +10236 = or(10237,-1770) +10235 = and(10236,1771) +10234 = or(10235,-1772) +10233 = or(10234,1773) +10232 = and(10233,-1774) +10231 = and(10232,1775) +10230 = or(10231,-1776) +10229 = or(10230,1777) +10228 = and(10229,1778) +10227 = and(10228,1779) +10226 = or(10227,-1780) +10225 = and(10226,-1781) +10224 = or(10225,1782) +10223 = and(10224,-1783) +10222 = or(10223,1784) +10221 = or(10222,1785) +10220 = or(10221,-1786) +10219 = or(10220,-1787) +10218 = or(10219,-1788) +10217 = and(10218,-1789) +10216 = or(10217,-1790) +10215 = or(10216,-1791) +10214 = and(10215,1792) +10213 = or(10214,-1793) +10212 = and(10213,1794) +10211 = or(10212,-1795) +10210 = or(10211,1796) +10209 = and(10210,1797) +10208 = or(10209,-1798) +10207 = and(10208,-1799) +10206 = and(10207,-1800) +10205 = or(10206,1801) +10204 = and(10205,-1802) +10203 = or(10204,1803) +10202 = and(10203,-1804) +10201 = or(10202,-1805) +10200 = and(10201,-1806) +10199 = or(10200,1807) +10198 = or(10199,-1808) +10197 = or(10198,1809) +10196 = and(10197,1810) +10195 = and(10196,-1811) +10194 = and(10195,-1812) +10193 = or(10194,1813) +10192 = or(10193,1814) +10191 = and(10192,1815) +10190 = or(10191,-1816) +10189 = or(10190,1817) +10188 = or(10189,-1818) +10187 = and(10188,1819) +10186 = or(10187,1820) +10185 = and(10186,-1821) +10184 = and(10185,1822) +10183 = and(10184,-1823) +10182 = or(10183,1824) +10181 = or(10182,1825) +10180 = and(10181,-1826) +10179 = or(10180,1827) +10178 = and(10179,1828) +10177 = or(10178,-1829) +10176 = or(10177,1830) +10175 = and(10176,-1831) +10174 = or(10175,-1832) +10173 = or(10174,1833) +10172 = or(10173,1834) +10171 = or(10172,1835) +10170 = and(10171,1836) +10169 = and(10170,-1837) +10168 = and(10169,-1838) +10167 = or(10168,1839) +10166 = and(10167,-1840) +10165 = or(10166,-1841) +10164 = and(10165,1842) +10163 = and(10164,1843) +10162 = and(10163,-1844) +10161 = or(10162,1845) +10160 = and(10161,1846) +10159 = and(10160,1847) +10158 = and(10159,1848) +10157 = or(10158,-1849) +10156 = or(10157,1850) +10155 = or(10156,-1851) +10154 = and(10155,1852) +10153 = or(10154,1853) +10152 = and(10153,-1854) +10151 = or(10152,1855) +10150 = and(10151,-1856) +10149 = or(10150,-1857) +10148 = or(10149,-1858) +10147 = and(10148,1859) +10146 = and(10147,-1860) +10145 = and(10146,1861) +10144 = and(10145,-1862) +10143 = or(10144,1863) +10142 = or(10143,1864) +10141 = or(10142,-1865) +10140 = and(10141,1866) +10139 = or(10140,1867) +10138 = and(10139,1868) +10137 = or(10138,-1869) +10136 = and(10137,1870) +10135 = and(10136,1871) +10134 = and(10135,1872) +10133 = and(10134,1873) +10132 = or(10133,1874) +10131 = and(10132,-1875) +10130 = and(10131,1876) +10129 = and(10130,-1877) +10128 = or(10129,-1878) +10127 = or(10128,1879) +10126 = or(10127,-1880) +10125 = or(10126,1881) +10124 = and(10125,-1882) +10123 = or(10124,1883) +10122 = and(10123,-1884) +10121 = or(10122,-1885) +10120 = and(10121,-1886) +10119 = or(10120,1887) +10118 = or(10119,-1888) +10117 = and(10118,-1889) +10116 = or(10117,1890) +10115 = and(10116,1891) +10114 = or(10115,-1892) +10113 = or(10114,1893) +10112 = and(10113,-1894) +10111 = and(10112,1895) +10110 = or(10111,-1896) +10109 = or(10110,1897) +10108 = and(10109,-1898) +10107 = and(10108,1899) +10106 = and(10107,-1900) +10105 = and(10106,-1901) +10104 = and(10105,1902) +10103 = or(10104,-1903) +10102 = or(10103,1904) +10101 = and(10102,-1905) +10100 = or(10101,-1906) +10099 = or(10100,-1907) +10098 = or(10099,-1908) +10097 = and(10098,-1909) +10096 = or(10097,1910) +10095 = and(10096,-1911) +10094 = and(10095,1912) +10093 = and(10094,1913) +10092 = and(10093,-1914) +10091 = or(10092,1915) +10090 = or(10091,1916) +10089 = and(10090,1917) +10088 = or(10089,1918) +10087 = and(10088,-1919) +10086 = or(10087,1920) +10085 = or(10086,1921) +10084 = or(10085,1922) +10083 = or(10084,1923) +10082 = and(10083,-1924) +10081 = and(10082,1925) +10080 = and(10081,1926) +10079 = and(10080,-1927) +10078 = or(10079,1928) +10077 = and(10078,1929) +10076 = or(10077,1930) +10075 = or(10076,-1931) +10074 = and(10075,-1932) +10073 = or(10074,1933) +10072 = or(10073,1934) +10071 = or(10072,-1935) +10070 = and(10071,1936) +10069 = and(10070,-1937) +10068 = or(10069,-1938) +10067 = or(10068,-1939) +10066 = and(10067,1940) +10065 = or(10066,1941) +10064 = or(10065,1942) +10063 = and(10064,-1943) +10062 = and(10063,1944) +10061 = and(10062,1945) +10060 = and(10061,1946) +10059 = and(10060,1947) +10058 = or(10059,1948) +10057 = or(10058,1949) +10056 = and(10057,-1950) +10055 = and(10056,1951) +10054 = and(10055,-1952) +10053 = and(10054,-1953) +10052 = and(10053,-1954) +10051 = or(10052,1955) +10050 = or(10051,1956) +10049 = and(10050,-1957) +10048 = and(10049,-1958) +10047 = and(10048,1959) +10046 = or(10047,1960) +10045 = and(10046,1961) +10044 = or(10045,1962) +10043 = or(10044,1963) +10042 = and(10043,-1964) +10041 = or(10042,1965) +10040 = and(10041,-1966) +10039 = and(10040,-1967) +10038 = or(10039,-1968) +10037 = or(10038,1969) +10036 = and(10037,-1970) +10035 = and(10036,-1971) +10034 = or(10035,-1972) +10033 = and(10034,1973) +10032 = and(10033,1974) +10031 = or(10032,-1975) +10030 = and(10031,1976) +10029 = or(10030,-1977) +10028 = and(10029,-1978) +10027 = and(10028,1979) +10026 = and(10027,1980) +10025 = or(10026,1981) +10024 = and(10025,1982) +10023 = or(10024,1983) +10022 = or(10023,1984) +10021 = and(10022,-1985) +10020 = or(10021,-1986) +10019 = and(10020,-1987) +10018 = or(10019,-1988) +10017 = and(10018,-1989) +10016 = or(10017,-1990) +10015 = and(10016,1991) +10014 = and(10015,1992) +10013 = or(10014,1993) +10012 = or(10013,-1994) +10011 = and(10012,-1995) +10010 = or(10011,1996) +10009 = or(10010,1997) +10008 = and(10009,1998) +10007 = or(10008,-1999) +10006 = and(10007,-2000) +10005 = or(10006,2001) +10004 = or(10005,2002) +10003 = and(10004,2003) +10002 = and(10003,2004) +10001 = or(10002,-2005) +10000 = and(10001,-2006) +9999 = or(10000,2007) +9998 = and(9999,-2008) +9997 = or(9998,-2009) +9996 = and(9997,2010) +9995 = or(9996,-2011) +9994 = and(9995,-2012) +9993 = or(9994,-2013) +9992 = and(9993,-2014) +9991 = or(9992,-2015) +9990 = or(9991,-2016) +9989 = and(9990,2017) +9988 = and(9989,2018) +9987 = or(9988,-2019) +9986 = and(9987,2020) +9985 = and(9986,2021) +9984 = and(9985,2022) +9983 = or(9984,2023) +9982 = or(9983,2024) +9981 = and(9982,2025) +9980 = and(9981,-2026) +9979 = and(9980,2027) +9978 = and(9979,-2028) +9977 = or(9978,2029) +9976 = or(9977,2030) +9975 = and(9976,-2031) +9974 = or(9975,2032) +9973 = and(9974,-2033) +9972 = or(9973,2034) +9971 = and(9972,2035) +9970 = or(9971,-2036) +9969 = or(9970,-2037) +9968 = and(9969,-2038) +9967 = or(9968,2039) +9966 = and(9967,2040) +9965 = or(9966,2041) +9964 = and(9965,-2042) +9963 = or(9964,2043) +9962 = or(9963,-2044) +9961 = and(9962,2045) +9960 = and(9961,2046) +9959 = or(9960,2047) +9958 = or(9959,2048) +9957 = and(9958,2049) +9956 = or(9957,2050) +9955 = or(9956,2051) +9954 = and(9955,-2052) +9953 = or(9954,-2053) +9952 = and(9953,2054) +9951 = and(9952,-2055) +9950 = or(9951,-2056) +9949 = or(9950,-2057) +9948 = and(9949,-2058) +9947 = or(9948,2059) +9946 = or(9947,-2060) +9945 = or(9946,2061) +9944 = and(9945,2062) +9943 = and(9944,2063) +9942 = or(9943,2064) +9941 = and(9942,2065) +9940 = or(9941,-2066) +9939 = and(9940,-2067) +9938 = and(9939,2068) +9937 = and(9938,-2069) +9936 = and(9937,2070) +9935 = or(9936,2071) +9934 = and(9935,-2072) +9933 = or(9934,-2073) +9932 = or(9933,-2074) +9931 = or(9932,2075) +9930 = or(9931,-2076) +9929 = and(9930,-2077) +9928 = and(9929,-2078) +9927 = and(9928,-2079) +9926 = or(9927,2080) +9925 = and(9926,2081) +9924 = or(9925,2082) +9923 = or(9924,-2083) +9922 = and(9923,2084) +9921 = and(9922,-2085) +9920 = and(9921,-2086) +9919 = and(9920,-2087) +9918 = and(9919,2088) +9917 = and(9918,2089) +9916 = or(9917,-2090) +9915 = and(9916,-2091) +9914 = and(9915,2092) +9913 = and(9914,2093) +9912 = and(9913,2094) +9911 = and(9912,-2095) +9910 = or(9911,-2096) +9909 = or(9910,2097) +9908 = or(9909,-2098) +9907 = or(9908,-2099) +9906 = or(9907,-2100) +9905 = and(9906,2101) +9904 = and(9905,2102) +9903 = or(9904,2103) +9902 = and(9903,2104) +9901 = or(9902,-2105) +9900 = or(9901,-2106) +9899 = or(9900,2107) +9898 = or(9899,2108) +9897 = and(9898,2109) +9896 = and(9897,2110) +9895 = and(9896,-2111) +9894 = and(9895,2112) +9893 = or(9894,-2113) +9892 = and(9893,2114) +9891 = or(9892,-2115) +9890 = or(9891,-2116) +9889 = and(9890,-2117) +9888 = or(9889,2118) +9887 = or(9888,2119) +9886 = and(9887,-2120) +9885 = and(9886,-2121) +9884 = or(9885,-2122) +9883 = or(9884,2123) +9882 = or(9883,2124) +9881 = and(9882,2125) +9880 = and(9881,-2126) +9879 = and(9880,2127) +9878 = or(9879,-2128) +9877 = or(9878,2129) +9876 = or(9877,2130) +9875 = and(9876,-2131) +9874 = and(9875,-2132) +9873 = or(9874,-2133) +9872 = and(9873,-2134) +9871 = or(9872,2135) +9870 = or(9871,-2136) +9869 = or(9870,2137) +9868 = and(9869,-2138) +9867 = or(9868,2139) +9866 = or(9867,-2140) +9865 = and(9866,-2141) +9864 = or(9865,2142) +9863 = or(9864,-2143) +9862 = and(9863,2144) +9861 = and(9862,-2145) +9860 = and(9861,2146) +9859 = and(9860,2147) +9858 = or(9859,-2148) +9857 = and(9858,2149) +9856 = or(9857,-2150) +9855 = or(9856,-2151) +9854 = and(9855,-2152) +9853 = or(9854,-2153) +9852 = or(9853,2154) +9851 = and(9852,-2155) +9850 = or(9851,2156) +9849 = and(9850,2157) +9848 = and(9849,2158) +9847 = or(9848,-2159) +9846 = and(9847,-2160) +9845 = and(9846,-2161) +9844 = and(9845,2162) +9843 = or(9844,-2163) +9842 = and(9843,2164) +9841 = or(9842,-2165) +9840 = and(9841,2166) +9839 = and(9840,-2167) +9838 = or(9839,2168) +9837 = and(9838,-2169) +9836 = or(9837,2170) +9835 = and(9836,-2171) +9834 = and(9835,-2172) +9833 = or(9834,2173) +9832 = and(9833,-2174) +9831 = or(9832,2175) +9830 = and(9831,-2176) +9829 = or(9830,-2177) +9828 = and(9829,-2178) +9827 = or(9828,-2179) +9826 = and(9827,-2180) +9825 = and(9826,2181) +9824 = and(9825,2182) +9823 = and(9824,-2183) +9822 = and(9823,2184) +9821 = or(9822,2185) +9820 = or(9821,2186) +9819 = or(9820,-2187) +9818 = and(9819,2188) +9817 = and(9818,-2189) +9816 = or(9817,2190) +9815 = and(9816,-2191) +9814 = or(9815,2192) +9813 = or(9814,2193) +9812 = or(9813,2194) +9811 = or(9812,-2195) +9810 = and(9811,-2196) +9809 = and(9810,-2197) +9808 = and(9809,2198) +9807 = and(9808,-2199) +9806 = or(9807,2200) +9805 = and(9806,-2201) +9804 = or(9805,2202) +9803 = and(9804,-2203) +9802 = or(9803,2204) +9801 = or(9802,-2205) +9800 = and(9801,-2206) +9799 = or(9800,2207) +9798 = and(9799,-2208) +9797 = and(9798,2209) +9796 = or(9797,2210) +9795 = or(9796,-2211) +9794 = and(9795,-2212) +9793 = or(9794,-2213) +9792 = and(9793,2214) +9791 = or(9792,-2215) +9790 = or(9791,2216) +9789 = or(9790,-2217) +9788 = and(9789,2218) +9787 = or(9788,2219) +9786 = or(9787,-2220) +9785 = and(9786,-2221) +9784 = or(9785,-2222) +9783 = or(9784,-2223) +9782 = and(9783,2224) +9781 = and(9782,2225) +9780 = or(9781,2226) +9779 = or(9780,-2227) +9778 = or(9779,-2228) +9777 = and(9778,-2229) +9776 = or(9777,2230) +9775 = and(9776,2231) +9774 = and(9775,-2232) +9773 = and(9774,-2233) +9772 = or(9773,-2234) +9771 = and(9772,2235) +9770 = and(9771,2236) +9769 = or(9770,-2237) +9768 = or(9769,2238) +9767 = and(9768,-2239) +9766 = and(9767,2240) +9765 = and(9766,-2241) +9764 = or(9765,2242) +9763 = or(9764,2243) +9762 = and(9763,2244) +9761 = and(9762,2245) +9760 = and(9761,2246) +9759 = or(9760,-2247) +9758 = or(9759,2248) +9757 = and(9758,2249) +9756 = and(9757,2250) +9755 = and(9756,-2251) +9754 = and(9755,2252) +9753 = or(9754,2253) +9752 = and(9753,2254) +9751 = or(9752,-2255) +9750 = and(9751,-2256) +9749 = and(9750,-2257) +9748 = or(9749,-2258) +9747 = and(9748,-2259) +9746 = or(9747,2260) +9745 = or(9746,-2261) +9744 = and(9745,-2262) +9743 = or(9744,-2263) +9742 = or(9743,2264) +9741 = or(9742,2265) +9740 = and(9741,-2266) +9739 = or(9740,2267) +9738 = and(9739,2268) +9737 = and(9738,2269) +9736 = and(9737,2270) +9735 = or(9736,-2271) +9734 = or(9735,2272) +9733 = and(9734,-2273) +9732 = or(9733,-2274) +9731 = and(9732,-2275) +9730 = or(9731,2276) +9729 = or(9730,-2277) +9728 = and(9729,2278) +9727 = or(9728,-2279) +9726 = and(9727,-2280) +9725 = or(9726,-2281) +9724 = and(9725,2282) +9723 = or(9724,-2283) +9722 = or(9723,2284) +9721 = and(9722,2285) +9720 = and(9721,2286) +9719 = or(9720,-2287) +9718 = and(9719,2288) +9717 = or(9718,-2289) +9716 = and(9717,2290) +9715 = and(9716,-2291) +9714 = and(9715,2292) +9713 = and(9714,2293) +9712 = or(9713,2294) +9711 = or(9712,-2295) +9710 = and(9711,2296) +9709 = and(9710,2297) +9708 = or(9709,-2298) +9707 = or(9708,2299) +9706 = and(9707,2300) +9705 = or(9706,2301) +9704 = and(9705,2302) +9703 = and(9704,-2303) +9702 = or(9703,2304) +9701 = and(9702,-2305) +9700 = and(9701,2306) +9699 = and(9700,2307) +9698 = or(9699,-2308) +9697 = and(9698,-2309) +9696 = and(9697,2310) +9695 = or(9696,2311) +9694 = or(9695,-2312) +9693 = or(9694,-2313) +9692 = and(9693,-2314) +9691 = or(9692,2315) +9690 = and(9691,-2316) +9689 = or(9690,2317) +9688 = or(9689,-2318) +9687 = or(9688,2319) +9686 = and(9687,-2320) +9685 = and(9686,-2321) +9684 = or(9685,2322) +9683 = and(9684,2323) +9682 = and(9683,2324) +9681 = or(9682,2325) +9680 = or(9681,2326) +9679 = and(9680,-2327) +9678 = or(9679,2328) +9677 = or(9678,-2329) +9676 = and(9677,2330) +9675 = or(9676,-2331) +9674 = and(9675,-2332) +9673 = or(9674,2333) +9672 = and(9673,-2334) +9671 = and(9672,2335) +9670 = or(9671,-2336) +9669 = and(9670,-2337) +9668 = or(9669,2338) +9667 = or(9668,-2339) +9666 = or(9667,2340) +9665 = and(9666,-2341) +9664 = or(9665,-2342) +9663 = or(9664,-2343) +9662 = and(9663,2344) +9661 = or(9662,2345) +9660 = and(9661,2346) +9659 = and(9660,2347) +9658 = or(9659,2348) +9657 = and(9658,-2349) +9656 = and(9657,-2350) +9655 = or(9656,-2351) +9654 = and(9655,2352) +9653 = or(9654,-2353) +9652 = or(9653,-2354) +9651 = or(9652,2355) +9650 = or(9651,-2356) +9649 = and(9650,-2357) +9648 = and(9649,-2358) +9647 = or(9648,-2359) +9646 = or(9647,2360) +9645 = or(9646,-2361) +9644 = and(9645,-2362) +9643 = and(9644,-2363) +9642 = or(9643,2364) +9641 = or(9642,2365) +9640 = or(9641,-2366) +9639 = or(9640,2367) +9638 = and(9639,2368) +9637 = and(9638,-2369) +9636 = or(9637,-2370) +9635 = and(9636,-2371) +9634 = or(9635,2372) +9633 = and(9634,2373) +9632 = and(9633,-2374) +9631 = or(9632,2375) +9630 = and(9631,-2376) +9629 = or(9630,-2377) +9628 = and(9629,2378) +9627 = or(9628,-2379) +9626 = and(9627,2380) +9625 = or(9626,-2381) +9624 = and(9625,-2382) +9623 = or(9624,2383) +9622 = or(9623,-2384) +9621 = and(9622,-2385) +9620 = or(9621,-2386) +9619 = and(9620,-2387) +9618 = and(9619,2388) +9617 = or(9618,-2389) +9616 = or(9617,-2390) +9615 = or(9616,-2391) +9614 = and(9615,2392) +9613 = and(9614,2393) +9612 = and(9613,2394) +9611 = or(9612,-2395) +9610 = and(9611,2396) +9609 = and(9610,2397) +9608 = and(9609,2398) +9607 = and(9608,2399) +9606 = or(9607,2400) +9605 = and(9606,-2401) +9604 = or(9605,-2402) +9603 = or(9604,2403) +9602 = or(9603,2404) +9601 = and(9602,2405) +9600 = or(9601,-2406) +9599 = or(9600,2407) +9598 = or(9599,-2408) +9597 = and(9598,2409) +9596 = or(9597,-2410) +9595 = and(9596,2411) +9594 = and(9595,-2412) +9593 = or(9594,2413) +9592 = or(9593,-2414) +9591 = and(9592,-2415) +9590 = or(9591,2416) +9589 = and(9590,-2417) +9588 = and(9589,-2418) +9587 = and(9588,-2419) +9586 = and(9587,2420) +9585 = or(9586,2421) +9584 = and(9585,2422) +9583 = and(9584,2423) +9582 = or(9583,2424) +9581 = or(9582,-2425) +9580 = or(9581,-2426) +9579 = or(9580,2427) +9578 = and(9579,-2428) +9577 = and(9578,-2429) +9576 = or(9577,2430) +9575 = and(9576,2431) +9574 = and(9575,2432) +9573 = or(9574,2433) +9572 = and(9573,-2434) +9571 = or(9572,-2435) +9570 = or(9571,-2436) +9569 = and(9570,-2437) +9568 = and(9569,2438) +9567 = or(9568,-2439) +9566 = and(9567,-2440) +9565 = or(9566,-2441) +9564 = or(9565,-2442) +9563 = or(9564,-2443) +9562 = and(9563,2444) +9561 = or(9562,2445) +9560 = and(9561,-2446) +9559 = or(9560,2447) +9558 = and(9559,2448) +9557 = and(9558,2449) +9556 = and(9557,2450) +9555 = and(9556,2451) +9554 = or(9555,2452) +9553 = and(9554,-2453) +9552 = and(9553,-2454) +9551 = and(9552,2455) +9550 = or(9551,-2456) +9549 = or(9550,-2457) +9548 = or(9549,2458) +9547 = or(9548,2459) +9546 = and(9547,2460) +9545 = or(9546,2461) +9544 = or(9545,2462) +9543 = or(9544,2463) +9542 = or(9543,2464) +9541 = or(9542,2465) +9540 = and(9541,2466) +9539 = and(9540,-2467) +9538 = and(9539,-2468) +9537 = or(9538,-2469) +9536 = and(9537,-2470) +9535 = or(9536,-2471) +9534 = and(9535,-2472) +9533 = and(9534,2473) +9532 = or(9533,-2474) +9531 = and(9532,2475) +9530 = and(9531,-2476) +9529 = or(9530,-2477) +9528 = and(9529,2478) +9527 = and(9528,-2479) +9526 = or(9527,-2480) +9525 = and(9526,2481) +9524 = and(9525,2482) +9523 = and(9524,2483) +9522 = or(9523,2484) +9521 = or(9522,-2485) +9520 = and(9521,-2486) +9519 = or(9520,-2487) +9518 = or(9519,-2488) +9517 = and(9518,2489) +9516 = and(9517,2490) +9515 = and(9516,2491) +9514 = and(9515,2492) +9513 = or(9514,-2493) +9512 = and(9513,2494) +9511 = or(9512,-2495) +9510 = or(9511,2496) +9509 = or(9510,2497) +9508 = and(9509,2498) +9507 = or(9508,2499) +9506 = or(9507,-2500) +9505 = or(9506,2501) +9504 = or(9505,-2502) +9503 = and(9504,2503) +9502 = or(9503,2504) +9501 = and(9502,-2505) +9500 = and(9501,2506) +9499 = or(9500,-2507) +9498 = or(9499,2508) +9497 = and(9498,-2509) +9496 = or(9497,2510) +9495 = and(9496,2511) +9494 = and(9495,2512) +9493 = and(9494,-2513) +9492 = or(9493,2514) +9491 = and(9492,-2515) +9490 = and(9491,-2516) +9489 = and(9490,2517) +9488 = or(9489,2518) +9487 = and(9488,2519) +9486 = and(9487,2520) +9485 = and(9486,2521) +9484 = or(9485,2522) +9483 = and(9484,-2523) +9482 = or(9483,2524) +9481 = or(9482,2525) +9480 = and(9481,-2526) +9479 = and(9480,2527) +9478 = or(9479,-2528) +9477 = and(9478,2529) +9476 = or(9477,-2530) +9475 = and(9476,2531) +9474 = or(9475,2532) +9473 = or(9474,-2533) +9472 = and(9473,-2534) +9471 = or(9472,2535) +9470 = or(9471,-2536) +9469 = or(9470,-2537) +9468 = or(9469,-2538) +9467 = or(9468,-2539) +9466 = and(9467,2540) +9465 = and(9466,-2541) +9464 = and(9465,2542) +9463 = or(9464,2543) +9462 = and(9463,2544) +9461 = or(9462,2545) +9460 = or(9461,-2546) +9459 = or(9460,2547) +9458 = or(9459,-2548) +9457 = and(9458,-2549) +9456 = and(9457,2550) +9455 = or(9456,2551) +9454 = and(9455,2552) +9453 = or(9454,-2553) +9452 = and(9453,-2554) +9451 = and(9452,-2555) +9450 = or(9451,-2556) +9449 = and(9450,2557) +9448 = and(9449,-2558) +9447 = and(9448,2559) +9446 = and(9447,2560) +9445 = and(9446,2561) +9444 = and(9445,2562) +9443 = or(9444,-2563) +9442 = or(9443,-2564) +9441 = or(9442,2565) +9440 = and(9441,-2566) +9439 = and(9440,-2567) +9438 = and(9439,2568) +9437 = and(9438,2569) +9436 = or(9437,-2570) +9435 = or(9436,-2571) +9434 = and(9435,2572) +9433 = and(9434,-2573) +9432 = or(9433,-2574) +9431 = or(9432,-2575) +9430 = and(9431,2576) +9429 = and(9430,2577) +9428 = and(9429,2578) +9427 = and(9428,2579) +9426 = or(9427,-2580) +9425 = or(9426,2581) +9424 = or(9425,2582) +9423 = and(9424,2583) +9422 = or(9423,-2584) +9421 = and(9422,2585) +9420 = or(9421,-2586) +9419 = or(9420,-2587) +9418 = and(9419,-2588) +9417 = and(9418,2589) +9416 = and(9417,-2590) +9415 = or(9416,-2591) +9414 = or(9415,-2592) +9413 = or(9414,-2593) +9412 = or(9413,-2594) +9411 = and(9412,-2595) +9410 = or(9411,2596) +9409 = or(9410,-2597) +9408 = or(9409,2598) +9407 = or(9408,2599) +9406 = and(9407,2600) +9405 = or(9406,2601) +9404 = and(9405,-2602) +9403 = or(9404,-2603) +9402 = or(9403,-2604) +9401 = or(9402,-2605) +9400 = and(9401,-2606) +9399 = and(9400,2607) +9398 = or(9399,2608) +9397 = and(9398,2609) +9396 = or(9397,-2610) +9395 = and(9396,-2611) +9394 = or(9395,2612) +9393 = and(9394,-2613) +9392 = or(9393,-2614) +9391 = and(9392,-2615) +9390 = or(9391,-2616) +9389 = or(9390,-2617) +9388 = or(9389,-2618) +9387 = and(9388,-2619) +9386 = or(9387,-2620) +9385 = or(9386,2621) +9384 = or(9385,-2622) +9383 = and(9384,2623) +9382 = and(9383,2624) +9381 = and(9382,2625) +9380 = or(9381,2626) +9379 = or(9380,-2627) +9378 = and(9379,2628) +9377 = and(9378,-2629) +9376 = or(9377,2630) +9375 = or(9376,2631) +9374 = or(9375,2632) +9373 = and(9374,-2633) +9372 = and(9373,2634) +9371 = or(9372,2635) +9370 = and(9371,2636) +9369 = or(9370,-2637) +9368 = or(9369,2638) +9367 = and(9368,2639) +9366 = or(9367,-2640) +9365 = and(9366,-2641) +9364 = and(9365,2642) +9363 = or(9364,2643) +9362 = and(9363,-2644) +9361 = or(9362,-2645) +9360 = and(9361,2646) +9359 = or(9360,2647) +9358 = or(9359,2648) +9357 = or(9358,2649) +9356 = and(9357,2650) +9355 = or(9356,-2651) +9354 = or(9355,-2652) +9353 = or(9354,-2653) +9352 = and(9353,2654) +9351 = and(9352,2655) +9350 = and(9351,-2656) +9349 = or(9350,2657) +9348 = and(9349,2658) +9347 = or(9348,2659) +9346 = and(9347,-2660) +9345 = and(9346,2661) +9344 = or(9345,-2662) +9343 = and(9344,2663) +9342 = and(9343,-2664) +9341 = or(9342,2665) +9340 = or(9341,2666) +9339 = or(9340,2667) +9338 = and(9339,2668) +9337 = and(9338,-2669) +9336 = or(9337,2670) +9335 = or(9336,-2671) +9334 = and(9335,2672) +9333 = and(9334,-2673) +9332 = or(9333,2674) +9331 = or(9332,2675) +9330 = and(9331,2676) +9329 = and(9330,2677) +9328 = or(9329,2678) +9327 = and(9328,2679) +9326 = and(9327,2680) +9325 = or(9326,-2681) +9324 = and(9325,2682) +9323 = and(9324,-2683) +9322 = or(9323,2684) +9321 = or(9322,-2685) +9320 = or(9321,2686) +9319 = or(9320,-2687) +9318 = or(9319,-2688) +9317 = and(9318,-2689) +9316 = or(9317,2690) +9315 = or(9316,2691) +9314 = and(9315,-2692) +9313 = or(9314,2693) +9312 = or(9313,2694) +9311 = and(9312,-2695) +9310 = or(9311,-2696) +9309 = or(9310,-2697) +9308 = and(9309,-2698) +9307 = and(9308,2699) +9306 = or(9307,-2700) +9305 = and(9306,-2701) +9304 = and(9305,-2702) +9303 = or(9304,2703) +9302 = or(9303,-2704) +9301 = and(9302,2705) +9300 = or(9301,-2706) +9299 = or(9300,-2707) +9298 = and(9299,2708) +9297 = and(9298,-2709) +9296 = or(9297,2710) +9295 = or(9296,-2711) +9294 = and(9295,-2712) +9293 = or(9294,-2713) +9292 = or(9293,-2714) +9291 = and(9292,-2715) +9290 = or(9291,2716) +9289 = or(9290,2717) +9288 = and(9289,-2718) +9287 = and(9288,-2719) +9286 = and(9287,-2720) +9285 = or(9286,-2721) +9284 = and(9285,-2722) +9283 = or(9284,-2723) +9282 = or(9283,-2724) +9281 = and(9282,-2725) +9280 = or(9281,2726) +9279 = and(9280,2727) +9278 = and(9279,-2728) +9277 = or(9278,2729) +9276 = or(9277,-2730) +9275 = or(9276,2731) +9274 = or(9275,-2732) +9273 = and(9274,2733) +9272 = and(9273,2734) +9271 = and(9272,-2735) +9270 = and(9271,2736) +9269 = or(9270,-2737) +9268 = and(9269,2738) +9267 = or(9268,2739) +9266 = or(9267,-2740) +9265 = and(9266,2741) +9264 = and(9265,2742) +9263 = and(9264,-2743) +9262 = or(9263,2744) +9261 = and(9262,-2745) +9260 = or(9261,-2746) +9259 = or(9260,2747) +9258 = or(9259,2748) +9257 = and(9258,2749) +9256 = or(9257,2750) +9255 = or(9256,-2751) +9254 = and(9255,2752) +9253 = or(9254,-2753) +9252 = and(9253,2754) +9251 = and(9252,-2755) +9250 = and(9251,-2756) +9249 = and(9250,-2757) +9248 = and(9249,2758) +9247 = or(9248,-2759) +9246 = and(9247,-2760) +9245 = and(9246,-2761) +9244 = and(9245,2762) +9243 = or(9244,2763) +9242 = and(9243,2764) +9241 = or(9242,2765) +9240 = or(9241,2766) +9239 = and(9240,2767) +9238 = and(9239,2768) +9237 = or(9238,-2769) +9236 = and(9237,-2770) +9235 = and(9236,-2771) +9234 = or(9235,2772) +9233 = and(9234,-2773) +9232 = or(9233,2774) +9231 = and(9232,2775) +9230 = or(9231,2776) +9229 = or(9230,2777) +9228 = and(9229,-2778) +9227 = and(9228,2779) +9226 = or(9227,-2780) +9225 = and(9226,-2781) +9224 = and(9225,2782) +9223 = or(9224,2783) +9222 = and(9223,2784) +9221 = and(9222,2785) +9220 = or(9221,2786) +9219 = and(9220,-2787) +9218 = and(9219,2788) +9217 = or(9218,2789) +9216 = or(9217,2790) +9215 = and(9216,2791) +9214 = or(9215,-2792) +9213 = or(9214,-2793) +9212 = and(9213,-2794) +9211 = and(9212,2795) +9210 = and(9211,2796) +9209 = and(9210,2797) +9208 = and(9209,-2798) +9207 = and(9208,2799) +9206 = or(9207,2800) +9205 = and(9206,2801) +9204 = and(9205,-2802) +9203 = or(9204,2803) +9202 = or(9203,-2804) +9201 = and(9202,2805) +9200 = or(9201,-2806) +9199 = and(9200,-2807) +9198 = or(9199,-2808) +9197 = and(9198,-2809) +9196 = or(9197,-2810) +9195 = or(9196,-2811) +9194 = and(9195,-2812) +9193 = and(9194,2813) +9192 = or(9193,2814) +9191 = and(9192,-2815) +9190 = and(9191,2816) +9189 = and(9190,-2817) +9188 = or(9189,-2818) +9187 = or(9188,2819) +9186 = or(9187,-2820) +9185 = and(9186,2821) +9184 = or(9185,-2822) +9183 = and(9184,2823) +9182 = and(9183,-2824) +9181 = or(9182,2825) +9180 = or(9181,2826) +9179 = or(9180,2827) +9178 = or(9179,2828) +9177 = and(9178,-2829) +9176 = and(9177,-2830) +9175 = or(9176,2831) +9174 = and(9175,2832) +9173 = or(9174,-2833) +9172 = and(9173,-2834) +9171 = or(9172,2835) +9170 = and(9171,2836) +9169 = or(9170,2837) +9168 = and(9169,2838) +9167 = and(9168,2839) +9166 = or(9167,-2840) +9165 = or(9166,2841) +9164 = and(9165,-2842) +9163 = and(9164,2843) +9162 = and(9163,-2844) +9161 = and(9162,-2845) +9160 = or(9161,2846) +9159 = and(9160,2847) +9158 = or(9159,-2848) +9157 = or(9158,2849) +9156 = and(9157,2850) +9155 = or(9156,-2851) +9154 = or(9155,-2852) +9153 = and(9154,2853) +9152 = and(9153,-2854) +9151 = or(9152,2855) +9150 = and(9151,2856) +9149 = or(9150,-2857) +9148 = and(9149,2858) +9147 = and(9148,-2859) +9146 = or(9147,-2860) +9145 = or(9146,2861) +9144 = and(9145,-2862) +9143 = and(9144,2863) +9142 = and(9143,-2864) +9141 = and(9142,-2865) +9140 = and(9141,2866) +9139 = and(9140,-2867) +9138 = or(9139,-2868) +9137 = and(9138,2869) +9136 = or(9137,-2870) +9135 = or(9136,2871) +9134 = and(9135,-2872) +9133 = and(9134,-2873) +9132 = or(9133,2874) +9131 = and(9132,-2875) +9130 = or(9131,-2876) +9129 = or(9130,2877) +9128 = and(9129,-2878) +9127 = and(9128,-2879) +9126 = and(9127,2880) +9125 = and(9126,2881) +9124 = and(9125,-2882) +9123 = and(9124,2883) +9122 = and(9123,-2884) +9121 = and(9122,2885) +9120 = or(9121,-2886) +9119 = or(9120,-2887) +9118 = or(9119,-2888) +9117 = and(9118,2889) +9116 = or(9117,-2890) +9115 = and(9116,-2891) +9114 = and(9115,-2892) +9113 = and(9114,-2893) +9112 = and(9113,-2894) +9111 = and(9112,-2895) +9110 = or(9111,-2896) +9109 = or(9110,2897) +9108 = or(9109,2898) +9107 = or(9108,-2899) +9106 = and(9107,2900) +9105 = and(9106,2901) +9104 = or(9105,-2902) +9103 = and(9104,-2903) +9102 = and(9103,2904) +9101 = and(9102,2905) +9100 = and(9101,2906) +9099 = or(9100,-2907) +9098 = and(9099,-2908) +9097 = and(9098,-2909) +9096 = or(9097,-2910) +9095 = or(9096,2911) +9094 = or(9095,2912) +9093 = and(9094,-2913) +9092 = and(9093,2914) +9091 = and(9092,2915) +9090 = and(9091,2916) +9089 = or(9090,-2917) +9088 = and(9089,2918) +9087 = or(9088,-2919) +9086 = and(9087,2920) +9085 = and(9086,2921) +9084 = or(9085,2922) +9083 = and(9084,-2923) +9082 = or(9083,2924) +9081 = and(9082,-2925) +9080 = and(9081,2926) +9079 = or(9080,2927) +9078 = or(9079,2928) +9077 = and(9078,-2929) +9076 = or(9077,-2930) +9075 = and(9076,2931) +9074 = and(9075,-2932) +9073 = and(9074,-2933) +9072 = and(9073,2934) +9071 = and(9072,2935) +9070 = or(9071,2936) +9069 = and(9070,2937) +9068 = and(9069,2938) +9067 = and(9068,2939) +9066 = or(9067,2940) +9065 = and(9066,2941) +9064 = and(9065,-2942) +9063 = or(9064,2943) +9062 = and(9063,2944) +9061 = and(9062,-2945) +9060 = or(9061,-2946) +9059 = or(9060,-2947) +9058 = or(9059,2948) +9057 = or(9058,2949) +9056 = or(9057,-2950) +9055 = and(9056,2951) +9054 = and(9055,2952) +9053 = or(9054,2953) +9052 = and(9053,2954) +9051 = and(9052,-2955) +9050 = or(9051,2956) +9049 = or(9050,2957) +9048 = and(9049,2958) +9047 = and(9048,2959) +9046 = or(9047,2960) +9045 = and(9046,-2961) +9044 = and(9045,2962) +9043 = and(9044,2963) +9042 = and(9043,2964) +9041 = or(9042,2965) +9040 = and(9041,-2966) +9039 = or(9040,2967) +9038 = and(9039,2968) +9037 = or(9038,2969) +9036 = and(9037,2970) +9035 = and(9036,-2971) +9034 = or(9035,2972) +9033 = or(9034,-2973) +9032 = or(9033,-2974) +9031 = or(9032,2975) +9030 = and(9031,2976) +9029 = and(9030,-2977) +9028 = and(9029,2978) +9027 = and(9028,-2979) +9026 = or(9027,-2980) +9025 = and(9026,-2981) +9024 = or(9025,2982) +9023 = or(9024,2983) +9022 = or(9023,2984) +9021 = or(9022,-2985) +9020 = and(9021,-2986) +9019 = or(9020,-2987) +9018 = and(9019,2988) +9017 = or(9018,-2989) +9016 = and(9017,-2990) +9015 = or(9016,2991) +9014 = and(9015,-2992) +9013 = or(9014,2993) +9012 = and(9013,2994) +9011 = or(9012,2995) +9010 = or(9011,-2996) +9009 = and(9010,-2997) +9008 = and(9009,-2998) +9007 = and(9008,2999) +9006 = and(9007,-3000) +9005 = or(9006,-3001) +9004 = or(9005,3002) +9003 = and(9004,-3003) +9002 = or(9003,-3004) +9001 = and(9002,3005) +9000 = and(9001,3006) +8999 = or(9000,-3007) +8998 = and(8999,3008) +8997 = and(8998,3009) +8996 = or(8997,-3010) +8995 = and(8996,-3011) +8994 = or(8995,-3012) +8993 = or(8994,-3013) +8992 = and(8993,-3014) +8991 = or(8992,3015) +8990 = and(8991,3016) +8989 = or(8990,-3017) +8988 = or(8989,3018) +8987 = or(8988,3019) +8986 = or(8987,-3020) +8985 = and(8986,3021) +8984 = and(8985,-3022) +8983 = or(8984,-3023) +8982 = and(8983,3024) +8981 = and(8982,-3025) +8980 = and(8981,-3026) +8979 = or(8980,-3027) +8978 = or(8979,-3028) +8977 = or(8978,-3029) +8976 = and(8977,-3030) +8975 = or(8976,-3031) +8974 = or(8975,3032) +8973 = and(8974,3033) +8972 = or(8973,-3034) +8971 = and(8972,-3035) +8970 = or(8971,-3036) +8969 = or(8970,3037) +8968 = and(8969,3038) +8967 = or(8968,3039) +8966 = or(8967,3040) +8965 = and(8966,-3041) +8964 = and(8965,-3042) +8963 = or(8964,-3043) +8962 = and(8963,3044) +8961 = or(8962,3045) +8960 = and(8961,-3046) +8959 = and(8960,3047) +8958 = or(8959,-3048) +8957 = and(8958,-3049) +8956 = and(8957,-3050) +8955 = or(8956,3051) +8954 = and(8955,3052) +8953 = and(8954,3053) +8952 = and(8953,3054) +8951 = and(8952,3055) +8950 = or(8951,3056) +8949 = or(8950,-3057) +8948 = or(8949,3058) +8947 = and(8948,3059) +8946 = or(8947,3060) +8945 = and(8946,-3061) +8944 = and(8945,-3062) +8943 = or(8944,-3063) +8942 = or(8943,3064) +8941 = or(8942,3065) +8940 = and(8941,-3066) +8939 = or(8940,3067) +8938 = and(8939,-3068) +8937 = or(8938,3069) +8936 = or(8937,-3070) +8935 = and(8936,3071) +8934 = or(8935,-3072) +8933 = or(8934,3073) +8932 = or(8933,3074) +8931 = and(8932,-3075) +8930 = and(8931,3076) +8929 = or(8930,-3077) +8928 = or(8929,3078) +8927 = and(8928,-3079) +8926 = and(8927,-3080) +8925 = or(8926,-3081) +8924 = and(8925,3082) +8923 = and(8924,3083) +8922 = and(8923,3084) +8921 = and(8922,-3085) +8920 = and(8921,-3086) +8919 = or(8920,3087) +8918 = and(8919,-3088) +8917 = or(8918,-3089) +8916 = and(8917,3090) +8915 = and(8916,3091) +8914 = or(8915,-3092) +8913 = and(8914,3093) +8912 = and(8913,-3094) +8911 = or(8912,3095) +8910 = and(8911,3096) +8909 = and(8910,-3097) +8908 = and(8909,3098) +8907 = or(8908,3099) +8906 = and(8907,-3100) +8905 = or(8906,-3101) +8904 = or(8905,-3102) +8903 = and(8904,-3103) +8902 = or(8903,-3104) +8901 = and(8902,-3105) +8900 = or(8901,-3106) +8899 = or(8900,-3107) +8898 = and(8899,-3108) +8897 = or(8898,3109) +8896 = and(8897,-3110) +8895 = and(8896,-3111) +8894 = and(8895,3112) +8893 = or(8894,-3113) +8892 = and(8893,-3114) +8891 = or(8892,-3115) +8890 = and(8891,3116) +8889 = and(8890,-3117) +8888 = and(8889,3118) +8887 = and(8888,-3119) +8886 = or(8887,3120) +8885 = and(8886,-3121) +8884 = or(8885,-3122) +8883 = and(8884,-3123) +8882 = or(8883,-3124) +8881 = or(8882,-3125) +8880 = and(8881,-3126) +8879 = and(8880,-3127) +8878 = and(8879,3128) +8877 = and(8878,-3129) +8876 = or(8877,-3130) +8875 = and(8876,-3131) +8874 = or(8875,3132) +8873 = or(8874,-3133) +8872 = and(8873,-3134) +8871 = or(8872,-3135) +8870 = or(8871,3136) +8869 = and(8870,-3137) +8868 = or(8869,-3138) +8867 = and(8868,-3139) +8866 = or(8867,-3140) +8865 = or(8866,3141) +8864 = or(8865,-3142) +8863 = or(8864,-3143) +8862 = and(8863,3144) +8861 = or(8862,-3145) +8860 = and(8861,-3146) +8859 = and(8860,3147) +8858 = or(8859,-3148) +8857 = and(8858,-3149) +8856 = and(8857,3150) +8855 = and(8856,-3151) +8854 = or(8855,3152) +8853 = or(8854,3153) +8852 = and(8853,-3154) +8851 = or(8852,-3155) +8850 = or(8851,-3156) +8849 = and(8850,3157) +8848 = and(8849,3158) +8847 = and(8848,3159) +8846 = or(8847,3160) +8845 = and(8846,-3161) +8844 = or(8845,-3162) +8843 = or(8844,-3163) +8842 = or(8843,3164) +8841 = or(8842,-3165) +8840 = and(8841,3166) +8839 = and(8840,-3167) +8838 = and(8839,-3168) +8837 = or(8838,3169) +8836 = and(8837,-3170) +8835 = or(8836,3171) +8834 = and(8835,3172) +8833 = and(8834,-3173) +8832 = and(8833,-3174) +8831 = and(8832,-3175) +8830 = or(8831,3176) +8829 = and(8830,3177) +8828 = or(8829,-3178) +8827 = or(8828,3179) +8826 = and(8827,3180) +8825 = and(8826,3181) +8824 = or(8825,3182) +8823 = and(8824,3183) +8822 = and(8823,3184) +8821 = or(8822,3185) +8820 = or(8821,3186) +8819 = and(8820,3187) +8818 = and(8819,3188) +8817 = and(8818,3189) +8816 = or(8817,3190) +8815 = and(8816,-3191) +8814 = or(8815,-3192) +8813 = or(8814,-3193) +8812 = or(8813,3194) +8811 = or(8812,-3195) +8810 = and(8811,3196) +8809 = or(8810,3197) +8808 = or(8809,3198) +8807 = and(8808,-3199) +8806 = or(8807,-3200) +8805 = and(8806,-3201) +8804 = or(8805,-3202) +8803 = and(8804,3203) +8802 = and(8803,-3204) +8801 = or(8802,3205) +8800 = and(8801,-3206) +8799 = and(8800,3207) +8798 = and(8799,3208) +8797 = or(8798,3209) +8796 = or(8797,-3210) +8795 = and(8796,-3211) +8794 = and(8795,-3212) +8793 = and(8794,3213) +8792 = or(8793,-3214) +8791 = and(8792,-3215) +8790 = or(8791,3216) +8789 = or(8790,3217) +8788 = and(8789,3218) +8787 = and(8788,-3219) +8786 = and(8787,3220) +8785 = or(8786,-3221) +8784 = and(8785,-3222) +8783 = or(8784,-3223) +8782 = and(8783,3224) +8781 = or(8782,3225) +8780 = or(8781,-3226) +8779 = and(8780,-3227) +8778 = or(8779,3228) +8777 = or(8778,3229) +8776 = and(8777,-3230) +8775 = and(8776,3231) +8774 = and(8775,-3232) +8773 = and(8774,-3233) +8772 = or(8773,-3234) +8771 = and(8772,-3235) +8770 = and(8771,-3236) +8769 = and(8770,-3237) +8768 = or(8769,-3238) +8767 = and(8768,-3239) +8766 = or(8767,3240) +8765 = or(8766,3241) +8764 = and(8765,3242) +8763 = and(8764,3243) +8762 = or(8763,-3244) +8761 = and(8762,-3245) +8760 = and(8761,-3246) +8759 = or(8760,-3247) +8758 = and(8759,3248) +8757 = or(8758,-3249) +8756 = or(8757,-3250) +8755 = and(8756,-3251) +8754 = and(8755,3252) +8753 = or(8754,-3253) +8752 = and(8753,-3254) +8751 = or(8752,3255) +8750 = or(8751,-3256) +8749 = and(8750,-3257) +8748 = and(8749,-3258) +8747 = and(8748,3259) +8746 = and(8747,-3260) +8745 = or(8746,-3261) +8744 = or(8745,3262) +8743 = and(8744,3263) +8742 = or(8743,-3264) +8741 = and(8742,3265) +8740 = or(8741,3266) +8739 = and(8740,3267) +8738 = or(8739,-3268) +8737 = and(8738,-3269) +8736 = or(8737,-3270) +8735 = or(8736,-3271) +8734 = and(8735,-3272) +8733 = or(8734,-3273) +8732 = and(8733,-3274) +8731 = or(8732,-3275) +8730 = and(8731,3276) +8729 = and(8730,3277) +8728 = and(8729,-3278) +8727 = and(8728,-3279) +8726 = and(8727,-3280) +8725 = and(8726,3281) +8724 = and(8725,-3282) +8723 = or(8724,3283) +8722 = or(8723,-3284) +8721 = or(8722,-3285) +8720 = and(8721,-3286) +8719 = and(8720,3287) +8718 = or(8719,3288) +8717 = and(8718,-3289) +8716 = and(8717,-3290) +8715 = and(8716,3291) +8714 = or(8715,3292) +8713 = and(8714,-3293) +8712 = or(8713,-3294) +8711 = or(8712,3295) +8710 = or(8711,3296) +8709 = and(8710,3297) +8708 = and(8709,-3298) +8707 = and(8708,-3299) +8706 = or(8707,-3300) +8705 = or(8706,3301) +8704 = and(8705,-3302) +8703 = or(8704,-3303) +8702 = and(8703,-3304) +8701 = and(8702,3305) +8700 = and(8701,-3306) +8699 = or(8700,3307) +8698 = or(8699,3308) +8697 = or(8698,-3309) +8696 = and(8697,3310) +8695 = and(8696,-3311) +8694 = or(8695,3312) +8693 = and(8694,3313) +8692 = and(8693,-3314) +8691 = and(8692,-3315) +8690 = or(8691,3316) +8689 = or(8690,3317) +8688 = and(8689,3318) +8687 = or(8688,-3319) +8686 = and(8687,-3320) +8685 = or(8686,-3321) +8684 = or(8685,-3322) +8683 = or(8684,3323) +8682 = and(8683,3324) +8681 = and(8682,3325) +8680 = and(8681,3326) +8679 = and(8680,-3327) +8678 = or(8679,3328) +8677 = and(8678,3329) +8676 = or(8677,3330) +8675 = and(8676,-3331) +8674 = and(8675,-3332) +8673 = and(8674,-3333) +8672 = or(8673,-3334) +8671 = and(8672,3335) +8670 = and(8671,3336) +8669 = or(8670,-3337) +8668 = or(8669,-3338) +8667 = and(8668,-3339) +8666 = and(8667,3340) +8665 = or(8666,-3341) +8664 = and(8665,3342) +8663 = or(8664,-3343) +8662 = and(8663,3344) +8661 = and(8662,-3345) +8660 = or(8661,3346) +8659 = and(8660,-3347) +8658 = and(8659,-3348) +8657 = or(8658,-3349) +8656 = and(8657,3350) +8655 = or(8656,3351) +8654 = or(8655,-3352) +8653 = or(8654,3353) +8652 = and(8653,3354) +8651 = or(8652,3355) +8650 = and(8651,-3356) +8649 = and(8650,3357) +8648 = or(8649,3358) +8647 = and(8648,3359) +8646 = or(8647,3360) +8645 = or(8646,3361) +8644 = or(8645,-3362) +8643 = and(8644,-3363) +8642 = and(8643,-3364) +8641 = or(8642,3365) +8640 = and(8641,3366) +8639 = and(8640,3367) +8638 = or(8639,-3368) +8637 = or(8638,-3369) +8636 = and(8637,-3370) +8635 = and(8636,3371) +8634 = or(8635,-3372) +8633 = or(8634,-3373) +8632 = or(8633,3374) +8631 = and(8632,3375) +8630 = or(8631,3376) +8629 = and(8630,3377) +8628 = and(8629,-3378) +8627 = or(8628,-3379) +8626 = and(8627,-3380) +8625 = or(8626,3381) +8624 = and(8625,-3382) +8623 = and(8624,3383) +8622 = and(8623,3384) +8621 = or(8622,3385) +8620 = and(8621,3386) +8619 = or(8620,-3387) +8618 = or(8619,3388) +8617 = or(8618,3389) +8616 = and(8617,3390) +8615 = and(8616,-3391) +8614 = or(8615,-3392) +8613 = and(8614,-3393) +8612 = and(8613,3394) +8611 = or(8612,-3395) +8610 = and(8611,-3396) +8609 = or(8610,-3397) +8608 = and(8609,-3398) +8607 = and(8608,3399) +8606 = or(8607,3400) +8605 = and(8606,3401) +8604 = or(8605,-3402) +8603 = or(8604,3403) +8602 = or(8603,3404) +8601 = or(8602,-3405) +8600 = and(8601,3406) +8599 = and(8600,-3407) +8598 = or(8599,-3408) +8597 = or(8598,-3409) +8596 = and(8597,-3410) +8595 = and(8596,3411) +8594 = and(8595,3412) +8593 = and(8594,3413) +8592 = and(8593,3414) +8591 = or(8592,3415) +8590 = or(8591,-3416) +8589 = or(8590,-3417) +8588 = and(8589,-3418) +8587 = and(8588,3419) +8586 = and(8587,-3420) +8585 = or(8586,-3421) +8584 = and(8585,3422) +8583 = and(8584,3423) +8582 = and(8583,3424) +8581 = or(8582,3425) +8580 = or(8581,3426) +8579 = or(8580,3427) +8578 = and(8579,-3428) +8577 = and(8578,-3429) +8576 = and(8577,-3430) +8575 = and(8576,-3431) +8574 = or(8575,3432) +8573 = and(8574,3433) +8572 = or(8573,-3434) +8571 = and(8572,3435) +8570 = or(8571,-3436) +8569 = or(8570,3437) +8568 = or(8569,3438) +8567 = and(8568,3439) +8566 = or(8567,3440) +8565 = and(8566,-3441) +8564 = or(8565,3442) +8563 = and(8564,3443) +8562 = and(8563,-3444) +8561 = or(8562,-3445) +8560 = or(8561,3446) +8559 = or(8560,3447) +8558 = and(8559,3448) +8557 = and(8558,-3449) +8556 = or(8557,3450) +8555 = or(8556,-3451) +8554 = or(8555,3452) +8553 = or(8554,3453) +8552 = or(8553,3454) +8551 = or(8552,-3455) +8550 = or(8551,3456) +8549 = or(8550,3457) +8548 = and(8549,3458) +8547 = and(8548,-3459) +8546 = or(8547,-3460) +8545 = or(8546,-3461) +8544 = and(8545,-3462) +8543 = or(8544,3463) +8542 = and(8543,-3464) +8541 = and(8542,-3465) +8540 = or(8541,3466) +8539 = and(8540,3467) +8538 = or(8539,3468) +8537 = or(8538,3469) +8536 = or(8537,-3470) +8535 = and(8536,3471) +8534 = and(8535,3472) +8533 = or(8534,-3473) +8532 = or(8533,3474) +8531 = or(8532,3475) +8530 = and(8531,-3476) +8529 = and(8530,-3477) +8528 = or(8529,3478) +8527 = or(8528,-3479) +8526 = and(8527,-3480) +8525 = and(8526,-3481) +8524 = or(8525,3482) +8523 = or(8524,3483) +8522 = or(8523,-3484) +8521 = and(8522,-3485) +8520 = or(8521,3486) +8519 = and(8520,-3487) +8518 = or(8519,-3488) +8517 = or(8518,3489) +8516 = or(8517,3490) +8515 = and(8516,3491) +8514 = and(8515,-3492) +8513 = and(8514,3493) +8512 = and(8513,3494) +8511 = and(8512,-3495) +8510 = and(8511,-3496) +8509 = and(8510,3497) +8508 = or(8509,-3498) +8507 = and(8508,-3499) +8506 = or(8507,-3500) +8505 = or(8506,3501) +8504 = and(8505,-3502) +8503 = and(8504,3503) +8502 = or(8503,-3504) +8501 = or(8502,-3505) +8500 = or(8501,3506) +8499 = or(8500,3507) +8498 = and(8499,3508) +8497 = or(8498,3509) +8496 = or(8497,3510) +8495 = and(8496,3511) +8494 = and(8495,3512) +8493 = or(8494,3513) +8492 = and(8493,3514) +8491 = and(8492,3515) +8490 = or(8491,3516) +8489 = or(8490,3517) +8488 = and(8489,3518) +8487 = and(8488,-3519) +8486 = or(8487,3520) +8485 = or(8486,3521) +8484 = and(8485,3522) +8483 = or(8484,-3523) +8482 = or(8483,-3524) +8481 = and(8482,3525) +8480 = or(8481,-3526) +8479 = and(8480,-3527) +8478 = or(8479,3528) +8477 = and(8478,-3529) +8476 = or(8477,-3530) +8475 = and(8476,3531) +8474 = or(8475,3532) +8473 = and(8474,3533) +8472 = and(8473,-3534) +8471 = or(8472,3535) +8470 = and(8471,3536) +8469 = or(8470,-3537) +8468 = and(8469,-3538) +8467 = and(8468,-3539) +8466 = and(8467,-3540) +8465 = and(8466,-3541) +8464 = and(8465,-3542) +8463 = or(8464,-3543) +8462 = and(8463,3544) +8461 = or(8462,-3545) +8460 = or(8461,-3546) +8459 = or(8460,-3547) +8458 = and(8459,3548) +8457 = or(8458,3549) +8456 = and(8457,-3550) +8455 = and(8456,-3551) +8454 = or(8455,3552) +8453 = and(8454,-3553) +8452 = and(8453,-3554) +8451 = and(8452,3555) +8450 = or(8451,3556) +8449 = or(8450,3557) +8448 = or(8449,3558) +8447 = and(8448,-3559) +8446 = and(8447,3560) +8445 = and(8446,3561) +8444 = and(8445,3562) +8443 = or(8444,-3563) +8442 = or(8443,3564) +8441 = or(8442,3565) +8440 = or(8441,-3566) +8439 = and(8440,3567) +8438 = and(8439,-3568) +8437 = or(8438,3569) +8436 = and(8437,-3570) +8435 = or(8436,-3571) +8434 = and(8435,3572) +8433 = or(8434,3573) +8432 = and(8433,-3574) +8431 = and(8432,-3575) +8430 = or(8431,3576) +8429 = or(8430,-3577) +8428 = or(8429,3578) +8427 = or(8428,3579) +8426 = and(8427,-3580) +8425 = or(8426,3581) +8424 = and(8425,3582) +8423 = or(8424,-3583) +8422 = and(8423,-3584) +8421 = or(8422,3585) +8420 = or(8421,-3586) +8419 = or(8420,-3587) +8418 = and(8419,3588) +8417 = or(8418,-3589) +8416 = or(8417,3590) +8415 = or(8416,-3591) +8414 = or(8415,3592) +8413 = or(8414,3593) +8412 = and(8413,-3594) +8411 = and(8412,-3595) +8410 = or(8411,-3596) +8409 = or(8410,3597) +8408 = and(8409,3598) +8407 = or(8408,3599) +8406 = and(8407,-3600) +8405 = and(8406,3601) +8404 = or(8405,3602) +8403 = and(8404,-3603) +8402 = or(8403,-3604) +8401 = and(8402,3605) +8400 = and(8401,-3606) +8399 = and(8400,-3607) +8398 = and(8399,3608) +8397 = or(8398,-3609) +8396 = and(8397,3610) +8395 = and(8396,3611) +8394 = and(8395,-3612) +8393 = and(8394,3613) +8392 = and(8393,-3614) +8391 = or(8392,3615) +8390 = or(8391,3616) +8389 = or(8390,-3617) +8388 = or(8389,3618) +8387 = and(8388,3619) +8386 = and(8387,-3620) +8385 = or(8386,-3621) +8384 = and(8385,-3622) +8383 = or(8384,3623) +8382 = and(8383,-3624) +8381 = or(8382,3625) +8380 = and(8381,3626) +8379 = or(8380,3627) +8378 = or(8379,3628) +8377 = and(8378,3629) +8376 = and(8377,-3630) +8375 = or(8376,3631) +8374 = or(8375,3632) +8373 = and(8374,-3633) +8372 = or(8373,3634) +8371 = and(8372,3635) +8370 = and(8371,3636) +8369 = and(8370,-3637) +8368 = or(8369,-3638) +8367 = and(8368,-3639) +8366 = and(8367,3640) +8365 = and(8366,3641) +8364 = or(8365,3642) +8363 = or(8364,-3643) +8362 = and(8363,-3644) +8361 = or(8362,3645) +8360 = or(8361,-3646) +8359 = and(8360,3647) +8358 = and(8359,-3648) +8357 = or(8358,3649) +8356 = or(8357,-3650) +8355 = and(8356,3651) +8354 = and(8355,3652) +8353 = and(8354,-3653) +8352 = or(8353,3654) +8351 = or(8352,-3655) +8350 = and(8351,-3656) +8349 = or(8350,3657) +8348 = and(8349,3658) +8347 = and(8348,3659) +8346 = and(8347,-3660) +8345 = and(8346,3661) +8344 = and(8345,-3662) +8343 = or(8344,3663) +8342 = or(8343,3664) +8341 = and(8342,-3665) +8340 = and(8341,3666) +8339 = or(8340,-3667) +8338 = and(8339,-3668) +8337 = and(8338,-3669) +8336 = or(8337,-3670) +8335 = or(8336,-3671) +8334 = or(8335,3672) +8333 = and(8334,-3673) +8332 = or(8333,-3674) +8331 = or(8332,-3675) +8330 = or(8331,3676) +8329 = and(8330,3677) +8328 = and(8329,-3678) +8327 = and(8328,-3679) +8326 = and(8327,3680) +8325 = or(8326,-3681) +8324 = or(8325,-3682) +8323 = and(8324,-3683) +8322 = and(8323,3684) +8321 = and(8322,-3685) +8320 = or(8321,3686) +8319 = and(8320,-3687) +8318 = or(8319,-3688) +8317 = or(8318,3689) +8316 = and(8317,-3690) +8315 = or(8316,3691) +8314 = or(8315,-3692) +8313 = or(8314,-3693) +8312 = and(8313,-3694) +8311 = or(8312,3695) +8310 = and(8311,3696) +8309 = and(8310,3697) +8308 = and(8309,3698) +8307 = or(8308,3699) +8306 = and(8307,3700) +8305 = or(8306,3701) +8304 = and(8305,-3702) +8303 = and(8304,-3703) +8302 = or(8303,-3704) +8301 = or(8302,3705) +8300 = and(8301,-3706) +8299 = or(8300,-3707) +8298 = and(8299,3708) +8297 = or(8298,3709) +8296 = or(8297,3710) +8295 = and(8296,3711) +8294 = and(8295,-3712) +8293 = and(8294,-3713) +8292 = or(8293,-3714) +8291 = and(8292,-3715) +8290 = or(8291,-3716) +8289 = or(8290,-3717) +8288 = and(8289,3718) +8287 = or(8288,3719) +8286 = or(8287,-3720) +8285 = or(8286,-3721) +8284 = or(8285,3722) +8283 = and(8284,-3723) +8282 = or(8283,-3724) +8281 = and(8282,3725) +8280 = or(8281,3726) +8279 = or(8280,3727) +8278 = or(8279,-3728) +8277 = and(8278,-3729) +8276 = and(8277,3730) +8275 = or(8276,-3731) +8274 = and(8275,3732) +8273 = or(8274,-3733) +8272 = and(8273,-3734) +8271 = or(8272,3735) +8270 = or(8271,-3736) +8269 = or(8270,3737) +8268 = and(8269,-3738) +8267 = or(8268,-3739) +8266 = and(8267,-3740) +8265 = and(8266,3741) +8264 = or(8265,3742) +8263 = and(8264,3743) +8262 = or(8263,3744) +8261 = and(8262,3745) +8260 = or(8261,-3746) +8259 = or(8260,-3747) +8258 = and(8259,-3748) +8257 = or(8258,-3749) +8256 = and(8257,3750) +8255 = or(8256,-3751) +8254 = and(8255,-3752) +8253 = or(8254,-3753) +8252 = and(8253,3754) +8251 = or(8252,-3755) +8250 = or(8251,-3756) +8249 = and(8250,-3757) +8248 = and(8249,3758) +8247 = or(8248,3759) +8246 = or(8247,-3760) +8245 = and(8246,3761) +8244 = and(8245,-3762) +8243 = or(8244,-3763) +8242 = or(8243,-3764) +8241 = and(8242,-3765) +8240 = or(8241,3766) +8239 = and(8240,-3767) +8238 = or(8239,-3768) +8237 = or(8238,3769) +8236 = and(8237,3770) +8235 = or(8236,-3771) +8234 = or(8235,3772) +8233 = or(8234,3773) +8232 = or(8233,-3774) +8231 = and(8232,3775) +8230 = and(8231,-3776) +8229 = or(8230,3777) +8228 = or(8229,-3778) +8227 = and(8228,-3779) +8226 = or(8227,-3780) +8225 = and(8226,3781) +8224 = or(8225,3782) +8223 = and(8224,-3783) +8222 = or(8223,3784) +8221 = or(8222,-3785) +8220 = and(8221,-3786) +8219 = and(8220,-3787) +8218 = and(8219,3788) +8217 = and(8218,-3789) +8216 = and(8217,-3790) +8215 = and(8216,3791) +8214 = and(8215,3792) +8213 = or(8214,-3793) +8212 = or(8213,-3794) +8211 = or(8212,3795) +8210 = or(8211,-3796) +8209 = or(8210,3797) +8208 = and(8209,3798) +8207 = and(8208,-3799) +8206 = or(8207,-3800) +8205 = and(8206,-3801) +8204 = or(8205,-3802) +8203 = or(8204,-3803) +8202 = and(8203,3804) +8201 = and(8202,-3805) +8200 = or(8201,3806) +8199 = and(8200,-3807) +8198 = and(8199,3808) +8197 = and(8198,-3809) +8196 = and(8197,-3810) +8195 = and(8196,-3811) +8194 = or(8195,3812) +8193 = or(8194,-3813) +8192 = or(8193,3814) +8191 = and(8192,-3815) +8190 = or(8191,-3816) +8189 = and(8190,-3817) +8188 = and(8189,3818) +8187 = or(8188,3819) +8186 = and(8187,-3820) +8185 = or(8186,-3821) +8184 = or(8185,-3822) +8183 = and(8184,-3823) +8182 = or(8183,3824) +8181 = and(8182,3825) +8180 = and(8181,-3826) +8179 = or(8180,-3827) +8178 = or(8179,3828) +8177 = and(8178,-3829) +8176 = or(8177,-3830) +8175 = or(8176,-3831) +8174 = and(8175,-3832) +8173 = or(8174,-3833) +8172 = and(8173,3834) +8171 = or(8172,3835) +8170 = or(8171,-3836) +8169 = and(8170,3837) +8168 = and(8169,3838) +8167 = or(8168,-3839) +8166 = and(8167,-3840) +8165 = or(8166,3841) +8164 = and(8165,3842) +8163 = or(8164,-3843) +8162 = or(8163,3844) +8161 = or(8162,-3845) +8160 = and(8161,-3846) +8159 = or(8160,-3847) +8158 = or(8159,-3848) +8157 = or(8158,3849) +8156 = or(8157,-3850) +8155 = or(8156,3851) +8154 = and(8155,-3852) +8153 = and(8154,3853) +8152 = or(8153,-3854) +8151 = or(8152,3855) +8150 = and(8151,3856) +8149 = and(8150,-3857) +8148 = and(8149,-3858) +8147 = or(8148,-3859) +8146 = or(8147,-3860) +8145 = and(8146,3861) +8144 = and(8145,-3862) +8143 = and(8144,-3863) +8142 = or(8143,3864) +8141 = and(8142,3865) +8140 = and(8141,3866) +8139 = or(8140,3867) +8138 = and(8139,3868) +8137 = and(8138,3869) +8136 = or(8137,-3870) +8135 = or(8136,3871) +8134 = and(8135,-3872) +8133 = or(8134,3873) +8132 = and(8133,3874) +8131 = or(8132,-3875) +8130 = and(8131,3876) +8129 = and(8130,3877) +8128 = or(8129,3878) +8127 = or(8128,3879) +8126 = and(8127,3880) +8125 = and(8126,3881) +8124 = or(8125,-3882) +8123 = and(8124,-3883) +8122 = and(8123,3884) +8121 = or(8122,-3885) +8120 = and(8121,3886) +8119 = or(8120,3887) +8118 = or(8119,-3888) +8117 = and(8118,-3889) +8116 = and(8117,3890) +8115 = or(8116,3891) +8114 = and(8115,3892) +8113 = or(8114,3893) +8112 = and(8113,3894) +8111 = and(8112,3895) +8110 = or(8111,3896) +8109 = or(8110,-3897) +8108 = or(8109,3898) +8107 = or(8108,3899) +8106 = and(8107,3900) +8105 = or(8106,-3901) +8104 = and(8105,3902) +8103 = and(8104,3903) +8102 = or(8103,-3904) +8101 = and(8102,-3905) +8100 = or(8101,-3906) +8099 = or(8100,3907) +8098 = or(8099,-3908) +8097 = and(8098,3909) +8096 = or(8097,-3910) +8095 = or(8096,3911) +8094 = and(8095,-3912) +8093 = or(8094,3913) +8092 = and(8093,3914) +8091 = and(8092,3915) +8090 = and(8091,3916) +8089 = and(8090,-3917) +8088 = and(8089,-3918) +8087 = or(8088,3919) +8086 = or(8087,3920) +8085 = or(8086,-3921) +8084 = or(8085,3922) +8083 = or(8084,3923) +8082 = or(8083,3924) +8081 = and(8082,-3925) +8080 = or(8081,-3926) +8079 = or(8080,-3927) +8078 = and(8079,-3928) +8077 = and(8078,3929) +8076 = or(8077,-3930) +8075 = and(8076,3931) +8074 = and(8075,3932) +8073 = or(8074,3933) +8072 = or(8073,3934) +8071 = and(8072,3935) +8070 = or(8071,3936) +8069 = or(8070,3937) +8068 = or(8069,-3938) +8067 = or(8068,-3939) +8066 = and(8067,-3940) +8065 = and(8066,3941) +8064 = and(8065,3942) +8063 = or(8064,-3943) +8062 = and(8063,-3944) +8061 = and(8062,3945) +8060 = or(8061,-3946) +8059 = and(8060,-3947) +8058 = or(8059,-3948) +8057 = or(8058,3949) +8056 = and(8057,3950) +8055 = and(8056,-3951) +8054 = and(8055,-3952) +8053 = or(8054,3953) +8052 = and(8053,3954) +8051 = or(8052,3955) +8050 = and(8051,3956) +8049 = and(8050,-3957) +8048 = and(8049,-3958) +8047 = or(8048,-3959) +8046 = and(8047,-3960) +8045 = or(8046,3961) +8044 = and(8045,3962) +8043 = and(8044,3963) +8042 = or(8043,-3964) +8041 = and(8042,-3965) +8040 = and(8041,3966) +8039 = or(8040,3967) +8038 = or(8039,3968) +8037 = or(8038,3969) +8036 = and(8037,3970) +8035 = and(8036,-3971) +8034 = and(8035,-3972) +8033 = and(8034,-3973) +8032 = and(8033,-3974) +8031 = or(8032,-3975) +8030 = or(8031,3976) +8029 = or(8030,3977) +8028 = and(8029,-3978) +8027 = and(8028,3979) +8026 = or(8027,-3980) +8025 = or(8026,-3981) +8024 = or(8025,3982) +8023 = and(8024,-3983) +8022 = or(8023,-3984) +8021 = and(8022,3985) +8020 = or(8021,3986) +8019 = or(8020,-3987) +8018 = or(8019,3988) +8017 = or(8018,-3989) +8016 = or(8017,-3990) +8015 = or(8016,3991) +8014 = and(8015,-3992) +8013 = and(8014,-3993) +8012 = and(8013,3994) +8011 = and(8012,3995) +8010 = or(8011,-3996) +8009 = and(8010,-3997) +8008 = and(8009,3998) +8007 = or(8008,-3999) +8006 = and(8007,4000) +8005 = or(8006,-4001) +8004 = and(1,8005) +16006 = or(-4002,4003) +16005 = and(16006,-4004) +16004 = or(16005,4005) +16003 = or(16004,-4006) +16002 = or(16003,-4007) +16001 = and(16002,-4008) +16000 = and(16001,-4009) +15999 = and(16000,4010) +15998 = and(15999,-4011) +15997 = or(15998,4012) +15996 = and(15997,-4013) +15995 = or(15996,-4014) +15994 = or(15995,4015) +15993 = and(15994,4016) +15992 = or(15993,-4017) +15991 = and(15992,-4018) +15990 = or(15991,-4019) +15989 = and(15990,-4020) +15988 = or(15989,4021) +15987 = or(15988,4022) +15986 = and(15987,4023) +15985 = or(15986,4024) +15984 = and(15985,-4025) +15983 = or(15984,4026) +15982 = or(15983,-4027) +15981 = or(15982,4028) +15980 = or(15981,4029) +15979 = and(15980,4030) +15978 = and(15979,4031) +15977 = or(15978,-4032) +15976 = and(15977,4033) +15975 = or(15976,-4034) +15974 = and(15975,-4035) +15973 = or(15974,-4036) +15972 = and(15973,4037) +15971 = and(15972,4038) +15970 = or(15971,-4039) +15969 = and(15970,4040) +15968 = or(15969,-4041) +15967 = and(15968,4042) +15966 = or(15967,4043) +15965 = and(15966,4044) +15964 = or(15965,-4045) +15963 = or(15964,-4046) +15962 = and(15963,4047) +15961 = and(15962,-4048) +15960 = or(15961,4049) +15959 = or(15960,-4050) +15958 = and(15959,-4051) +15957 = and(15958,4052) +15956 = and(15957,4053) +15955 = or(15956,4054) +15954 = and(15955,-4055) +15953 = or(15954,4056) +15952 = and(15953,-4057) +15951 = and(15952,-4058) +15950 = and(15951,4059) +15949 = or(15950,-4060) +15948 = or(15949,-4061) +15947 = and(15948,-4062) +15946 = or(15947,-4063) +15945 = or(15946,4064) +15944 = and(15945,4065) +15943 = and(15944,-4066) +15942 = and(15943,4067) +15941 = or(15942,-4068) +15940 = or(15941,4069) +15939 = or(15940,-4070) +15938 = and(15939,-4071) +15937 = or(15938,-4072) +15936 = or(15937,4073) +15935 = or(15936,-4074) +15934 = and(15935,4075) +15933 = and(15934,-4076) +15932 = and(15933,-4077) +15931 = and(15932,-4078) +15930 = or(15931,4079) +15929 = and(15930,4080) +15928 = or(15929,-4081) +15927 = and(15928,-4082) +15926 = or(15927,-4083) +15925 = and(15926,4084) +15924 = or(15925,-4085) +15923 = or(15924,-4086) +15922 = or(15923,-4087) +15921 = and(15922,4088) +15920 = or(15921,-4089) +15919 = and(15920,4090) +15918 = or(15919,-4091) +15917 = and(15918,-4092) +15916 = and(15917,4093) +15915 = or(15916,-4094) +15914 = or(15915,-4095) +15913 = and(15914,4096) +15912 = or(15913,-4097) +15911 = or(15912,4098) +15910 = and(15911,-4099) +15909 = or(15910,4100) +15908 = or(15909,-4101) +15907 = and(15908,4102) +15906 = or(15907,4103) +15905 = and(15906,4104) +15904 = and(15905,-4105) +15903 = and(15904,4106) +15902 = and(15903,-4107) +15901 = or(15902,4108) +15900 = or(15901,-4109) +15899 = or(15900,-4110) +15898 = or(15899,4111) +15897 = or(15898,-4112) +15896 = and(15897,4113) +15895 = or(15896,4114) +15894 = and(15895,4115) +15893 = or(15894,4116) +15892 = or(15893,4117) +15891 = and(15892,-4118) +15890 = or(15891,4119) +15889 = and(15890,-4120) +15888 = and(15889,4121) +15887 = or(15888,4122) +15886 = and(15887,-4123) +15885 = or(15886,-4124) +15884 = or(15885,-4125) +15883 = and(15884,4126) +15882 = or(15883,4127) +15881 = and(15882,4128) +15880 = or(15881,4129) +15879 = and(15880,-4130) +15878 = and(15879,-4131) +15877 = or(15878,-4132) +15876 = and(15877,4133) +15875 = or(15876,4134) +15874 = or(15875,4135) +15873 = and(15874,4136) +15872 = and(15873,4137) +15871 = or(15872,-4138) +15870 = or(15871,4139) +15869 = or(15870,4140) +15868 = and(15869,4141) +15867 = or(15868,-4142) +15866 = or(15867,-4143) +15865 = and(15866,-4144) +15864 = or(15865,-4145) +15863 = and(15864,4146) +15862 = and(15863,-4147) +15861 = or(15862,4148) +15860 = and(15861,-4149) +15859 = or(15860,-4150) +15858 = or(15859,-4151) +15857 = or(15858,-4152) +15856 = or(15857,-4153) +15855 = or(15856,4154) +15854 = or(15855,-4155) +15853 = and(15854,-4156) +15852 = or(15853,-4157) +15851 = and(15852,4158) +15850 = or(15851,4159) +15849 = and(15850,-4160) +15848 = or(15849,-4161) +15847 = or(15848,4162) +15846 = and(15847,-4163) +15845 = or(15846,4164) +15844 = and(15845,4165) +15843 = and(15844,-4166) +15842 = or(15843,-4167) +15841 = and(15842,4168) +15840 = or(15841,-4169) +15839 = or(15840,-4170) +15838 = or(15839,4171) +15837 = and(15838,-4172) +15836 = and(15837,-4173) +15835 = and(15836,4174) +15834 = and(15835,4175) +15833 = or(15834,4176) +15832 = or(15833,4177) +15831 = or(15832,4178) +15830 = or(15831,-4179) +15829 = and(15830,4180) +15828 = or(15829,4181) +15827 = or(15828,4182) +15826 = and(15827,4183) +15825 = and(15826,-4184) +15824 = or(15825,-4185) +15823 = and(15824,4186) +15822 = or(15823,4187) +15821 = and(15822,4188) +15820 = or(15821,4189) +15819 = and(15820,4190) +15818 = or(15819,4191) +15817 = or(15818,-4192) +15816 = or(15817,4193) +15815 = or(15816,-4194) +15814 = and(15815,4195) +15813 = or(15814,4196) +15812 = and(15813,-4197) +15811 = and(15812,-4198) +15810 = or(15811,4199) +15809 = and(15810,-4200) +15808 = or(15809,4201) +15807 = and(15808,-4202) +15806 = or(15807,-4203) +15805 = and(15806,-4204) +15804 = and(15805,-4205) +15803 = or(15804,4206) +15802 = or(15803,4207) +15801 = and(15802,4208) +15800 = and(15801,4209) +15799 = and(15800,-4210) +15798 = and(15799,4211) +15797 = or(15798,-4212) +15796 = or(15797,-4213) +15795 = or(15796,-4214) +15794 = or(15795,-4215) +15793 = or(15794,4216) +15792 = or(15793,-4217) +15791 = and(15792,-4218) +15790 = and(15791,4219) +15789 = or(15790,-4220) +15788 = and(15789,4221) +15787 = or(15788,4222) +15786 = and(15787,-4223) +15785 = or(15786,4224) +15784 = and(15785,4225) +15783 = and(15784,4226) +15782 = or(15783,4227) +15781 = or(15782,-4228) +15780 = and(15781,-4229) +15779 = or(15780,-4230) +15778 = and(15779,-4231) +15777 = and(15778,4232) +15776 = or(15777,-4233) +15775 = or(15776,4234) +15774 = or(15775,-4235) +15773 = or(15774,4236) +15772 = and(15773,4237) +15771 = or(15772,-4238) +15770 = and(15771,-4239) +15769 = and(15770,-4240) +15768 = and(15769,-4241) +15767 = and(15768,4242) +15766 = and(15767,4243) +15765 = or(15766,4244) +15764 = or(15765,-4245) +15763 = and(15764,4246) +15762 = or(15763,4247) +15761 = or(15762,4248) +15760 = and(15761,4249) +15759 = and(15760,4250) +15758 = or(15759,4251) +15757 = or(15758,4252) +15756 = or(15757,4253) +15755 = or(15756,4254) +15754 = and(15755,4255) +15753 = and(15754,-4256) +15752 = or(15753,-4257) +15751 = and(15752,4258) +15750 = or(15751,-4259) +15749 = and(15750,4260) +15748 = and(15749,-4261) +15747 = or(15748,-4262) +15746 = and(15747,-4263) +15745 = and(15746,4264) +15744 = or(15745,4265) +15743 = or(15744,4266) +15742 = and(15743,4267) +15741 = and(15742,-4268) +15740 = and(15741,-4269) +15739 = or(15740,4270) +15738 = or(15739,-4271) +15737 = and(15738,4272) +15736 = and(15737,4273) +15735 = and(15736,-4274) +15734 = or(15735,4275) +15733 = and(15734,4276) +15732 = and(15733,4277) +15731 = or(15732,-4278) +15730 = or(15731,4279) +15729 = or(15730,-4280) +15728 = and(15729,-4281) +15727 = or(15728,4282) +15726 = or(15727,4283) +15725 = or(15726,-4284) +15724 = or(15725,4285) +15723 = and(15724,-4286) +15722 = or(15723,-4287) +15721 = or(15722,4288) +15720 = or(15721,-4289) +15719 = or(15720,-4290) +15718 = or(15719,-4291) +15717 = and(15718,4292) +15716 = and(15717,4293) +15715 = or(15716,4294) +15714 = or(15715,-4295) +15713 = and(15714,-4296) +15712 = or(15713,-4297) +15711 = or(15712,-4298) +15710 = and(15711,-4299) +15709 = or(15710,-4300) +15708 = or(15709,4301) +15707 = or(15708,-4302) +15706 = and(15707,4303) +15705 = or(15706,-4304) +15704 = and(15705,-4305) +15703 = and(15704,4306) +15702 = or(15703,-4307) +15701 = or(15702,-4308) +15700 = or(15701,-4309) +15699 = and(15700,-4310) +15698 = and(15699,4311) +15697 = or(15698,4312) +15696 = and(15697,4313) +15695 = and(15696,-4314) +15694 = or(15695,4315) +15693 = and(15694,-4316) +15692 = and(15693,4317) +15691 = and(15692,-4318) +15690 = and(15691,4319) +15689 = and(15690,4320) +15688 = or(15689,-4321) +15687 = and(15688,4322) +15686 = and(15687,4323) +15685 = or(15686,-4324) +15684 = or(15685,-4325) +15683 = or(15684,4326) +15682 = and(15683,4327) +15681 = and(15682,4328) +15680 = and(15681,4329) +15679 = and(15680,4330) +15678 = or(15679,4331) +15677 = and(15678,4332) +15676 = and(15677,-4333) +15675 = or(15676,-4334) +15674 = or(15675,-4335) +15673 = or(15674,-4336) +15672 = and(15673,4337) +15671 = and(15672,-4338) +15670 = or(15671,-4339) +15669 = and(15670,-4340) +15668 = or(15669,4341) +15667 = and(15668,-4342) +15666 = and(15667,-4343) +15665 = and(15666,4344) +15664 = or(15665,4345) +15663 = or(15664,4346) +15662 = and(15663,4347) +15661 = and(15662,4348) +15660 = and(15661,4349) +15659 = and(15660,4350) +15658 = or(15659,-4351) +15657 = and(15658,4352) +15656 = or(15657,4353) +15655 = and(15656,4354) +15654 = and(15655,4355) +15653 = and(15654,4356) +15652 = or(15653,-4357) +15651 = and(15652,4358) +15650 = and(15651,4359) +15649 = or(15650,-4360) +15648 = or(15649,4361) +15647 = and(15648,-4362) +15646 = and(15647,-4363) +15645 = or(15646,4364) +15644 = and(15645,-4365) +15643 = and(15644,-4366) +15642 = and(15643,4367) +15641 = or(15642,-4368) +15640 = or(15641,-4369) +15639 = or(15640,4370) +15638 = and(15639,-4371) +15637 = and(15638,4372) +15636 = or(15637,4373) +15635 = or(15636,-4374) +15634 = or(15635,4375) +15633 = and(15634,-4376) +15632 = or(15633,4377) +15631 = or(15632,-4378) +15630 = or(15631,4379) +15629 = or(15630,4380) +15628 = and(15629,-4381) +15627 = or(15628,4382) +15626 = or(15627,-4383) +15625 = or(15626,-4384) +15624 = and(15625,4385) +15623 = and(15624,-4386) +15622 = or(15623,-4387) +15621 = or(15622,-4388) +15620 = and(15621,-4389) +15619 = or(15620,4390) +15618 = and(15619,4391) +15617 = and(15618,4392) +15616 = or(15617,-4393) +15615 = and(15616,4394) +15614 = and(15615,4395) +15613 = and(15614,4396) +15612 = or(15613,4397) +15611 = or(15612,4398) +15610 = and(15611,-4399) +15609 = or(15610,4400) +15608 = or(15609,-4401) +15607 = or(15608,-4402) +15606 = and(15607,-4403) +15605 = or(15606,-4404) +15604 = or(15605,4405) +15603 = and(15604,-4406) +15602 = and(15603,4407) +15601 = and(15602,-4408) +15600 = or(15601,-4409) +15599 = and(15600,-4410) +15598 = or(15599,-4411) +15597 = and(15598,4412) +15596 = or(15597,4413) +15595 = or(15596,-4414) +15594 = or(15595,-4415) +15593 = and(15594,-4416) +15592 = or(15593,-4417) +15591 = and(15592,4418) +15590 = or(15591,-4419) +15589 = and(15590,4420) +15588 = or(15589,-4421) +15587 = and(15588,-4422) +15586 = and(15587,-4423) +15585 = and(15586,4424) +15584 = and(15585,4425) +15583 = and(15584,4426) +15582 = and(15583,4427) +15581 = and(15582,4428) +15580 = or(15581,-4429) +15579 = and(15580,-4430) +15578 = or(15579,-4431) +15577 = and(15578,4432) +15576 = and(15577,4433) +15575 = and(15576,-4434) +15574 = or(15575,-4435) +15573 = and(15574,-4436) +15572 = or(15573,-4437) +15571 = or(15572,4438) +15570 = and(15571,-4439) +15569 = or(15570,4440) +15568 = or(15569,-4441) +15567 = and(15568,-4442) +15566 = and(15567,4443) +15565 = or(15566,4444) +15564 = or(15565,-4445) +15563 = and(15564,4446) +15562 = and(15563,-4447) +15561 = or(15562,4448) +15560 = and(15561,-4449) +15559 = or(15560,4450) +15558 = or(15559,4451) +15557 = and(15558,-4452) +15556 = or(15557,4453) +15555 = and(15556,4454) +15554 = or(15555,4455) +15553 = and(15554,-4456) +15552 = and(15553,-4457) +15551 = or(15552,-4458) +15550 = or(15551,4459) +15549 = and(15550,4460) +15548 = or(15549,4461) +15547 = or(15548,-4462) +15546 = and(15547,4463) +15545 = and(15546,-4464) +15544 = or(15545,-4465) +15543 = and(15544,4466) +15542 = or(15543,4467) +15541 = or(15542,4468) +15540 = or(15541,-4469) +15539 = and(15540,-4470) +15538 = and(15539,4471) +15537 = or(15538,-4472) +15536 = and(15537,4473) +15535 = and(15536,4474) +15534 = and(15535,-4475) +15533 = or(15534,4476) +15532 = or(15533,4477) +15531 = or(15532,4478) +15530 = or(15531,-4479) +15529 = and(15530,4480) +15528 = or(15529,4481) +15527 = or(15528,4482) +15526 = or(15527,-4483) +15525 = or(15526,-4484) +15524 = or(15525,-4485) +15523 = or(15524,4486) +15522 = or(15523,-4487) +15521 = or(15522,4488) +15520 = or(15521,4489) +15519 = and(15520,4490) +15518 = or(15519,-4491) +15517 = and(15518,-4492) +15516 = and(15517,-4493) +15515 = or(15516,-4494) +15514 = or(15515,-4495) +15513 = and(15514,4496) +15512 = and(15513,4497) +15511 = and(15512,4498) +15510 = or(15511,-4499) +15509 = or(15510,4500) +15508 = or(15509,-4501) +15507 = and(15508,4502) +15506 = and(15507,-4503) +15505 = or(15506,4504) +15504 = and(15505,-4505) +15503 = and(15504,4506) +15502 = and(15503,-4507) +15501 = and(15502,4508) +15500 = and(15501,-4509) +15499 = or(15500,-4510) +15498 = or(15499,-4511) +15497 = or(15498,-4512) +15496 = and(15497,4513) +15495 = or(15496,-4514) +15494 = and(15495,-4515) +15493 = and(15494,-4516) +15492 = or(15493,-4517) +15491 = and(15492,4518) +15490 = and(15491,-4519) +15489 = and(15490,4520) +15488 = or(15489,4521) +15487 = and(15488,4522) +15486 = or(15487,4523) +15485 = and(15486,4524) +15484 = or(15485,-4525) +15483 = and(15484,4526) +15482 = and(15483,-4527) +15481 = or(15482,-4528) +15480 = and(15481,-4529) +15479 = or(15480,4530) +15478 = or(15479,4531) +15477 = and(15478,4532) +15476 = and(15477,4533) +15475 = and(15476,4534) +15474 = or(15475,4535) +15473 = or(15474,4536) +15472 = and(15473,-4537) +15471 = and(15472,-4538) +15470 = or(15471,4539) +15469 = or(15470,4540) +15468 = or(15469,-4541) +15467 = or(15468,-4542) +15466 = and(15467,-4543) +15465 = and(15466,4544) +15464 = and(15465,4545) +15463 = or(15464,-4546) +15462 = or(15463,4547) +15461 = or(15462,-4548) +15460 = and(15461,-4549) +15459 = or(15460,4550) +15458 = or(15459,-4551) +15457 = or(15458,-4552) +15456 = or(15457,-4553) +15455 = and(15456,-4554) +15454 = or(15455,-4555) +15453 = or(15454,4556) +15452 = and(15453,4557) +15451 = and(15452,-4558) +15450 = or(15451,4559) +15449 = and(15450,-4560) +15448 = and(15449,-4561) +15447 = and(15448,-4562) +15446 = or(15447,4563) +15445 = or(15446,4564) +15444 = and(15445,4565) +15443 = or(15444,4566) +15442 = and(15443,-4567) +15441 = and(15442,-4568) +15440 = or(15441,-4569) +15439 = and(15440,4570) +15438 = or(15439,-4571) +15437 = and(15438,4572) +15436 = or(15437,-4573) +15435 = or(15436,-4574) +15434 = and(15435,4575) +15433 = or(15434,-4576) +15432 = and(15433,-4577) +15431 = or(15432,-4578) +15430 = and(15431,-4579) +15429 = and(15430,-4580) +15428 = or(15429,-4581) +15427 = or(15428,4582) +15426 = or(15427,-4583) +15425 = and(15426,4584) +15424 = or(15425,4585) +15423 = and(15424,4586) +15422 = or(15423,4587) +15421 = and(15422,-4588) +15420 = or(15421,4589) +15419 = and(15420,4590) +15418 = or(15419,-4591) +15417 = or(15418,4592) +15416 = or(15417,4593) +15415 = and(15416,-4594) +15414 = and(15415,-4595) +15413 = and(15414,-4596) +15412 = or(15413,4597) +15411 = and(15412,4598) +15410 = and(15411,4599) +15409 = or(15410,-4600) +15408 = and(15409,4601) +15407 = or(15408,4602) +15406 = or(15407,-4603) +15405 = or(15406,-4604) +15404 = and(15405,-4605) +15403 = and(15404,-4606) +15402 = or(15403,4607) +15401 = or(15402,4608) +15400 = or(15401,-4609) +15399 = and(15400,4610) +15398 = and(15399,4611) +15397 = or(15398,4612) +15396 = or(15397,4613) +15395 = and(15396,4614) +15394 = and(15395,-4615) +15393 = and(15394,4616) +15392 = and(15393,4617) +15391 = and(15392,-4618) +15390 = and(15391,-4619) +15389 = or(15390,4620) +15388 = and(15389,-4621) +15387 = or(15388,-4622) +15386 = and(15387,4623) +15385 = or(15386,4624) +15384 = or(15385,-4625) +15383 = or(15384,-4626) +15382 = and(15383,4627) +15381 = or(15382,4628) +15380 = and(15381,-4629) +15379 = and(15380,4630) +15378 = or(15379,-4631) +15377 = or(15378,4632) +15376 = or(15377,-4633) +15375 = and(15376,-4634) +15374 = and(15375,4635) +15373 = and(15374,-4636) +15372 = or(15373,-4637) +15371 = and(15372,4638) +15370 = or(15371,4639) +15369 = or(15370,4640) +15368 = or(15369,4641) +15367 = and(15368,4642) +15366 = and(15367,-4643) +15365 = or(15366,-4644) +15364 = or(15365,-4645) +15363 = or(15364,4646) +15362 = or(15363,4647) +15361 = and(15362,-4648) +15360 = or(15361,4649) +15359 = and(15360,-4650) +15358 = or(15359,4651) +15357 = or(15358,4652) +15356 = and(15357,4653) +15355 = or(15356,4654) +15354 = or(15355,-4655) +15353 = or(15354,4656) +15352 = or(15353,-4657) +15351 = or(15352,-4658) +15350 = or(15351,4659) +15349 = or(15350,-4660) +15348 = and(15349,4661) +15347 = or(15348,4662) +15346 = or(15347,4663) +15345 = or(15346,-4664) +15344 = and(15345,4665) +15343 = and(15344,4666) +15342 = and(15343,-4667) +15341 = and(15342,-4668) +15340 = or(15341,-4669) +15339 = or(15340,-4670) +15338 = and(15339,-4671) +15337 = or(15338,-4672) +15336 = and(15337,4673) +15335 = and(15336,-4674) +15334 = and(15335,4675) +15333 = and(15334,4676) +15332 = and(15333,-4677) +15331 = or(15332,4678) +15330 = or(15331,-4679) +15329 = or(15330,4680) +15328 = and(15329,-4681) +15327 = and(15328,-4682) +15326 = or(15327,4683) +15325 = and(15326,-4684) +15324 = or(15325,-4685) +15323 = and(15324,-4686) +15322 = or(15323,-4687) +15321 = and(15322,4688) +15320 = or(15321,4689) +15319 = and(15320,4690) +15318 = or(15319,4691) +15317 = or(15318,4692) +15316 = and(15317,4693) +15315 = or(15316,4694) +15314 = or(15315,4695) +15313 = or(15314,4696) +15312 = or(15313,-4697) +15311 = or(15312,-4698) +15310 = and(15311,-4699) +15309 = and(15310,-4700) +15308 = or(15309,-4701) +15307 = and(15308,-4702) +15306 = or(15307,-4703) +15305 = and(15306,4704) +15304 = and(15305,-4705) +15303 = and(15304,-4706) +15302 = or(15303,-4707) +15301 = and(15302,4708) +15300 = and(15301,-4709) +15299 = or(15300,-4710) +15298 = and(15299,-4711) +15297 = or(15298,4712) +15296 = or(15297,-4713) +15295 = or(15296,-4714) +15294 = and(15295,-4715) +15293 = and(15294,-4716) +15292 = or(15293,4717) +15291 = or(15292,4718) +15290 = or(15291,4719) +15289 = and(15290,-4720) +15288 = or(15289,-4721) +15287 = or(15288,4722) +15286 = or(15287,-4723) +15285 = or(15286,-4724) +15284 = and(15285,4725) +15283 = or(15284,4726) +15282 = and(15283,-4727) +15281 = and(15282,-4728) +15280 = and(15281,4729) +15279 = or(15280,-4730) +15278 = or(15279,4731) +15277 = or(15278,4732) +15276 = and(15277,4733) +15275 = or(15276,4734) +15274 = and(15275,4735) +15273 = or(15274,-4736) +15272 = or(15273,-4737) +15271 = or(15272,-4738) +15270 = and(15271,4739) +15269 = and(15270,-4740) +15268 = or(15269,4741) +15267 = or(15268,-4742) +15266 = or(15267,4743) +15265 = or(15266,-4744) +15264 = and(15265,-4745) +15263 = or(15264,-4746) +15262 = or(15263,-4747) +15261 = or(15262,4748) +15260 = or(15261,4749) +15259 = or(15260,4750) +15258 = and(15259,-4751) +15257 = and(15258,-4752) +15256 = or(15257,4753) +15255 = and(15256,4754) +15254 = or(15255,4755) +15253 = and(15254,4756) +15252 = or(15253,-4757) +15251 = and(15252,4758) +15250 = and(15251,4759) +15249 = and(15250,4760) +15248 = or(15249,4761) +15247 = or(15248,-4762) +15246 = or(15247,4763) +15245 = and(15246,4764) +15244 = or(15245,4765) +15243 = or(15244,4766) +15242 = or(15243,4767) +15241 = and(15242,-4768) +15240 = and(15241,4769) +15239 = or(15240,-4770) +15238 = or(15239,4771) +15237 = and(15238,4772) +15236 = and(15237,-4773) +15235 = and(15236,-4774) +15234 = or(15235,-4775) +15233 = and(15234,-4776) +15232 = or(15233,4777) +15231 = and(15232,4778) +15230 = or(15231,4779) +15229 = and(15230,4780) +15228 = or(15229,-4781) +15227 = or(15228,-4782) +15226 = and(15227,-4783) +15225 = and(15226,-4784) +15224 = and(15225,4785) +15223 = or(15224,-4786) +15222 = or(15223,4787) +15221 = and(15222,4788) +15220 = or(15221,-4789) +15219 = or(15220,4790) +15218 = or(15219,4791) +15217 = and(15218,4792) +15216 = or(15217,4793) +15215 = and(15216,-4794) +15214 = and(15215,-4795) +15213 = and(15214,-4796) +15212 = or(15213,-4797) +15211 = or(15212,-4798) +15210 = or(15211,4799) +15209 = or(15210,-4800) +15208 = and(15209,4801) +15207 = and(15208,4802) +15206 = and(15207,-4803) +15205 = or(15206,-4804) +15204 = or(15205,-4805) +15203 = or(15204,-4806) +15202 = and(15203,-4807) +15201 = and(15202,4808) +15200 = or(15201,-4809) +15199 = or(15200,4810) +15198 = and(15199,4811) +15197 = and(15198,4812) +15196 = and(15197,-4813) +15195 = or(15196,4814) +15194 = or(15195,4815) +15193 = and(15194,4816) +15192 = and(15193,4817) +15191 = or(15192,4818) +15190 = or(15191,-4819) +15189 = or(15190,4820) +15188 = and(15189,-4821) +15187 = or(15188,-4822) +15186 = and(15187,4823) +15185 = or(15186,4824) +15184 = and(15185,4825) +15183 = and(15184,-4826) +15182 = or(15183,4827) +15181 = and(15182,-4828) +15180 = or(15181,4829) +15179 = or(15180,4830) +15178 = and(15179,-4831) +15177 = and(15178,4832) +15176 = or(15177,-4833) +15175 = and(15176,-4834) +15174 = or(15175,-4835) +15173 = and(15174,4836) +15172 = and(15173,-4837) +15171 = and(15172,4838) +15170 = and(15171,-4839) +15169 = and(15170,-4840) +15168 = or(15169,4841) +15167 = or(15168,-4842) +15166 = or(15167,4843) +15165 = and(15166,4844) +15164 = or(15165,-4845) +15163 = and(15164,4846) +15162 = and(15163,4847) +15161 = or(15162,-4848) +15160 = and(15161,-4849) +15159 = and(15160,-4850) +15158 = or(15159,-4851) +15157 = and(15158,-4852) +15156 = or(15157,4853) +15155 = or(15156,-4854) +15154 = or(15155,-4855) +15153 = or(15154,4856) +15152 = and(15153,4857) +15151 = or(15152,-4858) +15150 = and(15151,4859) +15149 = and(15150,4860) +15148 = or(15149,-4861) +15147 = or(15148,-4862) +15146 = and(15147,-4863) +15145 = and(15146,4864) +15144 = or(15145,4865) +15143 = or(15144,4866) +15142 = or(15143,-4867) +15141 = and(15142,-4868) +15140 = or(15141,4869) +15139 = or(15140,-4870) +15138 = and(15139,4871) +15137 = or(15138,4872) +15136 = and(15137,-4873) +15135 = or(15136,4874) +15134 = or(15135,4875) +15133 = or(15134,-4876) +15132 = or(15133,4877) +15131 = and(15132,-4878) +15130 = and(15131,4879) +15129 = and(15130,4880) +15128 = and(15129,-4881) +15127 = and(15128,-4882) +15126 = or(15127,4883) +15125 = or(15126,-4884) +15124 = and(15125,4885) +15123 = or(15124,-4886) +15122 = and(15123,-4887) +15121 = and(15122,4888) +15120 = and(15121,-4889) +15119 = or(15120,4890) +15118 = or(15119,-4891) +15117 = and(15118,-4892) +15116 = or(15117,-4893) +15115 = or(15116,-4894) +15114 = or(15115,-4895) +15113 = and(15114,4896) +15112 = or(15113,4897) +15111 = and(15112,4898) +15110 = or(15111,4899) +15109 = and(15110,-4900) +15108 = or(15109,-4901) +15107 = or(15108,4902) +15106 = or(15107,4903) +15105 = and(15106,4904) +15104 = or(15105,4905) +15103 = and(15104,4906) +15102 = and(15103,-4907) +15101 = and(15102,-4908) +15100 = or(15101,-4909) +15099 = or(15100,4910) +15098 = or(15099,-4911) +15097 = and(15098,-4912) +15096 = or(15097,4913) +15095 = or(15096,-4914) +15094 = and(15095,-4915) +15093 = or(15094,-4916) +15092 = or(15093,-4917) +15091 = or(15092,-4918) +15090 = and(15091,-4919) +15089 = or(15090,4920) +15088 = or(15089,4921) +15087 = and(15088,4922) +15086 = or(15087,-4923) +15085 = and(15086,-4924) +15084 = and(15085,-4925) +15083 = and(15084,-4926) +15082 = and(15083,-4927) +15081 = or(15082,4928) +15080 = and(15081,-4929) +15079 = or(15080,4930) +15078 = and(15079,4931) +15077 = and(15078,-4932) +15076 = or(15077,4933) +15075 = and(15076,4934) +15074 = or(15075,-4935) +15073 = and(15074,4936) +15072 = and(15073,-4937) +15071 = or(15072,-4938) +15070 = and(15071,-4939) +15069 = or(15070,4940) +15068 = or(15069,-4941) +15067 = and(15068,-4942) +15066 = or(15067,-4943) +15065 = or(15066,-4944) +15064 = and(15065,-4945) +15063 = or(15064,4946) +15062 = or(15063,4947) +15061 = and(15062,4948) +15060 = or(15061,-4949) +15059 = or(15060,4950) +15058 = and(15059,-4951) +15057 = and(15058,4952) +15056 = or(15057,-4953) +15055 = or(15056,4954) +15054 = and(15055,-4955) +15053 = or(15054,-4956) +15052 = or(15053,-4957) +15051 = and(15052,4958) +15050 = or(15051,-4959) +15049 = or(15050,-4960) +15048 = or(15049,4961) +15047 = and(15048,4962) +15046 = and(15047,4963) +15045 = or(15046,4964) +15044 = or(15045,-4965) +15043 = or(15044,4966) +15042 = or(15043,-4967) +15041 = and(15042,-4968) +15040 = and(15041,-4969) +15039 = or(15040,4970) +15038 = and(15039,-4971) +15037 = and(15038,4972) +15036 = or(15037,-4973) +15035 = and(15036,4974) +15034 = and(15035,-4975) +15033 = or(15034,4976) +15032 = or(15033,4977) +15031 = and(15032,4978) +15030 = and(15031,-4979) +15029 = or(15030,4980) +15028 = or(15029,4981) +15027 = or(15028,-4982) +15026 = and(15027,4983) +15025 = and(15026,4984) +15024 = and(15025,-4985) +15023 = and(15024,-4986) +15022 = or(15023,-4987) +15021 = or(15022,4988) +15020 = or(15021,4989) +15019 = and(15020,-4990) +15018 = or(15019,4991) +15017 = and(15018,4992) +15016 = or(15017,4993) +15015 = or(15016,-4994) +15014 = or(15015,4995) +15013 = or(15014,4996) +15012 = or(15013,-4997) +15011 = and(15012,4998) +15010 = or(15011,-4999) +15009 = and(15010,5000) +15008 = and(15009,5001) +15007 = or(15008,-5002) +15006 = and(15007,5003) +15005 = or(15006,5004) +15004 = and(15005,5005) +15003 = and(15004,-5006) +15002 = or(15003,5007) +15001 = and(15002,-5008) +15000 = or(15001,5009) +14999 = and(15000,5010) +14998 = or(14999,5011) +14997 = or(14998,-5012) +14996 = or(14997,5013) +14995 = and(14996,5014) +14994 = or(14995,-5015) +14993 = or(14994,5016) +14992 = or(14993,-5017) +14991 = and(14992,-5018) +14990 = and(14991,5019) +14989 = or(14990,-5020) +14988 = and(14989,5021) +14987 = or(14988,-5022) +14986 = or(14987,5023) +14985 = or(14986,-5024) +14984 = or(14985,-5025) +14983 = or(14984,-5026) +14982 = and(14983,5027) +14981 = or(14982,-5028) +14980 = and(14981,5029) +14979 = or(14980,5030) +14978 = or(14979,-5031) +14977 = and(14978,-5032) +14976 = or(14977,-5033) +14975 = and(14976,-5034) +14974 = or(14975,-5035) +14973 = or(14974,-5036) +14972 = and(14973,5037) +14971 = and(14972,-5038) +14970 = or(14971,-5039) +14969 = and(14970,-5040) +14968 = and(14969,5041) +14967 = or(14968,-5042) +14966 = or(14967,5043) +14965 = and(14966,5044) +14964 = or(14965,5045) +14963 = or(14964,5046) +14962 = or(14963,5047) +14961 = or(14962,-5048) +14960 = and(14961,-5049) +14959 = and(14960,5050) +14958 = or(14959,-5051) +14957 = and(14958,5052) +14956 = or(14957,5053) +14955 = or(14956,5054) +14954 = or(14955,-5055) +14953 = and(14954,-5056) +14952 = and(14953,5057) +14951 = or(14952,-5058) +14950 = or(14951,5059) +14949 = or(14950,-5060) +14948 = or(14949,-5061) +14947 = and(14948,5062) +14946 = or(14947,-5063) +14945 = and(14946,-5064) +14944 = and(14945,-5065) +14943 = and(14944,-5066) +14942 = or(14943,5067) +14941 = or(14942,-5068) +14940 = and(14941,5069) +14939 = and(14940,-5070) +14938 = and(14939,5071) +14937 = and(14938,-5072) +14936 = or(14937,5073) +14935 = and(14936,5074) +14934 = and(14935,5075) +14933 = or(14934,-5076) +14932 = and(14933,-5077) +14931 = and(14932,-5078) +14930 = or(14931,5079) +14929 = and(14930,5080) +14928 = or(14929,5081) +14927 = and(14928,5082) +14926 = or(14927,-5083) +14925 = or(14926,5084) +14924 = and(14925,-5085) +14923 = and(14924,-5086) +14922 = or(14923,5087) +14921 = or(14922,-5088) +14920 = and(14921,-5089) +14919 = or(14920,5090) +14918 = and(14919,-5091) +14917 = and(14918,-5092) +14916 = or(14917,5093) +14915 = and(14916,5094) +14914 = or(14915,5095) +14913 = or(14914,5096) +14912 = and(14913,-5097) +14911 = or(14912,5098) +14910 = and(14911,-5099) +14909 = and(14910,5100) +14908 = and(14909,-5101) +14907 = or(14908,-5102) +14906 = or(14907,-5103) +14905 = and(14906,5104) +14904 = and(14905,5105) +14903 = or(14904,5106) +14902 = or(14903,-5107) +14901 = and(14902,-5108) +14900 = or(14901,5109) +14899 = and(14900,-5110) +14898 = and(14899,-5111) +14897 = and(14898,-5112) +14896 = and(14897,5113) +14895 = or(14896,5114) +14894 = and(14895,-5115) +14893 = and(14894,-5116) +14892 = or(14893,-5117) +14891 = and(14892,5118) +14890 = and(14891,5119) +14889 = or(14890,-5120) +14888 = or(14889,5121) +14887 = and(14888,-5122) +14886 = and(14887,-5123) +14885 = or(14886,5124) +14884 = or(14885,5125) +14883 = and(14884,5126) +14882 = or(14883,-5127) +14881 = or(14882,5128) +14880 = or(14881,5129) +14879 = or(14880,-5130) +14878 = or(14879,-5131) +14877 = or(14878,5132) +14876 = or(14877,5133) +14875 = or(14876,5134) +14874 = and(14875,-5135) +14873 = and(14874,5136) +14872 = or(14873,5137) +14871 = and(14872,5138) +14870 = and(14871,-5139) +14869 = or(14870,-5140) +14868 = or(14869,-5141) +14867 = or(14868,-5142) +14866 = and(14867,-5143) +14865 = or(14866,5144) +14864 = or(14865,-5145) +14863 = and(14864,-5146) +14862 = or(14863,-5147) +14861 = and(14862,-5148) +14860 = or(14861,-5149) +14859 = and(14860,-5150) +14858 = or(14859,-5151) +14857 = and(14858,-5152) +14856 = and(14857,5153) +14855 = or(14856,-5154) +14854 = and(14855,-5155) +14853 = or(14854,-5156) +14852 = or(14853,5157) +14851 = and(14852,-5158) +14850 = and(14851,5159) +14849 = or(14850,5160) +14848 = and(14849,5161) +14847 = and(14848,-5162) +14846 = or(14847,5163) +14845 = or(14846,-5164) +14844 = and(14845,5165) +14843 = or(14844,-5166) +14842 = and(14843,5167) +14841 = and(14842,-5168) +14840 = or(14841,5169) +14839 = and(14840,-5170) +14838 = or(14839,5171) +14837 = or(14838,-5172) +14836 = and(14837,-5173) +14835 = and(14836,-5174) +14834 = and(14835,5175) +14833 = or(14834,-5176) +14832 = or(14833,5177) +14831 = or(14832,-5178) +14830 = or(14831,5179) +14829 = or(14830,-5180) +14828 = and(14829,-5181) +14827 = and(14828,-5182) +14826 = or(14827,5183) +14825 = and(14826,-5184) +14824 = or(14825,5185) +14823 = or(14824,5186) +14822 = or(14823,5187) +14821 = and(14822,-5188) +14820 = and(14821,-5189) +14819 = or(14820,-5190) +14818 = and(14819,5191) +14817 = and(14818,5192) +14816 = or(14817,5193) +14815 = and(14816,-5194) +14814 = or(14815,-5195) +14813 = or(14814,5196) +14812 = or(14813,-5197) +14811 = or(14812,-5198) +14810 = and(14811,-5199) +14809 = or(14810,5200) +14808 = and(14809,-5201) +14807 = and(14808,5202) +14806 = or(14807,-5203) +14805 = and(14806,5204) +14804 = and(14805,5205) +14803 = and(14804,-5206) +14802 = or(14803,5207) +14801 = and(14802,5208) +14800 = and(14801,-5209) +14799 = or(14800,-5210) +14798 = or(14799,5211) +14797 = or(14798,5212) +14796 = and(14797,5213) +14795 = or(14796,-5214) +14794 = or(14795,5215) +14793 = and(14794,-5216) +14792 = or(14793,-5217) +14791 = and(14792,-5218) +14790 = or(14791,-5219) +14789 = or(14790,5220) +14788 = or(14789,5221) +14787 = and(14788,5222) +14786 = and(14787,-5223) +14785 = or(14786,-5224) +14784 = or(14785,-5225) +14783 = and(14784,5226) +14782 = or(14783,5227) +14781 = or(14782,5228) +14780 = or(14781,-5229) +14779 = or(14780,5230) +14778 = and(14779,-5231) +14777 = and(14778,5232) +14776 = or(14777,5233) +14775 = or(14776,5234) +14774 = and(14775,5235) +14773 = and(14774,-5236) +14772 = and(14773,-5237) +14771 = and(14772,-5238) +14770 = or(14771,5239) +14769 = or(14770,-5240) +14768 = and(14769,-5241) +14767 = and(14768,5242) +14766 = and(14767,5243) +14765 = and(14766,-5244) +14764 = or(14765,-5245) +14763 = and(14764,5246) +14762 = and(14763,-5247) +14761 = or(14762,-5248) +14760 = or(14761,5249) +14759 = and(14760,-5250) +14758 = or(14759,-5251) +14757 = or(14758,5252) +14756 = and(14757,5253) +14755 = and(14756,-5254) +14754 = or(14755,5255) +14753 = and(14754,-5256) +14752 = and(14753,5257) +14751 = and(14752,-5258) +14750 = or(14751,-5259) +14749 = and(14750,5260) +14748 = or(14749,-5261) +14747 = and(14748,-5262) +14746 = or(14747,5263) +14745 = or(14746,-5264) +14744 = and(14745,-5265) +14743 = and(14744,-5266) +14742 = and(14743,5267) +14741 = or(14742,-5268) +14740 = or(14741,5269) +14739 = and(14740,-5270) +14738 = or(14739,-5271) +14737 = and(14738,5272) +14736 = or(14737,5273) +14735 = and(14736,5274) +14734 = or(14735,5275) +14733 = and(14734,-5276) +14732 = or(14733,5277) +14731 = and(14732,-5278) +14730 = or(14731,-5279) +14729 = and(14730,-5280) +14728 = or(14729,5281) +14727 = and(14728,-5282) +14726 = and(14727,5283) +14725 = or(14726,5284) +14724 = or(14725,5285) +14723 = or(14724,5286) +14722 = and(14723,-5287) +14721 = or(14722,-5288) +14720 = and(14721,-5289) +14719 = or(14720,5290) +14718 = and(14719,5291) +14717 = or(14718,5292) +14716 = or(14717,5293) +14715 = and(14716,5294) +14714 = and(14715,-5295) +14713 = and(14714,5296) +14712 = or(14713,-5297) +14711 = or(14712,5298) +14710 = and(14711,5299) +14709 = or(14710,5300) +14708 = or(14709,5301) +14707 = and(14708,5302) +14706 = and(14707,5303) +14705 = or(14706,-5304) +14704 = and(14705,5305) +14703 = and(14704,5306) +14702 = or(14703,-5307) +14701 = and(14702,-5308) +14700 = or(14701,-5309) +14699 = or(14700,-5310) +14698 = or(14699,-5311) +14697 = and(14698,5312) +14696 = or(14697,-5313) +14695 = or(14696,5314) +14694 = and(14695,-5315) +14693 = and(14694,-5316) +14692 = or(14693,5317) +14691 = or(14692,5318) +14690 = and(14691,5319) +14689 = or(14690,-5320) +14688 = or(14689,5321) +14687 = and(14688,-5322) +14686 = or(14687,5323) +14685 = or(14686,-5324) +14684 = and(14685,5325) +14683 = and(14684,-5326) +14682 = or(14683,5327) +14681 = or(14682,-5328) +14680 = and(14681,-5329) +14679 = or(14680,5330) +14678 = and(14679,5331) +14677 = and(14678,-5332) +14676 = and(14677,5333) +14675 = and(14676,-5334) +14674 = and(14675,5335) +14673 = and(14674,5336) +14672 = and(14673,5337) +14671 = or(14672,-5338) +14670 = and(14671,-5339) +14669 = and(14670,5340) +14668 = and(14669,-5341) +14667 = or(14668,5342) +14666 = and(14667,-5343) +14665 = or(14666,-5344) +14664 = and(14665,5345) +14663 = or(14664,5346) +14662 = and(14663,-5347) +14661 = or(14662,-5348) +14660 = or(14661,-5349) +14659 = and(14660,-5350) +14658 = and(14659,5351) +14657 = or(14658,5352) +14656 = and(14657,5353) +14655 = or(14656,-5354) +14654 = or(14655,-5355) +14653 = or(14654,5356) +14652 = and(14653,5357) +14651 = and(14652,-5358) +14650 = or(14651,-5359) +14649 = or(14650,5360) +14648 = or(14649,-5361) +14647 = and(14648,-5362) +14646 = or(14647,-5363) +14645 = or(14646,5364) +14644 = or(14645,5365) +14643 = and(14644,5366) +14642 = or(14643,5367) +14641 = and(14642,-5368) +14640 = and(14641,-5369) +14639 = or(14640,-5370) +14638 = and(14639,-5371) +14637 = or(14638,5372) +14636 = and(14637,-5373) +14635 = or(14636,-5374) +14634 = or(14635,5375) +14633 = and(14634,-5376) +14632 = and(14633,-5377) +14631 = or(14632,-5378) +14630 = and(14631,5379) +14629 = and(14630,5380) +14628 = and(14629,-5381) +14627 = or(14628,5382) +14626 = and(14627,5383) +14625 = or(14626,-5384) +14624 = and(14625,5385) +14623 = and(14624,-5386) +14622 = and(14623,-5387) +14621 = and(14622,-5388) +14620 = or(14621,-5389) +14619 = or(14620,5390) +14618 = or(14619,-5391) +14617 = and(14618,5392) +14616 = and(14617,5393) +14615 = or(14616,-5394) +14614 = or(14615,-5395) +14613 = or(14614,-5396) +14612 = or(14613,5397) +14611 = and(14612,-5398) +14610 = and(14611,-5399) +14609 = or(14610,-5400) +14608 = or(14609,-5401) +14607 = or(14608,5402) +14606 = and(14607,5403) +14605 = or(14606,5404) +14604 = or(14605,-5405) +14603 = and(14604,5406) +14602 = or(14603,-5407) +14601 = and(14602,-5408) +14600 = or(14601,-5409) +14599 = and(14600,5410) +14598 = and(14599,5411) +14597 = and(14598,5412) +14596 = or(14597,5413) +14595 = and(14596,5414) +14594 = and(14595,-5415) +14593 = and(14594,5416) +14592 = or(14593,5417) +14591 = and(14592,-5418) +14590 = and(14591,5419) +14589 = and(14590,5420) +14588 = or(14589,-5421) +14587 = and(14588,-5422) +14586 = and(14587,5423) +14585 = and(14586,-5424) +14584 = and(14585,5425) +14583 = and(14584,-5426) +14582 = or(14583,5427) +14581 = or(14582,5428) +14580 = and(14581,5429) +14579 = or(14580,-5430) +14578 = and(14579,5431) +14577 = or(14578,-5432) +14576 = and(14577,-5433) +14575 = and(14576,-5434) +14574 = or(14575,5435) +14573 = or(14574,-5436) +14572 = or(14573,-5437) +14571 = or(14572,5438) +14570 = and(14571,5439) +14569 = or(14570,5440) +14568 = and(14569,-5441) +14567 = and(14568,5442) +14566 = and(14567,-5443) +14565 = or(14566,5444) +14564 = and(14565,-5445) +14563 = or(14564,5446) +14562 = and(14563,5447) +14561 = or(14562,-5448) +14560 = or(14561,5449) +14559 = and(14560,5450) +14558 = and(14559,-5451) +14557 = or(14558,-5452) +14556 = and(14557,-5453) +14555 = and(14556,-5454) +14554 = or(14555,-5455) +14553 = or(14554,5456) +14552 = or(14553,5457) +14551 = and(14552,5458) +14550 = or(14551,5459) +14549 = and(14550,5460) +14548 = and(14549,-5461) +14547 = or(14548,-5462) +14546 = or(14547,-5463) +14545 = and(14546,5464) +14544 = or(14545,5465) +14543 = and(14544,5466) +14542 = or(14543,5467) +14541 = or(14542,-5468) +14540 = or(14541,5469) +14539 = or(14540,-5470) +14538 = and(14539,5471) +14537 = or(14538,-5472) +14536 = or(14537,5473) +14535 = or(14536,5474) +14534 = or(14535,5475) +14533 = and(14534,5476) +14532 = or(14533,5477) +14531 = or(14532,5478) +14530 = or(14531,-5479) +14529 = and(14530,-5480) +14528 = or(14529,-5481) +14527 = or(14528,5482) +14526 = and(14527,-5483) +14525 = or(14526,5484) +14524 = and(14525,5485) +14523 = or(14524,-5486) +14522 = and(14523,-5487) +14521 = or(14522,-5488) +14520 = and(14521,5489) +14519 = or(14520,5490) +14518 = and(14519,5491) +14517 = and(14518,5492) +14516 = or(14517,5493) +14515 = or(14516,-5494) +14514 = or(14515,-5495) +14513 = and(14514,-5496) +14512 = and(14513,-5497) +14511 = or(14512,-5498) +14510 = or(14511,5499) +14509 = and(14510,-5500) +14508 = or(14509,-5501) +14507 = or(14508,-5502) +14506 = or(14507,5503) +14505 = and(14506,5504) +14504 = and(14505,-5505) +14503 = or(14504,-5506) +14502 = and(14503,-5507) +14501 = and(14502,5508) +14500 = and(14501,5509) +14499 = or(14500,-5510) +14498 = and(14499,5511) +14497 = and(14498,5512) +14496 = and(14497,5513) +14495 = or(14496,5514) +14494 = and(14495,5515) +14493 = or(14494,-5516) +14492 = or(14493,-5517) +14491 = or(14492,-5518) +14490 = and(14491,-5519) +14489 = and(14490,-5520) +14488 = and(14489,5521) +14487 = or(14488,5522) +14486 = and(14487,5523) +14485 = and(14486,5524) +14484 = or(14485,5525) +14483 = and(14484,-5526) +14482 = and(14483,-5527) +14481 = or(14482,5528) +14480 = or(14481,-5529) +14479 = or(14480,5530) +14478 = or(14479,5531) +14477 = and(14478,-5532) +14476 = or(14477,-5533) +14475 = and(14476,5534) +14474 = and(14475,5535) +14473 = or(14474,-5536) +14472 = and(14473,-5537) +14471 = and(14472,-5538) +14470 = or(14471,-5539) +14469 = and(14470,-5540) +14468 = and(14469,-5541) +14467 = and(14468,-5542) +14466 = and(14467,5543) +14465 = and(14466,-5544) +14464 = or(14465,-5545) +14463 = or(14464,-5546) +14462 = or(14463,5547) +14461 = or(14462,-5548) +14460 = or(14461,5549) +14459 = and(14460,5550) +14458 = and(14459,-5551) +14457 = or(14458,5552) +14456 = or(14457,5553) +14455 = or(14456,-5554) +14454 = and(14455,5555) +14453 = and(14454,-5556) +14452 = or(14453,5557) +14451 = and(14452,5558) +14450 = and(14451,5559) +14449 = or(14450,5560) +14448 = or(14449,5561) +14447 = and(14448,5562) +14446 = or(14447,-5563) +14445 = and(14446,5564) +14444 = and(14445,5565) +14443 = and(14444,5566) +14442 = or(14443,-5567) +14441 = or(14442,5568) +14440 = and(14441,-5569) +14439 = and(14440,5570) +14438 = or(14439,5571) +14437 = or(14438,5572) +14436 = and(14437,5573) +14435 = and(14436,-5574) +14434 = and(14435,5575) +14433 = or(14434,5576) +14432 = or(14433,-5577) +14431 = or(14432,5578) +14430 = or(14431,-5579) +14429 = or(14430,-5580) +14428 = and(14429,5581) +14427 = and(14428,5582) +14426 = and(14427,-5583) +14425 = or(14426,-5584) +14424 = or(14425,-5585) +14423 = and(14424,-5586) +14422 = and(14423,5587) +14421 = or(14422,5588) +14420 = or(14421,5589) +14419 = or(14420,5590) +14418 = and(14419,-5591) +14417 = or(14418,-5592) +14416 = and(14417,5593) +14415 = or(14416,-5594) +14414 = or(14415,-5595) +14413 = or(14414,-5596) +14412 = and(14413,5597) +14411 = or(14412,-5598) +14410 = and(14411,5599) +14409 = and(14410,-5600) +14408 = or(14409,5601) +14407 = or(14408,5602) +14406 = and(14407,-5603) +14405 = and(14406,5604) +14404 = and(14405,5605) +14403 = and(14404,-5606) +14402 = or(14403,5607) +14401 = and(14402,-5608) +14400 = and(14401,-5609) +14399 = and(14400,5610) +14398 = or(14399,-5611) +14397 = or(14398,-5612) +14396 = and(14397,5613) +14395 = or(14396,-5614) +14394 = and(14395,-5615) +14393 = and(14394,5616) +14392 = and(14393,-5617) +14391 = or(14392,-5618) +14390 = and(14391,5619) +14389 = and(14390,5620) +14388 = or(14389,5621) +14387 = or(14388,-5622) +14386 = or(14387,-5623) +14385 = or(14386,5624) +14384 = or(14385,-5625) +14383 = and(14384,5626) +14382 = and(14383,-5627) +14381 = or(14382,-5628) +14380 = and(14381,5629) +14379 = and(14380,5630) +14378 = or(14379,5631) +14377 = or(14378,-5632) +14376 = or(14377,5633) +14375 = or(14376,5634) +14374 = or(14375,5635) +14373 = and(14374,5636) +14372 = and(14373,-5637) +14371 = or(14372,5638) +14370 = or(14371,-5639) +14369 = or(14370,5640) +14368 = and(14369,5641) +14367 = or(14368,-5642) +14366 = and(14367,-5643) +14365 = or(14366,-5644) +14364 = or(14365,5645) +14363 = or(14364,5646) +14362 = or(14363,-5647) +14361 = or(14362,5648) +14360 = and(14361,5649) +14359 = and(14360,5650) +14358 = or(14359,-5651) +14357 = and(14358,-5652) +14356 = and(14357,5653) +14355 = or(14356,5654) +14354 = and(14355,-5655) +14353 = or(14354,5656) +14352 = and(14353,5657) +14351 = or(14352,5658) +14350 = or(14351,5659) +14349 = or(14350,5660) +14348 = and(14349,-5661) +14347 = or(14348,5662) +14346 = and(14347,-5663) +14345 = or(14346,5664) +14344 = and(14345,5665) +14343 = and(14344,-5666) +14342 = and(14343,-5667) +14341 = or(14342,5668) +14340 = and(14341,5669) +14339 = or(14340,-5670) +14338 = or(14339,-5671) +14337 = and(14338,5672) +14336 = or(14337,-5673) +14335 = or(14336,-5674) +14334 = or(14335,5675) +14333 = or(14334,-5676) +14332 = or(14333,-5677) +14331 = and(14332,-5678) +14330 = or(14331,5679) +14329 = and(14330,-5680) +14328 = and(14329,-5681) +14327 = and(14328,-5682) +14326 = and(14327,5683) +14325 = and(14326,5684) +14324 = and(14325,5685) +14323 = or(14324,5686) +14322 = or(14323,-5687) +14321 = and(14322,5688) +14320 = and(14321,-5689) +14319 = or(14320,5690) +14318 = and(14319,5691) +14317 = and(14318,5692) +14316 = or(14317,-5693) +14315 = or(14316,-5694) +14314 = and(14315,5695) +14313 = and(14314,-5696) +14312 = and(14313,5697) +14311 = and(14312,5698) +14310 = or(14311,5699) +14309 = and(14310,-5700) +14308 = or(14309,-5701) +14307 = or(14308,-5702) +14306 = and(14307,5703) +14305 = or(14306,5704) +14304 = and(14305,-5705) +14303 = or(14304,5706) +14302 = or(14303,5707) +14301 = or(14302,5708) +14300 = or(14301,5709) +14299 = and(14300,-5710) +14298 = and(14299,-5711) +14297 = or(14298,5712) +14296 = or(14297,-5713) +14295 = and(14296,5714) +14294 = or(14295,-5715) +14293 = and(14294,-5716) +14292 = or(14293,-5717) +14291 = and(14292,5718) +14290 = and(14291,5719) +14289 = or(14290,5720) +14288 = and(14289,-5721) +14287 = and(14288,5722) +14286 = and(14287,5723) +14285 = or(14286,-5724) +14284 = and(14285,5725) +14283 = or(14284,-5726) +14282 = or(14283,-5727) +14281 = and(14282,-5728) +14280 = or(14281,-5729) +14279 = and(14280,-5730) +14278 = or(14279,5731) +14277 = or(14278,5732) +14276 = and(14277,5733) +14275 = or(14276,-5734) +14274 = and(14275,5735) +14273 = and(14274,-5736) +14272 = or(14273,5737) +14271 = and(14272,5738) +14270 = or(14271,-5739) +14269 = and(14270,-5740) +14268 = and(14269,5741) +14267 = or(14268,5742) +14266 = and(14267,5743) +14265 = and(14266,-5744) +14264 = or(14265,5745) +14263 = or(14264,5746) +14262 = and(14263,-5747) +14261 = or(14262,-5748) +14260 = and(14261,-5749) +14259 = and(14260,-5750) +14258 = or(14259,5751) +14257 = or(14258,-5752) +14256 = or(14257,5753) +14255 = and(14256,5754) +14254 = and(14255,-5755) +14253 = or(14254,-5756) +14252 = and(14253,-5757) +14251 = and(14252,-5758) +14250 = and(14251,-5759) +14249 = and(14250,-5760) +14248 = and(14249,-5761) +14247 = or(14248,5762) +14246 = and(14247,-5763) +14245 = and(14246,5764) +14244 = and(14245,-5765) +14243 = or(14244,5766) +14242 = and(14243,-5767) +14241 = or(14242,-5768) +14240 = or(14241,-5769) +14239 = and(14240,-5770) +14238 = or(14239,-5771) +14237 = and(14238,5772) +14236 = or(14237,-5773) +14235 = or(14236,5774) +14234 = and(14235,-5775) +14233 = and(14234,5776) +14232 = or(14233,-5777) +14231 = or(14232,5778) +14230 = and(14231,5779) +14229 = and(14230,5780) +14228 = or(14229,-5781) +14227 = and(14228,-5782) +14226 = or(14227,5783) +14225 = and(14226,-5784) +14224 = or(14225,5785) +14223 = or(14224,5786) +14222 = or(14223,-5787) +14221 = or(14222,-5788) +14220 = or(14221,-5789) +14219 = and(14220,-5790) +14218 = or(14219,-5791) +14217 = or(14218,-5792) +14216 = and(14217,5793) +14215 = or(14216,-5794) +14214 = and(14215,5795) +14213 = or(14214,-5796) +14212 = or(14213,5797) +14211 = and(14212,5798) +14210 = or(14211,-5799) +14209 = and(14210,-5800) +14208 = and(14209,-5801) +14207 = or(14208,5802) +14206 = and(14207,-5803) +14205 = or(14206,5804) +14204 = and(14205,-5805) +14203 = or(14204,-5806) +14202 = and(14203,-5807) +14201 = or(14202,5808) +14200 = or(14201,-5809) +14199 = or(14200,5810) +14198 = and(14199,5811) +14197 = and(14198,-5812) +14196 = and(14197,-5813) +14195 = or(14196,5814) +14194 = or(14195,5815) +14193 = and(14194,5816) +14192 = or(14193,-5817) +14191 = or(14192,5818) +14190 = or(14191,-5819) +14189 = and(14190,5820) +14188 = or(14189,5821) +14187 = and(14188,-5822) +14186 = and(14187,5823) +14185 = and(14186,-5824) +14184 = or(14185,5825) +14183 = or(14184,5826) +14182 = and(14183,-5827) +14181 = or(14182,5828) +14180 = and(14181,5829) +14179 = or(14180,-5830) +14178 = or(14179,5831) +14177 = and(14178,-5832) +14176 = or(14177,-5833) +14175 = or(14176,5834) +14174 = or(14175,5835) +14173 = or(14174,5836) +14172 = and(14173,5837) +14171 = and(14172,-5838) +14170 = and(14171,-5839) +14169 = or(14170,5840) +14168 = and(14169,-5841) +14167 = or(14168,-5842) +14166 = and(14167,5843) +14165 = and(14166,5844) +14164 = and(14165,-5845) +14163 = or(14164,5846) +14162 = and(14163,5847) +14161 = and(14162,5848) +14160 = and(14161,5849) +14159 = or(14160,-5850) +14158 = or(14159,5851) +14157 = or(14158,-5852) +14156 = and(14157,5853) +14155 = or(14156,5854) +14154 = and(14155,-5855) +14153 = or(14154,5856) +14152 = and(14153,-5857) +14151 = or(14152,-5858) +14150 = or(14151,-5859) +14149 = and(14150,5860) +14148 = and(14149,-5861) +14147 = and(14148,5862) +14146 = and(14147,-5863) +14145 = or(14146,5864) +14144 = or(14145,5865) +14143 = or(14144,-5866) +14142 = and(14143,5867) +14141 = or(14142,5868) +14140 = and(14141,5869) +14139 = or(14140,-5870) +14138 = and(14139,5871) +14137 = and(14138,5872) +14136 = and(14137,5873) +14135 = and(14136,5874) +14134 = or(14135,5875) +14133 = and(14134,-5876) +14132 = and(14133,5877) +14131 = and(14132,-5878) +14130 = or(14131,-5879) +14129 = or(14130,5880) +14128 = or(14129,-5881) +14127 = or(14128,5882) +14126 = and(14127,-5883) +14125 = or(14126,5884) +14124 = and(14125,-5885) +14123 = or(14124,-5886) +14122 = and(14123,-5887) +14121 = or(14122,5888) +14120 = or(14121,-5889) +14119 = and(14120,-5890) +14118 = or(14119,5891) +14117 = and(14118,5892) +14116 = or(14117,-5893) +14115 = or(14116,5894) +14114 = and(14115,-5895) +14113 = and(14114,5896) +14112 = or(14113,-5897) +14111 = or(14112,5898) +14110 = and(14111,-5899) +14109 = and(14110,5900) +14108 = and(14109,-5901) +14107 = and(14108,-5902) +14106 = and(14107,5903) +14105 = or(14106,-5904) +14104 = or(14105,5905) +14103 = and(14104,-5906) +14102 = or(14103,-5907) +14101 = or(14102,-5908) +14100 = or(14101,-5909) +14099 = and(14100,-5910) +14098 = or(14099,5911) +14097 = and(14098,-5912) +14096 = and(14097,5913) +14095 = and(14096,5914) +14094 = and(14095,-5915) +14093 = or(14094,5916) +14092 = or(14093,5917) +14091 = and(14092,5918) +14090 = or(14091,5919) +14089 = and(14090,-5920) +14088 = or(14089,5921) +14087 = or(14088,5922) +14086 = or(14087,5923) +14085 = or(14086,5924) +14084 = and(14085,-5925) +14083 = and(14084,5926) +14082 = and(14083,5927) +14081 = and(14082,-5928) +14080 = or(14081,5929) +14079 = and(14080,5930) +14078 = or(14079,5931) +14077 = or(14078,-5932) +14076 = and(14077,-5933) +14075 = or(14076,5934) +14074 = or(14075,5935) +14073 = or(14074,-5936) +14072 = and(14073,5937) +14071 = and(14072,-5938) +14070 = or(14071,-5939) +14069 = or(14070,-5940) +14068 = and(14069,5941) +14067 = or(14068,5942) +14066 = or(14067,5943) +14065 = and(14066,-5944) +14064 = and(14065,5945) +14063 = and(14064,5946) +14062 = and(14063,5947) +14061 = and(14062,5948) +14060 = or(14061,5949) +14059 = or(14060,5950) +14058 = and(14059,-5951) +14057 = and(14058,5952) +14056 = and(14057,-5953) +14055 = and(14056,-5954) +14054 = and(14055,-5955) +14053 = or(14054,5956) +14052 = or(14053,5957) +14051 = and(14052,-5958) +14050 = and(14051,-5959) +14049 = and(14050,5960) +14048 = or(14049,5961) +14047 = and(14048,5962) +14046 = or(14047,5963) +14045 = or(14046,5964) +14044 = and(14045,-5965) +14043 = or(14044,5966) +14042 = and(14043,-5967) +14041 = and(14042,-5968) +14040 = or(14041,-5969) +14039 = or(14040,5970) +14038 = and(14039,-5971) +14037 = and(14038,-5972) +14036 = or(14037,-5973) +14035 = and(14036,5974) +14034 = and(14035,5975) +14033 = or(14034,-5976) +14032 = and(14033,5977) +14031 = or(14032,-5978) +14030 = and(14031,-5979) +14029 = and(14030,5980) +14028 = and(14029,5981) +14027 = or(14028,5982) +14026 = and(14027,5983) +14025 = or(14026,5984) +14024 = or(14025,5985) +14023 = and(14024,-5986) +14022 = or(14023,-5987) +14021 = and(14022,-5988) +14020 = or(14021,-5989) +14019 = and(14020,-5990) +14018 = or(14019,-5991) +14017 = and(14018,5992) +14016 = and(14017,5993) +14015 = or(14016,5994) +14014 = or(14015,-5995) +14013 = and(14014,-5996) +14012 = or(14013,5997) +14011 = or(14012,5998) +14010 = and(14011,5999) +14009 = or(14010,-6000) +14008 = and(14009,-6001) +14007 = or(14008,6002) +14006 = or(14007,6003) +14005 = and(14006,6004) +14004 = and(14005,6005) +14003 = or(14004,-6006) +14002 = and(14003,-6007) +14001 = or(14002,6008) +14000 = and(14001,-6009) +13999 = or(14000,-6010) +13998 = and(13999,6011) +13997 = or(13998,-6012) +13996 = and(13997,-6013) +13995 = or(13996,-6014) +13994 = and(13995,-6015) +13993 = or(13994,-6016) +13992 = or(13993,-6017) +13991 = and(13992,6018) +13990 = and(13991,6019) +13989 = or(13990,-6020) +13988 = and(13989,6021) +13987 = and(13988,6022) +13986 = and(13987,6023) +13985 = or(13986,6024) +13984 = or(13985,6025) +13983 = and(13984,6026) +13982 = and(13983,-6027) +13981 = and(13982,6028) +13980 = and(13981,-6029) +13979 = or(13980,6030) +13978 = or(13979,6031) +13977 = and(13978,-6032) +13976 = or(13977,6033) +13975 = and(13976,-6034) +13974 = or(13975,6035) +13973 = and(13974,6036) +13972 = or(13973,-6037) +13971 = or(13972,-6038) +13970 = and(13971,-6039) +13969 = or(13970,6040) +13968 = and(13969,6041) +13967 = or(13968,6042) +13966 = and(13967,-6043) +13965 = or(13966,6044) +13964 = or(13965,-6045) +13963 = and(13964,6046) +13962 = and(13963,6047) +13961 = or(13962,6048) +13960 = or(13961,6049) +13959 = and(13960,6050) +13958 = or(13959,6051) +13957 = or(13958,6052) +13956 = and(13957,-6053) +13955 = or(13956,-6054) +13954 = and(13955,6055) +13953 = and(13954,-6056) +13952 = or(13953,-6057) +13951 = or(13952,-6058) +13950 = and(13951,-6059) +13949 = or(13950,6060) +13948 = or(13949,-6061) +13947 = or(13948,6062) +13946 = and(13947,6063) +13945 = and(13946,6064) +13944 = or(13945,6065) +13943 = and(13944,6066) +13942 = or(13943,-6067) +13941 = and(13942,-6068) +13940 = and(13941,6069) +13939 = and(13940,-6070) +13938 = and(13939,6071) +13937 = or(13938,6072) +13936 = and(13937,-6073) +13935 = or(13936,-6074) +13934 = or(13935,-6075) +13933 = or(13934,6076) +13932 = or(13933,-6077) +13931 = and(13932,-6078) +13930 = and(13931,-6079) +13929 = and(13930,-6080) +13928 = or(13929,6081) +13927 = and(13928,6082) +13926 = or(13927,6083) +13925 = or(13926,-6084) +13924 = and(13925,6085) +13923 = and(13924,-6086) +13922 = and(13923,-6087) +13921 = and(13922,-6088) +13920 = and(13921,6089) +13919 = and(13920,6090) +13918 = or(13919,-6091) +13917 = and(13918,-6092) +13916 = and(13917,6093) +13915 = and(13916,6094) +13914 = and(13915,6095) +13913 = and(13914,-6096) +13912 = or(13913,-6097) +13911 = or(13912,6098) +13910 = or(13911,-6099) +13909 = or(13910,-6100) +13908 = or(13909,-6101) +13907 = and(13908,6102) +13906 = and(13907,6103) +13905 = or(13906,6104) +13904 = and(13905,6105) +13903 = or(13904,-6106) +13902 = or(13903,-6107) +13901 = or(13902,6108) +13900 = or(13901,6109) +13899 = and(13900,6110) +13898 = and(13899,6111) +13897 = and(13898,-6112) +13896 = and(13897,6113) +13895 = or(13896,-6114) +13894 = and(13895,6115) +13893 = or(13894,-6116) +13892 = or(13893,-6117) +13891 = and(13892,-6118) +13890 = or(13891,6119) +13889 = or(13890,6120) +13888 = and(13889,-6121) +13887 = and(13888,-6122) +13886 = or(13887,-6123) +13885 = or(13886,6124) +13884 = or(13885,6125) +13883 = and(13884,6126) +13882 = and(13883,-6127) +13881 = and(13882,6128) +13880 = or(13881,-6129) +13879 = or(13880,6130) +13878 = or(13879,6131) +13877 = and(13878,-6132) +13876 = and(13877,-6133) +13875 = or(13876,-6134) +13874 = and(13875,-6135) +13873 = or(13874,6136) +13872 = or(13873,-6137) +13871 = or(13872,6138) +13870 = and(13871,-6139) +13869 = or(13870,6140) +13868 = or(13869,-6141) +13867 = and(13868,-6142) +13866 = or(13867,6143) +13865 = or(13866,-6144) +13864 = and(13865,6145) +13863 = and(13864,-6146) +13862 = and(13863,6147) +13861 = and(13862,6148) +13860 = or(13861,-6149) +13859 = and(13860,6150) +13858 = or(13859,-6151) +13857 = or(13858,-6152) +13856 = and(13857,-6153) +13855 = or(13856,-6154) +13854 = or(13855,6155) +13853 = and(13854,-6156) +13852 = or(13853,6157) +13851 = and(13852,6158) +13850 = and(13851,6159) +13849 = or(13850,-6160) +13848 = and(13849,-6161) +13847 = and(13848,-6162) +13846 = and(13847,6163) +13845 = or(13846,-6164) +13844 = and(13845,6165) +13843 = or(13844,-6166) +13842 = and(13843,6167) +13841 = and(13842,-6168) +13840 = or(13841,6169) +13839 = and(13840,-6170) +13838 = or(13839,6171) +13837 = and(13838,-6172) +13836 = and(13837,-6173) +13835 = or(13836,6174) +13834 = and(13835,-6175) +13833 = or(13834,6176) +13832 = and(13833,-6177) +13831 = or(13832,-6178) +13830 = and(13831,-6179) +13829 = or(13830,-6180) +13828 = and(13829,-6181) +13827 = and(13828,6182) +13826 = and(13827,6183) +13825 = and(13826,-6184) +13824 = and(13825,6185) +13823 = or(13824,6186) +13822 = or(13823,6187) +13821 = or(13822,-6188) +13820 = and(13821,6189) +13819 = and(13820,-6190) +13818 = or(13819,6191) +13817 = and(13818,-6192) +13816 = or(13817,6193) +13815 = or(13816,6194) +13814 = or(13815,6195) +13813 = or(13814,-6196) +13812 = and(13813,-6197) +13811 = and(13812,-6198) +13810 = and(13811,6199) +13809 = and(13810,-6200) +13808 = or(13809,6201) +13807 = and(13808,-6202) +13806 = or(13807,6203) +13805 = and(13806,-6204) +13804 = or(13805,6205) +13803 = or(13804,-6206) +13802 = and(13803,-6207) +13801 = or(13802,6208) +13800 = and(13801,-6209) +13799 = and(13800,6210) +13798 = or(13799,6211) +13797 = or(13798,-6212) +13796 = and(13797,-6213) +13795 = or(13796,-6214) +13794 = and(13795,6215) +13793 = or(13794,-6216) +13792 = or(13793,6217) +13791 = or(13792,-6218) +13790 = and(13791,6219) +13789 = or(13790,6220) +13788 = or(13789,-6221) +13787 = and(13788,-6222) +13786 = or(13787,-6223) +13785 = or(13786,-6224) +13784 = and(13785,6225) +13783 = and(13784,6226) +13782 = or(13783,6227) +13781 = or(13782,-6228) +13780 = or(13781,-6229) +13779 = and(13780,-6230) +13778 = or(13779,6231) +13777 = and(13778,6232) +13776 = and(13777,-6233) +13775 = and(13776,-6234) +13774 = or(13775,-6235) +13773 = and(13774,6236) +13772 = and(13773,6237) +13771 = or(13772,-6238) +13770 = or(13771,6239) +13769 = and(13770,-6240) +13768 = and(13769,6241) +13767 = and(13768,-6242) +13766 = or(13767,6243) +13765 = or(13766,6244) +13764 = and(13765,6245) +13763 = and(13764,6246) +13762 = and(13763,6247) +13761 = or(13762,-6248) +13760 = or(13761,6249) +13759 = and(13760,6250) +13758 = and(13759,6251) +13757 = and(13758,-6252) +13756 = and(13757,6253) +13755 = or(13756,6254) +13754 = and(13755,6255) +13753 = or(13754,-6256) +13752 = and(13753,-6257) +13751 = and(13752,-6258) +13750 = or(13751,-6259) +13749 = and(13750,-6260) +13748 = or(13749,6261) +13747 = or(13748,-6262) +13746 = and(13747,-6263) +13745 = or(13746,-6264) +13744 = or(13745,6265) +13743 = or(13744,6266) +13742 = and(13743,-6267) +13741 = or(13742,6268) +13740 = and(13741,6269) +13739 = and(13740,6270) +13738 = and(13739,6271) +13737 = or(13738,-6272) +13736 = or(13737,6273) +13735 = and(13736,-6274) +13734 = or(13735,-6275) +13733 = and(13734,-6276) +13732 = or(13733,6277) +13731 = or(13732,-6278) +13730 = and(13731,6279) +13729 = or(13730,-6280) +13728 = and(13729,-6281) +13727 = or(13728,-6282) +13726 = and(13727,6283) +13725 = or(13726,-6284) +13724 = or(13725,6285) +13723 = and(13724,6286) +13722 = and(13723,6287) +13721 = or(13722,-6288) +13720 = and(13721,6289) +13719 = or(13720,-6290) +13718 = and(13719,6291) +13717 = and(13718,-6292) +13716 = and(13717,6293) +13715 = and(13716,6294) +13714 = or(13715,6295) +13713 = or(13714,-6296) +13712 = and(13713,6297) +13711 = and(13712,6298) +13710 = or(13711,-6299) +13709 = or(13710,6300) +13708 = and(13709,6301) +13707 = or(13708,6302) +13706 = and(13707,6303) +13705 = and(13706,-6304) +13704 = or(13705,6305) +13703 = and(13704,-6306) +13702 = and(13703,6307) +13701 = and(13702,6308) +13700 = or(13701,-6309) +13699 = and(13700,-6310) +13698 = and(13699,6311) +13697 = or(13698,6312) +13696 = or(13697,-6313) +13695 = or(13696,-6314) +13694 = and(13695,-6315) +13693 = or(13694,6316) +13692 = and(13693,-6317) +13691 = or(13692,6318) +13690 = or(13691,-6319) +13689 = or(13690,6320) +13688 = and(13689,-6321) +13687 = and(13688,-6322) +13686 = or(13687,6323) +13685 = and(13686,6324) +13684 = and(13685,6325) +13683 = or(13684,6326) +13682 = or(13683,6327) +13681 = and(13682,-6328) +13680 = or(13681,6329) +13679 = or(13680,-6330) +13678 = and(13679,6331) +13677 = or(13678,-6332) +13676 = and(13677,-6333) +13675 = or(13676,6334) +13674 = and(13675,-6335) +13673 = and(13674,6336) +13672 = or(13673,-6337) +13671 = and(13672,-6338) +13670 = or(13671,6339) +13669 = or(13670,-6340) +13668 = or(13669,6341) +13667 = and(13668,-6342) +13666 = or(13667,-6343) +13665 = or(13666,-6344) +13664 = and(13665,6345) +13663 = or(13664,6346) +13662 = and(13663,6347) +13661 = and(13662,6348) +13660 = or(13661,6349) +13659 = and(13660,-6350) +13658 = and(13659,-6351) +13657 = or(13658,-6352) +13656 = and(13657,6353) +13655 = or(13656,-6354) +13654 = or(13655,-6355) +13653 = or(13654,6356) +13652 = or(13653,-6357) +13651 = and(13652,-6358) +13650 = and(13651,-6359) +13649 = or(13650,-6360) +13648 = or(13649,6361) +13647 = or(13648,-6362) +13646 = and(13647,-6363) +13645 = and(13646,-6364) +13644 = or(13645,6365) +13643 = or(13644,6366) +13642 = or(13643,-6367) +13641 = or(13642,6368) +13640 = and(13641,6369) +13639 = and(13640,-6370) +13638 = or(13639,-6371) +13637 = and(13638,-6372) +13636 = or(13637,6373) +13635 = and(13636,6374) +13634 = and(13635,-6375) +13633 = or(13634,6376) +13632 = and(13633,-6377) +13631 = or(13632,-6378) +13630 = and(13631,6379) +13629 = or(13630,-6380) +13628 = and(13629,6381) +13627 = or(13628,-6382) +13626 = and(13627,-6383) +13625 = or(13626,6384) +13624 = or(13625,-6385) +13623 = and(13624,-6386) +13622 = or(13623,-6387) +13621 = and(13622,-6388) +13620 = and(13621,6389) +13619 = or(13620,-6390) +13618 = or(13619,-6391) +13617 = or(13618,-6392) +13616 = and(13617,6393) +13615 = and(13616,6394) +13614 = and(13615,6395) +13613 = or(13614,-6396) +13612 = and(13613,6397) +13611 = and(13612,6398) +13610 = and(13611,6399) +13609 = and(13610,6400) +13608 = or(13609,6401) +13607 = and(13608,-6402) +13606 = or(13607,-6403) +13605 = or(13606,6404) +13604 = or(13605,6405) +13603 = and(13604,6406) +13602 = or(13603,-6407) +13601 = or(13602,6408) +13600 = or(13601,-6409) +13599 = and(13600,6410) +13598 = or(13599,-6411) +13597 = and(13598,6412) +13596 = and(13597,-6413) +13595 = or(13596,6414) +13594 = or(13595,-6415) +13593 = and(13594,-6416) +13592 = or(13593,6417) +13591 = and(13592,-6418) +13590 = and(13591,-6419) +13589 = and(13590,-6420) +13588 = and(13589,6421) +13587 = or(13588,6422) +13586 = and(13587,6423) +13585 = and(13586,6424) +13584 = or(13585,6425) +13583 = or(13584,-6426) +13582 = or(13583,-6427) +13581 = or(13582,6428) +13580 = and(13581,-6429) +13579 = and(13580,-6430) +13578 = or(13579,6431) +13577 = and(13578,6432) +13576 = and(13577,6433) +13575 = or(13576,6434) +13574 = and(13575,-6435) +13573 = or(13574,-6436) +13572 = or(13573,-6437) +13571 = and(13572,-6438) +13570 = and(13571,6439) +13569 = or(13570,-6440) +13568 = and(13569,-6441) +13567 = or(13568,-6442) +13566 = or(13567,-6443) +13565 = or(13566,-6444) +13564 = and(13565,6445) +13563 = or(13564,6446) +13562 = and(13563,-6447) +13561 = or(13562,6448) +13560 = and(13561,6449) +13559 = and(13560,6450) +13558 = and(13559,6451) +13557 = and(13558,6452) +13556 = or(13557,6453) +13555 = and(13556,-6454) +13554 = and(13555,-6455) +13553 = and(13554,6456) +13552 = or(13553,-6457) +13551 = or(13552,-6458) +13550 = or(13551,6459) +13549 = or(13550,6460) +13548 = and(13549,6461) +13547 = or(13548,6462) +13546 = or(13547,6463) +13545 = or(13546,6464) +13544 = or(13545,6465) +13543 = or(13544,6466) +13542 = and(13543,6467) +13541 = and(13542,-6468) +13540 = and(13541,-6469) +13539 = or(13540,-6470) +13538 = and(13539,-6471) +13537 = or(13538,-6472) +13536 = and(13537,-6473) +13535 = and(13536,6474) +13534 = or(13535,-6475) +13533 = and(13534,6476) +13532 = and(13533,-6477) +13531 = or(13532,-6478) +13530 = and(13531,6479) +13529 = and(13530,-6480) +13528 = or(13529,-6481) +13527 = and(13528,6482) +13526 = and(13527,6483) +13525 = and(13526,6484) +13524 = or(13525,6485) +13523 = or(13524,-6486) +13522 = and(13523,-6487) +13521 = or(13522,-6488) +13520 = or(13521,-6489) +13519 = and(13520,6490) +13518 = and(13519,6491) +13517 = and(13518,6492) +13516 = and(13517,6493) +13515 = or(13516,-6494) +13514 = and(13515,6495) +13513 = or(13514,-6496) +13512 = or(13513,6497) +13511 = or(13512,6498) +13510 = and(13511,6499) +13509 = or(13510,6500) +13508 = or(13509,-6501) +13507 = or(13508,6502) +13506 = or(13507,-6503) +13505 = and(13506,6504) +13504 = or(13505,6505) +13503 = and(13504,-6506) +13502 = and(13503,6507) +13501 = or(13502,-6508) +13500 = or(13501,6509) +13499 = and(13500,-6510) +13498 = or(13499,6511) +13497 = and(13498,6512) +13496 = and(13497,6513) +13495 = and(13496,-6514) +13494 = or(13495,6515) +13493 = and(13494,-6516) +13492 = and(13493,-6517) +13491 = and(13492,6518) +13490 = or(13491,6519) +13489 = and(13490,6520) +13488 = and(13489,6521) +13487 = and(13488,6522) +13486 = or(13487,6523) +13485 = and(13486,-6524) +13484 = or(13485,6525) +13483 = or(13484,6526) +13482 = and(13483,-6527) +13481 = and(13482,6528) +13480 = or(13481,-6529) +13479 = and(13480,6530) +13478 = or(13479,-6531) +13477 = and(13478,6532) +13476 = or(13477,6533) +13475 = or(13476,-6534) +13474 = and(13475,-6535) +13473 = or(13474,6536) +13472 = or(13473,-6537) +13471 = or(13472,-6538) +13470 = or(13471,-6539) +13469 = or(13470,-6540) +13468 = and(13469,6541) +13467 = and(13468,-6542) +13466 = and(13467,6543) +13465 = or(13466,6544) +13464 = and(13465,6545) +13463 = or(13464,6546) +13462 = or(13463,-6547) +13461 = or(13462,6548) +13460 = or(13461,-6549) +13459 = and(13460,-6550) +13458 = and(13459,6551) +13457 = or(13458,6552) +13456 = and(13457,6553) +13455 = or(13456,-6554) +13454 = and(13455,-6555) +13453 = and(13454,-6556) +13452 = or(13453,-6557) +13451 = and(13452,6558) +13450 = and(13451,-6559) +13449 = and(13450,6560) +13448 = and(13449,6561) +13447 = and(13448,6562) +13446 = and(13447,6563) +13445 = or(13446,-6564) +13444 = or(13445,-6565) +13443 = or(13444,6566) +13442 = and(13443,-6567) +13441 = and(13442,-6568) +13440 = and(13441,6569) +13439 = and(13440,6570) +13438 = or(13439,-6571) +13437 = or(13438,-6572) +13436 = and(13437,6573) +13435 = and(13436,-6574) +13434 = or(13435,-6575) +13433 = or(13434,-6576) +13432 = and(13433,6577) +13431 = and(13432,6578) +13430 = and(13431,6579) +13429 = and(13430,6580) +13428 = or(13429,-6581) +13427 = or(13428,6582) +13426 = or(13427,6583) +13425 = and(13426,6584) +13424 = or(13425,-6585) +13423 = and(13424,6586) +13422 = or(13423,-6587) +13421 = or(13422,-6588) +13420 = and(13421,-6589) +13419 = and(13420,6590) +13418 = and(13419,-6591) +13417 = or(13418,-6592) +13416 = or(13417,-6593) +13415 = or(13416,-6594) +13414 = or(13415,-6595) +13413 = and(13414,-6596) +13412 = or(13413,6597) +13411 = or(13412,-6598) +13410 = or(13411,6599) +13409 = or(13410,6600) +13408 = and(13409,6601) +13407 = or(13408,6602) +13406 = and(13407,-6603) +13405 = or(13406,-6604) +13404 = or(13405,-6605) +13403 = or(13404,-6606) +13402 = and(13403,-6607) +13401 = and(13402,6608) +13400 = or(13401,6609) +13399 = and(13400,6610) +13398 = or(13399,-6611) +13397 = and(13398,-6612) +13396 = or(13397,6613) +13395 = and(13396,-6614) +13394 = or(13395,-6615) +13393 = and(13394,-6616) +13392 = or(13393,-6617) +13391 = or(13392,-6618) +13390 = or(13391,-6619) +13389 = and(13390,-6620) +13388 = or(13389,-6621) +13387 = or(13388,6622) +13386 = or(13387,-6623) +13385 = and(13386,6624) +13384 = and(13385,6625) +13383 = and(13384,6626) +13382 = or(13383,6627) +13381 = or(13382,-6628) +13380 = and(13381,6629) +13379 = and(13380,-6630) +13378 = or(13379,6631) +13377 = or(13378,6632) +13376 = or(13377,6633) +13375 = and(13376,-6634) +13374 = and(13375,6635) +13373 = or(13374,6636) +13372 = and(13373,6637) +13371 = or(13372,-6638) +13370 = or(13371,6639) +13369 = and(13370,6640) +13368 = or(13369,-6641) +13367 = and(13368,-6642) +13366 = and(13367,6643) +13365 = or(13366,6644) +13364 = and(13365,-6645) +13363 = or(13364,-6646) +13362 = and(13363,6647) +13361 = or(13362,6648) +13360 = or(13361,6649) +13359 = or(13360,6650) +13358 = and(13359,6651) +13357 = or(13358,-6652) +13356 = or(13357,-6653) +13355 = or(13356,-6654) +13354 = and(13355,6655) +13353 = and(13354,6656) +13352 = and(13353,-6657) +13351 = or(13352,6658) +13350 = and(13351,6659) +13349 = or(13350,6660) +13348 = and(13349,-6661) +13347 = and(13348,6662) +13346 = or(13347,-6663) +13345 = and(13346,6664) +13344 = and(13345,-6665) +13343 = or(13344,6666) +13342 = or(13343,6667) +13341 = or(13342,6668) +13340 = and(13341,6669) +13339 = and(13340,-6670) +13338 = or(13339,6671) +13337 = or(13338,-6672) +13336 = and(13337,6673) +13335 = and(13336,-6674) +13334 = or(13335,6675) +13333 = or(13334,6676) +13332 = and(13333,6677) +13331 = and(13332,6678) +13330 = or(13331,6679) +13329 = and(13330,6680) +13328 = and(13329,6681) +13327 = or(13328,-6682) +13326 = and(13327,6683) +13325 = and(13326,-6684) +13324 = or(13325,6685) +13323 = or(13324,-6686) +13322 = or(13323,6687) +13321 = or(13322,-6688) +13320 = or(13321,-6689) +13319 = and(13320,-6690) +13318 = or(13319,6691) +13317 = or(13318,6692) +13316 = and(13317,-6693) +13315 = or(13316,6694) +13314 = or(13315,6695) +13313 = and(13314,-6696) +13312 = or(13313,-6697) +13311 = or(13312,-6698) +13310 = and(13311,-6699) +13309 = and(13310,6700) +13308 = or(13309,-6701) +13307 = and(13308,-6702) +13306 = and(13307,-6703) +13305 = or(13306,6704) +13304 = or(13305,-6705) +13303 = and(13304,6706) +13302 = or(13303,-6707) +13301 = or(13302,-6708) +13300 = and(13301,6709) +13299 = and(13300,-6710) +13298 = or(13299,6711) +13297 = or(13298,-6712) +13296 = and(13297,-6713) +13295 = or(13296,-6714) +13294 = or(13295,-6715) +13293 = and(13294,-6716) +13292 = or(13293,6717) +13291 = or(13292,6718) +13290 = and(13291,-6719) +13289 = and(13290,-6720) +13288 = and(13289,-6721) +13287 = or(13288,-6722) +13286 = and(13287,-6723) +13285 = or(13286,-6724) +13284 = or(13285,-6725) +13283 = and(13284,-6726) +13282 = or(13283,6727) +13281 = and(13282,6728) +13280 = and(13281,-6729) +13279 = or(13280,6730) +13278 = or(13279,-6731) +13277 = or(13278,6732) +13276 = or(13277,-6733) +13275 = and(13276,6734) +13274 = and(13275,6735) +13273 = and(13274,-6736) +13272 = and(13273,6737) +13271 = or(13272,-6738) +13270 = and(13271,6739) +13269 = or(13270,6740) +13268 = or(13269,-6741) +13267 = and(13268,6742) +13266 = and(13267,6743) +13265 = and(13266,-6744) +13264 = or(13265,6745) +13263 = and(13264,-6746) +13262 = or(13263,-6747) +13261 = or(13262,6748) +13260 = or(13261,6749) +13259 = and(13260,6750) +13258 = or(13259,6751) +13257 = or(13258,-6752) +13256 = and(13257,6753) +13255 = or(13256,-6754) +13254 = and(13255,6755) +13253 = and(13254,-6756) +13252 = and(13253,-6757) +13251 = and(13252,-6758) +13250 = and(13251,6759) +13249 = or(13250,-6760) +13248 = and(13249,-6761) +13247 = and(13248,-6762) +13246 = and(13247,6763) +13245 = or(13246,6764) +13244 = and(13245,6765) +13243 = or(13244,6766) +13242 = or(13243,6767) +13241 = and(13242,6768) +13240 = and(13241,6769) +13239 = or(13240,-6770) +13238 = and(13239,-6771) +13237 = and(13238,-6772) +13236 = or(13237,6773) +13235 = and(13236,-6774) +13234 = or(13235,6775) +13233 = and(13234,6776) +13232 = or(13233,6777) +13231 = or(13232,6778) +13230 = and(13231,-6779) +13229 = and(13230,6780) +13228 = or(13229,-6781) +13227 = and(13228,-6782) +13226 = and(13227,6783) +13225 = or(13226,6784) +13224 = and(13225,6785) +13223 = and(13224,6786) +13222 = or(13223,6787) +13221 = and(13222,-6788) +13220 = and(13221,6789) +13219 = or(13220,6790) +13218 = or(13219,6791) +13217 = and(13218,6792) +13216 = or(13217,-6793) +13215 = or(13216,-6794) +13214 = and(13215,-6795) +13213 = and(13214,6796) +13212 = and(13213,6797) +13211 = and(13212,6798) +13210 = and(13211,-6799) +13209 = and(13210,6800) +13208 = or(13209,6801) +13207 = and(13208,6802) +13206 = and(13207,-6803) +13205 = or(13206,6804) +13204 = or(13205,-6805) +13203 = and(13204,6806) +13202 = or(13203,-6807) +13201 = and(13202,-6808) +13200 = or(13201,-6809) +13199 = and(13200,-6810) +13198 = or(13199,-6811) +13197 = or(13198,-6812) +13196 = and(13197,-6813) +13195 = and(13196,6814) +13194 = or(13195,6815) +13193 = and(13194,-6816) +13192 = and(13193,6817) +13191 = and(13192,-6818) +13190 = or(13191,-6819) +13189 = or(13190,6820) +13188 = or(13189,-6821) +13187 = and(13188,6822) +13186 = or(13187,-6823) +13185 = and(13186,6824) +13184 = and(13185,-6825) +13183 = or(13184,6826) +13182 = or(13183,6827) +13181 = or(13182,6828) +13180 = or(13181,6829) +13179 = and(13180,-6830) +13178 = and(13179,-6831) +13177 = or(13178,6832) +13176 = and(13177,6833) +13175 = or(13176,-6834) +13174 = and(13175,-6835) +13173 = or(13174,6836) +13172 = and(13173,6837) +13171 = or(13172,6838) +13170 = and(13171,6839) +13169 = and(13170,6840) +13168 = or(13169,-6841) +13167 = or(13168,6842) +13166 = and(13167,-6843) +13165 = and(13166,6844) +13164 = and(13165,-6845) +13163 = and(13164,-6846) +13162 = or(13163,6847) +13161 = and(13162,6848) +13160 = or(13161,-6849) +13159 = or(13160,6850) +13158 = and(13159,6851) +13157 = or(13158,-6852) +13156 = or(13157,-6853) +13155 = and(13156,6854) +13154 = and(13155,-6855) +13153 = or(13154,6856) +13152 = and(13153,6857) +13151 = or(13152,-6858) +13150 = and(13151,6859) +13149 = and(13150,-6860) +13148 = or(13149,-6861) +13147 = or(13148,6862) +13146 = and(13147,-6863) +13145 = and(13146,6864) +13144 = and(13145,-6865) +13143 = and(13144,-6866) +13142 = and(13143,6867) +13141 = and(13142,-6868) +13140 = or(13141,-6869) +13139 = and(13140,6870) +13138 = or(13139,-6871) +13137 = or(13138,6872) +13136 = and(13137,-6873) +13135 = and(13136,-6874) +13134 = or(13135,6875) +13133 = and(13134,-6876) +13132 = or(13133,-6877) +13131 = or(13132,6878) +13130 = and(13131,-6879) +13129 = and(13130,-6880) +13128 = and(13129,6881) +13127 = and(13128,6882) +13126 = and(13127,-6883) +13125 = and(13126,6884) +13124 = and(13125,-6885) +13123 = and(13124,6886) +13122 = or(13123,-6887) +13121 = or(13122,-6888) +13120 = or(13121,-6889) +13119 = and(13120,6890) +13118 = or(13119,-6891) +13117 = and(13118,-6892) +13116 = and(13117,-6893) +13115 = and(13116,-6894) +13114 = and(13115,-6895) +13113 = and(13114,-6896) +13112 = or(13113,-6897) +13111 = or(13112,6898) +13110 = or(13111,6899) +13109 = or(13110,-6900) +13108 = and(13109,6901) +13107 = and(13108,6902) +13106 = or(13107,-6903) +13105 = and(13106,-6904) +13104 = and(13105,6905) +13103 = and(13104,6906) +13102 = and(13103,6907) +13101 = or(13102,-6908) +13100 = and(13101,-6909) +13099 = and(13100,-6910) +13098 = or(13099,-6911) +13097 = or(13098,6912) +13096 = or(13097,6913) +13095 = and(13096,-6914) +13094 = and(13095,6915) +13093 = and(13094,6916) +13092 = and(13093,6917) +13091 = or(13092,-6918) +13090 = and(13091,6919) +13089 = or(13090,-6920) +13088 = and(13089,6921) +13087 = and(13088,6922) +13086 = or(13087,6923) +13085 = and(13086,-6924) +13084 = or(13085,6925) +13083 = and(13084,-6926) +13082 = and(13083,6927) +13081 = or(13082,6928) +13080 = or(13081,6929) +13079 = and(13080,-6930) +13078 = or(13079,-6931) +13077 = and(13078,6932) +13076 = and(13077,-6933) +13075 = and(13076,-6934) +13074 = and(13075,6935) +13073 = and(13074,6936) +13072 = or(13073,6937) +13071 = and(13072,6938) +13070 = and(13071,6939) +13069 = and(13070,6940) +13068 = or(13069,6941) +13067 = and(13068,6942) +13066 = and(13067,-6943) +13065 = or(13066,6944) +13064 = and(13065,6945) +13063 = and(13064,-6946) +13062 = or(13063,-6947) +13061 = or(13062,-6948) +13060 = or(13061,6949) +13059 = or(13060,6950) +13058 = or(13059,-6951) +13057 = and(13058,6952) +13056 = and(13057,6953) +13055 = or(13056,6954) +13054 = and(13055,6955) +13053 = and(13054,-6956) +13052 = or(13053,6957) +13051 = or(13052,6958) +13050 = and(13051,6959) +13049 = and(13050,6960) +13048 = or(13049,6961) +13047 = and(13048,-6962) +13046 = and(13047,6963) +13045 = and(13046,6964) +13044 = and(13045,6965) +13043 = or(13044,6966) +13042 = and(13043,-6967) +13041 = or(13042,6968) +13040 = and(13041,6969) +13039 = or(13040,6970) +13038 = and(13039,6971) +13037 = and(13038,-6972) +13036 = or(13037,6973) +13035 = or(13036,-6974) +13034 = or(13035,-6975) +13033 = or(13034,6976) +13032 = and(13033,6977) +13031 = and(13032,-6978) +13030 = and(13031,6979) +13029 = and(13030,-6980) +13028 = or(13029,-6981) +13027 = and(13028,-6982) +13026 = or(13027,6983) +13025 = or(13026,6984) +13024 = or(13025,6985) +13023 = or(13024,-6986) +13022 = and(13023,-6987) +13021 = or(13022,-6988) +13020 = and(13021,6989) +13019 = or(13020,-6990) +13018 = and(13019,-6991) +13017 = or(13018,6992) +13016 = and(13017,-6993) +13015 = or(13016,6994) +13014 = and(13015,6995) +13013 = or(13014,6996) +13012 = or(13013,-6997) +13011 = and(13012,-6998) +13010 = and(13011,-6999) +13009 = and(13010,7000) +13008 = and(13009,-7001) +13007 = or(13008,-7002) +13006 = or(13007,7003) +13005 = and(13006,-7004) +13004 = or(13005,-7005) +13003 = and(13004,7006) +13002 = and(13003,7007) +13001 = or(13002,-7008) +13000 = and(13001,7009) +12999 = and(13000,7010) +12998 = or(12999,-7011) +12997 = and(12998,-7012) +12996 = or(12997,-7013) +12995 = or(12996,-7014) +12994 = and(12995,-7015) +12993 = or(12994,7016) +12992 = and(12993,7017) +12991 = or(12992,-7018) +12990 = or(12991,7019) +12989 = or(12990,7020) +12988 = or(12989,-7021) +12987 = and(12988,7022) +12986 = and(12987,-7023) +12985 = or(12986,-7024) +12984 = and(12985,7025) +12983 = and(12984,-7026) +12982 = and(12983,-7027) +12981 = or(12982,-7028) +12980 = or(12981,-7029) +12979 = or(12980,-7030) +12978 = and(12979,-7031) +12977 = or(12978,-7032) +12976 = or(12977,7033) +12975 = and(12976,7034) +12974 = or(12975,-7035) +12973 = and(12974,-7036) +12972 = or(12973,-7037) +12971 = or(12972,7038) +12970 = and(12971,7039) +12969 = or(12970,7040) +12968 = or(12969,7041) +12967 = and(12968,-7042) +12966 = and(12967,-7043) +12965 = or(12966,-7044) +12964 = and(12965,7045) +12963 = or(12964,7046) +12962 = and(12963,-7047) +12961 = and(12962,7048) +12960 = or(12961,-7049) +12959 = and(12960,-7050) +12958 = and(12959,-7051) +12957 = or(12958,7052) +12956 = and(12957,7053) +12955 = and(12956,7054) +12954 = and(12955,7055) +12953 = and(12954,7056) +12952 = or(12953,7057) +12951 = or(12952,-7058) +12950 = or(12951,7059) +12949 = and(12950,7060) +12948 = or(12949,7061) +12947 = and(12948,-7062) +12946 = and(12947,-7063) +12945 = or(12946,-7064) +12944 = or(12945,7065) +12943 = or(12944,7066) +12942 = and(12943,-7067) +12941 = or(12942,7068) +12940 = and(12941,-7069) +12939 = or(12940,7070) +12938 = or(12939,-7071) +12937 = and(12938,7072) +12936 = or(12937,-7073) +12935 = or(12936,7074) +12934 = or(12935,7075) +12933 = and(12934,-7076) +12932 = and(12933,7077) +12931 = or(12932,-7078) +12930 = or(12931,7079) +12929 = and(12930,-7080) +12928 = and(12929,-7081) +12927 = or(12928,-7082) +12926 = and(12927,7083) +12925 = and(12926,7084) +12924 = and(12925,7085) +12923 = and(12924,-7086) +12922 = and(12923,-7087) +12921 = or(12922,7088) +12920 = and(12921,-7089) +12919 = or(12920,-7090) +12918 = and(12919,7091) +12917 = and(12918,7092) +12916 = or(12917,-7093) +12915 = and(12916,7094) +12914 = and(12915,-7095) +12913 = or(12914,7096) +12912 = and(12913,7097) +12911 = and(12912,-7098) +12910 = and(12911,7099) +12909 = or(12910,7100) +12908 = and(12909,-7101) +12907 = or(12908,-7102) +12906 = or(12907,-7103) +12905 = and(12906,-7104) +12904 = or(12905,-7105) +12903 = and(12904,-7106) +12902 = or(12903,-7107) +12901 = or(12902,-7108) +12900 = and(12901,-7109) +12899 = or(12900,7110) +12898 = and(12899,-7111) +12897 = and(12898,-7112) +12896 = and(12897,7113) +12895 = or(12896,-7114) +12894 = and(12895,-7115) +12893 = or(12894,-7116) +12892 = and(12893,7117) +12891 = and(12892,-7118) +12890 = and(12891,7119) +12889 = and(12890,-7120) +12888 = or(12889,7121) +12887 = and(12888,-7122) +12886 = or(12887,-7123) +12885 = and(12886,-7124) +12884 = or(12885,-7125) +12883 = or(12884,-7126) +12882 = and(12883,-7127) +12881 = and(12882,-7128) +12880 = and(12881,7129) +12879 = and(12880,-7130) +12878 = or(12879,-7131) +12877 = and(12878,-7132) +12876 = or(12877,7133) +12875 = or(12876,-7134) +12874 = and(12875,-7135) +12873 = or(12874,-7136) +12872 = or(12873,7137) +12871 = and(12872,-7138) +12870 = or(12871,-7139) +12869 = and(12870,-7140) +12868 = or(12869,-7141) +12867 = or(12868,7142) +12866 = or(12867,-7143) +12865 = or(12866,-7144) +12864 = and(12865,7145) +12863 = or(12864,-7146) +12862 = and(12863,-7147) +12861 = and(12862,7148) +12860 = or(12861,-7149) +12859 = and(12860,-7150) +12858 = and(12859,7151) +12857 = and(12858,-7152) +12856 = or(12857,7153) +12855 = or(12856,7154) +12854 = and(12855,-7155) +12853 = or(12854,-7156) +12852 = or(12853,-7157) +12851 = and(12852,7158) +12850 = and(12851,7159) +12849 = and(12850,7160) +12848 = or(12849,7161) +12847 = and(12848,-7162) +12846 = or(12847,-7163) +12845 = or(12846,-7164) +12844 = or(12845,7165) +12843 = or(12844,-7166) +12842 = and(12843,7167) +12841 = and(12842,-7168) +12840 = and(12841,-7169) +12839 = or(12840,7170) +12838 = and(12839,-7171) +12837 = or(12838,7172) +12836 = and(12837,7173) +12835 = and(12836,-7174) +12834 = and(12835,-7175) +12833 = and(12834,-7176) +12832 = or(12833,7177) +12831 = and(12832,7178) +12830 = or(12831,-7179) +12829 = or(12830,7180) +12828 = and(12829,7181) +12827 = and(12828,7182) +12826 = or(12827,7183) +12825 = and(12826,7184) +12824 = and(12825,7185) +12823 = or(12824,7186) +12822 = or(12823,7187) +12821 = and(12822,7188) +12820 = and(12821,7189) +12819 = and(12820,7190) +12818 = or(12819,7191) +12817 = and(12818,-7192) +12816 = or(12817,-7193) +12815 = or(12816,-7194) +12814 = or(12815,7195) +12813 = or(12814,-7196) +12812 = and(12813,7197) +12811 = or(12812,7198) +12810 = or(12811,7199) +12809 = and(12810,-7200) +12808 = or(12809,-7201) +12807 = and(12808,-7202) +12806 = or(12807,-7203) +12805 = and(12806,7204) +12804 = and(12805,-7205) +12803 = or(12804,7206) +12802 = and(12803,-7207) +12801 = and(12802,7208) +12800 = and(12801,7209) +12799 = or(12800,7210) +12798 = or(12799,-7211) +12797 = and(12798,-7212) +12796 = and(12797,-7213) +12795 = and(12796,7214) +12794 = or(12795,-7215) +12793 = and(12794,-7216) +12792 = or(12793,7217) +12791 = or(12792,7218) +12790 = and(12791,7219) +12789 = and(12790,-7220) +12788 = and(12789,7221) +12787 = or(12788,-7222) +12786 = and(12787,-7223) +12785 = or(12786,-7224) +12784 = and(12785,7225) +12783 = or(12784,7226) +12782 = or(12783,-7227) +12781 = and(12782,-7228) +12780 = or(12781,7229) +12779 = or(12780,7230) +12778 = and(12779,-7231) +12777 = and(12778,7232) +12776 = and(12777,-7233) +12775 = and(12776,-7234) +12774 = or(12775,-7235) +12773 = and(12774,-7236) +12772 = and(12773,-7237) +12771 = and(12772,-7238) +12770 = or(12771,-7239) +12769 = and(12770,-7240) +12768 = or(12769,7241) +12767 = or(12768,7242) +12766 = and(12767,7243) +12765 = and(12766,7244) +12764 = or(12765,-7245) +12763 = and(12764,-7246) +12762 = and(12763,-7247) +12761 = or(12762,-7248) +12760 = and(12761,7249) +12759 = or(12760,-7250) +12758 = or(12759,-7251) +12757 = and(12758,-7252) +12756 = and(12757,7253) +12755 = or(12756,-7254) +12754 = and(12755,-7255) +12753 = or(12754,7256) +12752 = or(12753,-7257) +12751 = and(12752,-7258) +12750 = and(12751,-7259) +12749 = and(12750,7260) +12748 = and(12749,-7261) +12747 = or(12748,-7262) +12746 = or(12747,7263) +12745 = and(12746,7264) +12744 = or(12745,-7265) +12743 = and(12744,7266) +12742 = or(12743,7267) +12741 = and(12742,7268) +12740 = or(12741,-7269) +12739 = and(12740,-7270) +12738 = or(12739,-7271) +12737 = or(12738,-7272) +12736 = and(12737,-7273) +12735 = or(12736,-7274) +12734 = and(12735,-7275) +12733 = or(12734,-7276) +12732 = and(12733,7277) +12731 = and(12732,7278) +12730 = and(12731,-7279) +12729 = and(12730,-7280) +12728 = and(12729,-7281) +12727 = and(12728,7282) +12726 = and(12727,-7283) +12725 = or(12726,7284) +12724 = or(12725,-7285) +12723 = or(12724,-7286) +12722 = and(12723,-7287) +12721 = and(12722,7288) +12720 = or(12721,7289) +12719 = and(12720,-7290) +12718 = and(12719,-7291) +12717 = and(12718,7292) +12716 = or(12717,7293) +12715 = and(12716,-7294) +12714 = or(12715,-7295) +12713 = or(12714,7296) +12712 = or(12713,7297) +12711 = and(12712,7298) +12710 = and(12711,-7299) +12709 = and(12710,-7300) +12708 = or(12709,-7301) +12707 = or(12708,7302) +12706 = and(12707,-7303) +12705 = or(12706,-7304) +12704 = and(12705,-7305) +12703 = and(12704,7306) +12702 = and(12703,-7307) +12701 = or(12702,7308) +12700 = or(12701,7309) +12699 = or(12700,-7310) +12698 = and(12699,7311) +12697 = and(12698,-7312) +12696 = or(12697,7313) +12695 = and(12696,7314) +12694 = and(12695,-7315) +12693 = and(12694,-7316) +12692 = or(12693,7317) +12691 = or(12692,7318) +12690 = and(12691,7319) +12689 = or(12690,-7320) +12688 = and(12689,-7321) +12687 = or(12688,-7322) +12686 = or(12687,-7323) +12685 = or(12686,7324) +12684 = and(12685,7325) +12683 = and(12684,7326) +12682 = and(12683,7327) +12681 = and(12682,-7328) +12680 = or(12681,7329) +12679 = and(12680,7330) +12678 = or(12679,7331) +12677 = and(12678,-7332) +12676 = and(12677,-7333) +12675 = and(12676,-7334) +12674 = or(12675,-7335) +12673 = and(12674,7336) +12672 = and(12673,7337) +12671 = or(12672,-7338) +12670 = or(12671,-7339) +12669 = and(12670,-7340) +12668 = and(12669,7341) +12667 = or(12668,-7342) +12666 = and(12667,7343) +12665 = or(12666,-7344) +12664 = and(12665,7345) +12663 = and(12664,-7346) +12662 = or(12663,7347) +12661 = and(12662,-7348) +12660 = and(12661,-7349) +12659 = or(12660,-7350) +12658 = and(12659,7351) +12657 = or(12658,7352) +12656 = or(12657,-7353) +12655 = or(12656,7354) +12654 = and(12655,7355) +12653 = or(12654,7356) +12652 = and(12653,-7357) +12651 = and(12652,7358) +12650 = or(12651,7359) +12649 = and(12650,7360) +12648 = or(12649,7361) +12647 = or(12648,7362) +12646 = or(12647,-7363) +12645 = and(12646,-7364) +12644 = and(12645,-7365) +12643 = or(12644,7366) +12642 = and(12643,7367) +12641 = and(12642,7368) +12640 = or(12641,-7369) +12639 = or(12640,-7370) +12638 = and(12639,-7371) +12637 = and(12638,7372) +12636 = or(12637,-7373) +12635 = or(12636,-7374) +12634 = or(12635,7375) +12633 = and(12634,7376) +12632 = or(12633,7377) +12631 = and(12632,7378) +12630 = and(12631,-7379) +12629 = or(12630,-7380) +12628 = and(12629,-7381) +12627 = or(12628,7382) +12626 = and(12627,-7383) +12625 = and(12626,7384) +12624 = and(12625,7385) +12623 = or(12624,7386) +12622 = and(12623,7387) +12621 = or(12622,-7388) +12620 = or(12621,7389) +12619 = or(12620,7390) +12618 = and(12619,7391) +12617 = and(12618,-7392) +12616 = or(12617,-7393) +12615 = and(12616,-7394) +12614 = and(12615,7395) +12613 = or(12614,-7396) +12612 = and(12613,-7397) +12611 = or(12612,-7398) +12610 = and(12611,-7399) +12609 = and(12610,7400) +12608 = or(12609,7401) +12607 = and(12608,7402) +12606 = or(12607,-7403) +12605 = or(12606,7404) +12604 = or(12605,7405) +12603 = or(12604,-7406) +12602 = and(12603,7407) +12601 = and(12602,-7408) +12600 = or(12601,-7409) +12599 = or(12600,-7410) +12598 = and(12599,-7411) +12597 = and(12598,7412) +12596 = and(12597,7413) +12595 = and(12596,7414) +12594 = and(12595,7415) +12593 = or(12594,7416) +12592 = or(12593,-7417) +12591 = or(12592,-7418) +12590 = and(12591,-7419) +12589 = and(12590,7420) +12588 = and(12589,-7421) +12587 = or(12588,-7422) +12586 = and(12587,7423) +12585 = and(12586,7424) +12584 = and(12585,7425) +12583 = or(12584,7426) +12582 = or(12583,7427) +12581 = or(12582,7428) +12580 = and(12581,-7429) +12579 = and(12580,-7430) +12578 = and(12579,-7431) +12577 = and(12578,-7432) +12576 = or(12577,7433) +12575 = and(12576,7434) +12574 = or(12575,-7435) +12573 = and(12574,7436) +12572 = or(12573,-7437) +12571 = or(12572,7438) +12570 = or(12571,7439) +12569 = and(12570,7440) +12568 = or(12569,7441) +12567 = and(12568,-7442) +12566 = or(12567,7443) +12565 = and(12566,7444) +12564 = and(12565,-7445) +12563 = or(12564,-7446) +12562 = or(12563,7447) +12561 = or(12562,7448) +12560 = and(12561,7449) +12559 = and(12560,-7450) +12558 = or(12559,7451) +12557 = or(12558,-7452) +12556 = or(12557,7453) +12555 = or(12556,7454) +12554 = or(12555,7455) +12553 = or(12554,-7456) +12552 = or(12553,7457) +12551 = or(12552,7458) +12550 = and(12551,7459) +12549 = and(12550,-7460) +12548 = or(12549,-7461) +12547 = or(12548,-7462) +12546 = and(12547,-7463) +12545 = or(12546,7464) +12544 = and(12545,-7465) +12543 = and(12544,-7466) +12542 = or(12543,7467) +12541 = and(12542,7468) +12540 = or(12541,7469) +12539 = or(12540,7470) +12538 = or(12539,-7471) +12537 = and(12538,7472) +12536 = and(12537,7473) +12535 = or(12536,-7474) +12534 = or(12535,7475) +12533 = or(12534,7476) +12532 = and(12533,-7477) +12531 = and(12532,-7478) +12530 = or(12531,7479) +12529 = or(12530,-7480) +12528 = and(12529,-7481) +12527 = and(12528,-7482) +12526 = or(12527,7483) +12525 = or(12526,7484) +12524 = or(12525,-7485) +12523 = and(12524,-7486) +12522 = or(12523,7487) +12521 = and(12522,-7488) +12520 = or(12521,-7489) +12519 = or(12520,7490) +12518 = or(12519,7491) +12517 = and(12518,7492) +12516 = and(12517,-7493) +12515 = and(12516,7494) +12514 = and(12515,7495) +12513 = and(12514,-7496) +12512 = and(12513,-7497) +12511 = and(12512,7498) +12510 = or(12511,-7499) +12509 = and(12510,-7500) +12508 = or(12509,-7501) +12507 = or(12508,7502) +12506 = and(12507,-7503) +12505 = and(12506,7504) +12504 = or(12505,-7505) +12503 = or(12504,-7506) +12502 = or(12503,7507) +12501 = or(12502,7508) +12500 = and(12501,7509) +12499 = or(12500,7510) +12498 = or(12499,7511) +12497 = and(12498,7512) +12496 = and(12497,7513) +12495 = or(12496,7514) +12494 = and(12495,7515) +12493 = and(12494,7516) +12492 = or(12493,7517) +12491 = or(12492,7518) +12490 = and(12491,7519) +12489 = and(12490,-7520) +12488 = or(12489,7521) +12487 = or(12488,7522) +12486 = and(12487,7523) +12485 = or(12486,-7524) +12484 = or(12485,-7525) +12483 = and(12484,7526) +12482 = or(12483,-7527) +12481 = and(12482,-7528) +12480 = or(12481,7529) +12479 = and(12480,-7530) +12478 = or(12479,-7531) +12477 = and(12478,7532) +12476 = or(12477,7533) +12475 = and(12476,7534) +12474 = and(12475,-7535) +12473 = or(12474,7536) +12472 = and(12473,7537) +12471 = or(12472,-7538) +12470 = and(12471,-7539) +12469 = and(12470,-7540) +12468 = and(12469,-7541) +12467 = and(12468,-7542) +12466 = and(12467,-7543) +12465 = or(12466,-7544) +12464 = and(12465,7545) +12463 = or(12464,-7546) +12462 = or(12463,-7547) +12461 = or(12462,-7548) +12460 = and(12461,7549) +12459 = or(12460,7550) +12458 = and(12459,-7551) +12457 = and(12458,-7552) +12456 = or(12457,7553) +12455 = and(12456,-7554) +12454 = and(12455,-7555) +12453 = and(12454,7556) +12452 = or(12453,7557) +12451 = or(12452,7558) +12450 = or(12451,7559) +12449 = and(12450,-7560) +12448 = and(12449,7561) +12447 = and(12448,7562) +12446 = and(12447,7563) +12445 = or(12446,-7564) +12444 = or(12445,7565) +12443 = or(12444,7566) +12442 = or(12443,-7567) +12441 = and(12442,7568) +12440 = and(12441,-7569) +12439 = or(12440,7570) +12438 = and(12439,-7571) +12437 = or(12438,-7572) +12436 = and(12437,7573) +12435 = or(12436,7574) +12434 = and(12435,-7575) +12433 = and(12434,-7576) +12432 = or(12433,7577) +12431 = or(12432,-7578) +12430 = or(12431,7579) +12429 = or(12430,7580) +12428 = and(12429,-7581) +12427 = or(12428,7582) +12426 = and(12427,7583) +12425 = or(12426,-7584) +12424 = and(12425,-7585) +12423 = or(12424,7586) +12422 = or(12423,-7587) +12421 = or(12422,-7588) +12420 = and(12421,7589) +12419 = or(12420,-7590) +12418 = or(12419,7591) +12417 = or(12418,-7592) +12416 = or(12417,7593) +12415 = or(12416,7594) +12414 = and(12415,-7595) +12413 = and(12414,-7596) +12412 = or(12413,-7597) +12411 = or(12412,7598) +12410 = and(12411,7599) +12409 = or(12410,7600) +12408 = and(12409,-7601) +12407 = and(12408,7602) +12406 = or(12407,7603) +12405 = and(12406,-7604) +12404 = or(12405,-7605) +12403 = and(12404,7606) +12402 = and(12403,-7607) +12401 = and(12402,-7608) +12400 = and(12401,7609) +12399 = or(12400,-7610) +12398 = and(12399,7611) +12397 = and(12398,7612) +12396 = and(12397,-7613) +12395 = and(12396,7614) +12394 = and(12395,-7615) +12393 = or(12394,7616) +12392 = or(12393,7617) +12391 = or(12392,-7618) +12390 = or(12391,7619) +12389 = and(12390,7620) +12388 = and(12389,-7621) +12387 = or(12388,-7622) +12386 = and(12387,-7623) +12385 = or(12386,7624) +12384 = and(12385,-7625) +12383 = or(12384,7626) +12382 = and(12383,7627) +12381 = or(12382,7628) +12380 = or(12381,7629) +12379 = and(12380,7630) +12378 = and(12379,-7631) +12377 = or(12378,7632) +12376 = or(12377,7633) +12375 = and(12376,-7634) +12374 = or(12375,7635) +12373 = and(12374,7636) +12372 = and(12373,7637) +12371 = and(12372,-7638) +12370 = or(12371,-7639) +12369 = and(12370,-7640) +12368 = and(12369,7641) +12367 = and(12368,7642) +12366 = or(12367,7643) +12365 = or(12366,-7644) +12364 = and(12365,-7645) +12363 = or(12364,7646) +12362 = or(12363,-7647) +12361 = and(12362,7648) +12360 = and(12361,-7649) +12359 = or(12360,7650) +12358 = or(12359,-7651) +12357 = and(12358,7652) +12356 = and(12357,7653) +12355 = and(12356,-7654) +12354 = or(12355,7655) +12353 = or(12354,-7656) +12352 = and(12353,-7657) +12351 = or(12352,7658) +12350 = and(12351,7659) +12349 = and(12350,7660) +12348 = and(12349,-7661) +12347 = and(12348,7662) +12346 = and(12347,-7663) +12345 = or(12346,7664) +12344 = or(12345,7665) +12343 = and(12344,-7666) +12342 = and(12343,7667) +12341 = or(12342,-7668) +12340 = and(12341,-7669) +12339 = and(12340,-7670) +12338 = or(12339,-7671) +12337 = or(12338,-7672) +12336 = or(12337,7673) +12335 = and(12336,-7674) +12334 = or(12335,-7675) +12333 = or(12334,-7676) +12332 = or(12333,7677) +12331 = and(12332,7678) +12330 = and(12331,-7679) +12329 = and(12330,-7680) +12328 = and(12329,7681) +12327 = or(12328,-7682) +12326 = or(12327,-7683) +12325 = and(12326,-7684) +12324 = and(12325,7685) +12323 = and(12324,-7686) +12322 = or(12323,7687) +12321 = and(12322,-7688) +12320 = or(12321,-7689) +12319 = or(12320,7690) +12318 = and(12319,-7691) +12317 = or(12318,7692) +12316 = or(12317,-7693) +12315 = or(12316,-7694) +12314 = and(12315,-7695) +12313 = or(12314,7696) +12312 = and(12313,7697) +12311 = and(12312,7698) +12310 = and(12311,7699) +12309 = or(12310,7700) +12308 = and(12309,7701) +12307 = or(12308,7702) +12306 = and(12307,-7703) +12305 = and(12306,-7704) +12304 = or(12305,-7705) +12303 = or(12304,7706) +12302 = and(12303,-7707) +12301 = or(12302,-7708) +12300 = and(12301,7709) +12299 = or(12300,7710) +12298 = or(12299,7711) +12297 = and(12298,7712) +12296 = and(12297,-7713) +12295 = and(12296,-7714) +12294 = or(12295,-7715) +12293 = and(12294,-7716) +12292 = or(12293,-7717) +12291 = or(12292,-7718) +12290 = and(12291,7719) +12289 = or(12290,7720) +12288 = or(12289,-7721) +12287 = or(12288,-7722) +12286 = or(12287,7723) +12285 = and(12286,-7724) +12284 = or(12285,-7725) +12283 = and(12284,7726) +12282 = or(12283,7727) +12281 = or(12282,7728) +12280 = or(12281,-7729) +12279 = and(12280,-7730) +12278 = and(12279,7731) +12277 = or(12278,-7732) +12276 = and(12277,7733) +12275 = or(12276,-7734) +12274 = and(12275,-7735) +12273 = or(12274,7736) +12272 = or(12273,-7737) +12271 = or(12272,7738) +12270 = and(12271,-7739) +12269 = or(12270,-7740) +12268 = and(12269,-7741) +12267 = and(12268,7742) +12266 = or(12267,7743) +12265 = and(12266,7744) +12264 = or(12265,7745) +12263 = and(12264,7746) +12262 = or(12263,-7747) +12261 = or(12262,-7748) +12260 = and(12261,-7749) +12259 = or(12260,-7750) +12258 = and(12259,7751) +12257 = or(12258,-7752) +12256 = and(12257,-7753) +12255 = or(12256,-7754) +12254 = and(12255,7755) +12253 = or(12254,-7756) +12252 = or(12253,-7757) +12251 = and(12252,-7758) +12250 = and(12251,7759) +12249 = or(12250,7760) +12248 = or(12249,-7761) +12247 = and(12248,7762) +12246 = and(12247,-7763) +12245 = or(12246,-7764) +12244 = or(12245,-7765) +12243 = and(12244,-7766) +12242 = or(12243,7767) +12241 = and(12242,-7768) +12240 = or(12241,-7769) +12239 = or(12240,7770) +12238 = and(12239,7771) +12237 = or(12238,-7772) +12236 = or(12237,7773) +12235 = or(12236,7774) +12234 = or(12235,-7775) +12233 = and(12234,7776) +12232 = and(12233,-7777) +12231 = or(12232,7778) +12230 = or(12231,-7779) +12229 = and(12230,-7780) +12228 = or(12229,-7781) +12227 = and(12228,7782) +12226 = or(12227,7783) +12225 = and(12226,-7784) +12224 = or(12225,7785) +12223 = or(12224,-7786) +12222 = and(12223,-7787) +12221 = and(12222,-7788) +12220 = and(12221,7789) +12219 = and(12220,-7790) +12218 = and(12219,-7791) +12217 = and(12218,7792) +12216 = and(12217,7793) +12215 = or(12216,-7794) +12214 = or(12215,-7795) +12213 = or(12214,7796) +12212 = or(12213,-7797) +12211 = or(12212,7798) +12210 = and(12211,7799) +12209 = and(12210,-7800) +12208 = or(12209,-7801) +12207 = and(12208,-7802) +12206 = or(12207,-7803) +12205 = or(12206,-7804) +12204 = and(12205,7805) +12203 = and(12204,-7806) +12202 = or(12203,7807) +12201 = and(12202,-7808) +12200 = and(12201,7809) +12199 = and(12200,-7810) +12198 = and(12199,-7811) +12197 = and(12198,-7812) +12196 = or(12197,7813) +12195 = or(12196,-7814) +12194 = or(12195,7815) +12193 = and(12194,-7816) +12192 = or(12193,-7817) +12191 = and(12192,-7818) +12190 = and(12191,7819) +12189 = or(12190,7820) +12188 = and(12189,-7821) +12187 = or(12188,-7822) +12186 = or(12187,-7823) +12185 = and(12186,-7824) +12184 = or(12185,7825) +12183 = and(12184,7826) +12182 = and(12183,-7827) +12181 = or(12182,-7828) +12180 = or(12181,7829) +12179 = and(12180,-7830) +12178 = or(12179,-7831) +12177 = or(12178,-7832) +12176 = and(12177,-7833) +12175 = or(12176,-7834) +12174 = and(12175,7835) +12173 = or(12174,7836) +12172 = or(12173,-7837) +12171 = and(12172,7838) +12170 = and(12171,7839) +12169 = or(12170,-7840) +12168 = and(12169,-7841) +12167 = or(12168,7842) +12166 = and(12167,7843) +12165 = or(12166,-7844) +12164 = or(12165,7845) +12163 = or(12164,-7846) +12162 = and(12163,-7847) +12161 = or(12162,-7848) +12160 = or(12161,-7849) +12159 = or(12160,7850) +12158 = or(12159,-7851) +12157 = or(12158,7852) +12156 = and(12157,-7853) +12155 = and(12156,7854) +12154 = or(12155,-7855) +12153 = or(12154,7856) +12152 = and(12153,7857) +12151 = and(12152,-7858) +12150 = and(12151,-7859) +12149 = or(12150,-7860) +12148 = or(12149,-7861) +12147 = and(12148,7862) +12146 = and(12147,-7863) +12145 = and(12146,-7864) +12144 = or(12145,7865) +12143 = and(12144,7866) +12142 = and(12143,7867) +12141 = or(12142,7868) +12140 = and(12141,7869) +12139 = and(12140,7870) +12138 = or(12139,-7871) +12137 = or(12138,7872) +12136 = and(12137,-7873) +12135 = or(12136,7874) +12134 = and(12135,7875) +12133 = or(12134,-7876) +12132 = and(12133,7877) +12131 = and(12132,7878) +12130 = or(12131,7879) +12129 = or(12130,7880) +12128 = and(12129,7881) +12127 = and(12128,7882) +12126 = or(12127,-7883) +12125 = and(12126,-7884) +12124 = and(12125,7885) +12123 = or(12124,-7886) +12122 = and(12123,7887) +12121 = or(12122,7888) +12120 = or(12121,-7889) +12119 = and(12120,-7890) +12118 = and(12119,7891) +12117 = or(12118,7892) +12116 = and(12117,7893) +12115 = or(12116,7894) +12114 = and(12115,7895) +12113 = and(12114,7896) +12112 = or(12113,7897) +12111 = or(12112,-7898) +12110 = or(12111,7899) +12109 = or(12110,7900) +12108 = and(12109,7901) +12107 = or(12108,-7902) +12106 = and(12107,7903) +12105 = and(12106,7904) +12104 = or(12105,-7905) +12103 = and(12104,-7906) +12102 = or(12103,-7907) +12101 = or(12102,7908) +12100 = or(12101,-7909) +12099 = and(12100,7910) +12098 = or(12099,-7911) +12097 = or(12098,7912) +12096 = and(12097,-7913) +12095 = or(12096,7914) +12094 = and(12095,7915) +12093 = and(12094,7916) +12092 = and(12093,7917) +12091 = and(12092,-7918) +12090 = and(12091,-7919) +12089 = or(12090,7920) +12088 = or(12089,7921) +12087 = or(12088,-7922) +12086 = or(12087,7923) +12085 = or(12086,7924) +12084 = or(12085,7925) +12083 = and(12084,-7926) +12082 = or(12083,-7927) +12081 = or(12082,-7928) +12080 = and(12081,-7929) +12079 = and(12080,7930) +12078 = or(12079,-7931) +12077 = and(12078,7932) +12076 = and(12077,7933) +12075 = or(12076,7934) +12074 = or(12075,7935) +12073 = and(12074,7936) +12072 = or(12073,7937) +12071 = or(12072,7938) +12070 = or(12071,-7939) +12069 = or(12070,-7940) +12068 = and(12069,-7941) +12067 = and(12068,7942) +12066 = and(12067,7943) +12065 = or(12066,-7944) +12064 = and(12065,-7945) +12063 = and(12064,7946) +12062 = or(12063,-7947) +12061 = and(12062,-7948) +12060 = or(12061,-7949) +12059 = or(12060,7950) +12058 = and(12059,7951) +12057 = and(12058,-7952) +12056 = and(12057,-7953) +12055 = or(12056,7954) +12054 = and(12055,7955) +12053 = or(12054,7956) +12052 = and(12053,7957) +12051 = and(12052,-7958) +12050 = and(12051,-7959) +12049 = or(12050,-7960) +12048 = and(12049,-7961) +12047 = or(12048,7962) +12046 = and(12047,7963) +12045 = and(12046,7964) +12044 = or(12045,-7965) +12043 = and(12044,-7966) +12042 = and(12043,7967) +12041 = or(12042,7968) +12040 = or(12041,7969) +12039 = or(12040,7970) +12038 = and(12039,7971) +12037 = and(12038,-7972) +12036 = and(12037,-7973) +12035 = and(12036,-7974) +12034 = and(12035,-7975) +12033 = or(12034,-7976) +12032 = or(12033,7977) +12031 = or(12032,7978) +12030 = and(12031,-7979) +12029 = and(12030,7980) +12028 = or(12029,-7981) +12027 = or(12028,-7982) +12026 = or(12027,7983) +12025 = and(12026,-7984) +12024 = or(12025,-7985) +12023 = and(12024,7986) +12022 = or(12023,7987) +12021 = or(12022,-7988) +12020 = or(12021,7989) +12019 = or(12020,-7990) +12018 = or(12019,-7991) +12017 = or(12018,7992) +12016 = and(12017,-7993) +12015 = and(12016,-7994) +12014 = and(12015,7995) +12013 = and(12014,7996) +12012 = or(12013,-7997) +12011 = and(12012,-7998) +12010 = and(12011,7999) +12009 = or(12010,-8000) +12008 = and(12009,8001) +12007 = or(12008,-8002) +12006 = and(4002,12007) +12005 = and(12006,1) +8003 = and(8004,12005) +# 3056 : AABvbcv_A[0] +# 7057 : AABvbcv_B[0] +# 3725 : AAxEHbU_A[1] +# 7726 : AAxEHbU_B[1] +# 2045 : ABqKTPk_A[0] +# 6046 : ABqKTPk_B[0] +# 3882 : ABsdUmm_A[0] +# 7883 : ABsdUmm_B[0] +# 1798 : ACaDbHi_A[1] +# 5799 : ACaDbHi_B[1] +# 2874 : ACtzqwv_A[1] +# 6875 : ACtzqwv_B[1] +# 1722 : AEHghrP_A[0] +# 5723 : AEHghrP_B[0] +# 1634 : AGTSlYJ_A[1] +# 5635 : AGTSlYJ_B[1] +# 2292 : AHTKnJj_A[1] +# 6293 : AHTKnJj_B[1] +# 63 : AIKaEXT_A[1] +# 4064 : AIKaEXT_B[1] +# 2718 : AIQYEPz_A[0] +# 6719 : AIQYEPz_B[0] +# 297 : AIxeqZU_A[0] +# 4298 : AIxeqZU_B[0] +# 2196 : AJifKnz_A[1] +# 6197 : AJifKnz_B[1] +# 2418 : AJylEay_A[0] +# 6419 : AJylEay_B[0] +# 99 : AKPmLqi_A[1] +# 4100 : AKPmLqi_B[1] +# 2520 : ALHEBwr_A[1] +# 6521 : ALHEBwr_B[1] +# 523 : ALMouNO_A[1] +# 4524 : ALMouNO_B[1] +# 1203 : ALgFsvK_A[0] +# 5204 : ALgFsvK_B[0] +# 252 : AMIbIUg_A[1] +# 4253 : AMIbIUg_B[1] +# 3403 : AMOYlBR_A[1] +# 7404 : AMOYlBR_B[1] +# 3033 : AMkaInu_A[0] +# 7034 : AMkaInu_B[0] +# 332 : AMknBpN_A[1] +# 4333 : AMknBpN_B[1] +# 664 : AMqrkug_A[0] +# 4665 : AMqrkug_B[0] +# 21 : AMuEPiG_A[1] +# 4022 : AMuEPiG_B[1] +# 3141 : AOKSqPT_A[1] +# 7142 : AOKSqPT_B[1] +# 3562 : AOtFoFv_A[0] +# 7563 : AOtFoFv_B[0] +# 534 : APScOGK_A[1] +# 4535 : APScOGK_B[1] +# 2739 : APoTLUu_A[0] +# 6740 : APoTLUu_B[0] +# 1547 : APuBaBC_A[1] +# 5548 : APuBaBC_B[1] +# 3477 : AQBHawD_A[0] +# 7478 : AQBHawD_B[0] +# 3499 : ARSnFXz_A[0] +# 7500 : ARSnFXz_B[0] +# 3252 : ASnpXVS_A[1] +# 7253 : ASnpXVS_B[1] +# 2062 : ATDYZuS_A[0] +# 6063 : ATDYZuS_B[0] +# 111 : ATPvEtg_A[0] +# 4112 : ATPvEtg_B[0] +# 3370 : ATaRceD_A[0] +# 7371 : ATaRceD_B[0] +# 597 : ATiEkbO_A[0] +# 4598 : ATiEkbO_B[0] +# 2580 : AUMmPhC_A[0] +# 6581 : AUMmPhC_B[0] +# 3431 : AVdYUdu_A[1] +# 7432 : AVdYUdu_B[1] +# 1804 : AXBasqk_A[0] +# 5805 : AXBasqk_B[0] +# 2494 : AXDNwbP_A[1] +# 6495 : AXDNwbP_B[1] +# 1746 : AYgxDzv_A[0] +# 5747 : AYgxDzv_B[0] +# 1413 : AYhHHfq_A[0] +# 5414 : AYhHHfq_B[0] +# 1563 : AZDblbv_A[1] +# 5564 : AZDblbv_B[1] +# 454 : AZcIUxa_A[1] +# 4455 : AZcIUxa_B[1] +# 267 : AZzLjJg_A[0] +# 4268 : AZzLjJg_B[0] +# 735 : AbUcdqg_A[1] +# 4736 : AbUcdqg_B[1] +# 2456 : AbXNwrt_A[0] +# 6457 : AbXNwrt_B[0] +# 1161 : AcGLGBT_A[0] +# 5162 : AcGLGBT_B[0] +# 2201 : AdoZqXL_A[0] +# 6202 : AdoZqXL_B[0] +# 3086 : AeLiyXj_A[1] +# 7087 : AeLiyXj_B[1] +# 3171 : AfIZPgK_A[1] +# 7172 : AfIZPgK_B[1] +# 3459 : Afebjmc_A[0] +# 7460 : Afebjmc_B[0] +# 1680 : AfpEDgW_A[1] +# 5681 : AfpEDgW_B[1] +# 1328 : AgOpuYL_A[1] +# 5329 : AgOpuYL_B[1] +# 3575 : AhJumEc_A[1] +# 7576 : AhJumEc_B[1] +# 2802 : AhZdwCv_A[0] +# 6803 : AhZdwCv_B[0] +# 884 : AhbQgqh_A[1] +# 4885 : AhbQgqh_B[1] +# 1927 : AhnzLbI_A[0] +# 5928 : AhnzLbI_B[0] +# 3026 : AhrsqOT_A[1] +# 7027 : AhrsqOT_B[1] +# 920 : AiikbyS_A[1] +# 4921 : AiikbyS_B[1] +# 3142 : AimZkZG_A[0] +# 7143 : AimZkZG_B[0] +# 3322 : AjCGzJS_A[0] +# 7323 : AjCGzJS_B[0] +# 621 : AkbrYgB_A[0] +# 4622 : AkbrYgB_B[0] +# 982 : AlfEIRB_A[1] +# 4983 : AlfEIRB_B[1] +# 656 : AnHqacf_A[1] +# 4657 : AnHqacf_B[1] +# 3068 : AnkLmaa_A[1] +# 7069 : AnkLmaa_B[1] +# 2623 : AnyJJjo_A[0] +# 6624 : AnyJJjo_B[0] +# 3890 : AppBPFD_A[0] +# 7891 : AppBPFD_B[0] +# 750 : ApvNKaQ_A[1] +# 4751 : ApvNKaQ_B[1] +# 1052 : AqIFWYb_A[0] +# 5053 : AqIFWYb_B[0] +# 3429 : AqceGUK_A[1] +# 7430 : AqceGUK_B[1] +# 27 : AqxRgDB_A[1] +# 4028 : AqxRgDB_B[1] +# 1288 : AqyFCeA_A[1] +# 5289 : AqyFCeA_B[1] +# 556 : AsBYCjN_A[0] +# 4557 : AsBYCjN_B[0] +# 601 : AsYlUQd_A[1] +# 4602 : AsYlUQd_B[1] +# 3896 : AtkWTIb_A[1] +# 7897 : AtkWTIb_B[1] +# 2722 : AvBrknF_A[1] +# 6723 : AvBrknF_B[1] +# 1665 : AvGlZKf_A[1] +# 5666 : AvGlZKf_B[1] +# 964 : AwEgsJo_A[0] +# 4965 : AwEgsJo_B[0] +# 1652 : AwHIbMx_A[1] +# 5653 : AwHIbMx_B[1] +# 1994 : AwyJeqW_A[0] +# 5995 : AwyJeqW_B[0] +# 1811 : AyHRXNx_A[1] +# 5812 : AyHRXNx_B[1] +# 3159 : AyVeXPd_A[0] +# 7160 : AyVeXPd_B[0] +# 2634 : AyfnujI_A[1] +# 6635 : AyfnujI_B[1] +# 2704 : BAXPMKX_A[1] +# 6705 : BAXPMKX_B[1] +# 2754 : BAiWGnh_A[1] +# 6755 : BAiWGnh_B[1] +# 1713 : BBnQTgf_A[1] +# 5714 : BBnQTgf_B[1] +# 1191 : BCkmYSi_A[0] +# 5192 : BCkmYSi_B[0] +# 3671 : BDMIOfy_A[1] +# 7672 : BDMIOfy_B[1] +# 1074 : BDszrhJ_A[0] +# 5075 : BDszrhJ_B[0] +# 3944 : BETurMD_A[1] +# 7945 : BETurMD_B[1] +# 1076 : BEeCbhx_A[1] +# 5077 : BEeCbhx_B[1] +# 1771 : BFMgUPQ_A[0] +# 5772 : BFMgUPQ_B[0] +# 1293 : BGAbqAD_A[1] +# 5294 : BGAbqAD_B[1] +# 996 : BGJPWAR_A[0] +# 4997 : BGJPWAR_B[0] +# 1362 : BHNRBRo_A[1] +# 5363 : BHNRBRo_B[1] +# 3216 : BHbMIAn_A[1] +# 7217 : BHbMIAn_B[1] +# 2790 : BHymtlJ_A[0] +# 6791 : BHymtlJ_B[0] +# 3095 : BIFCbMa_A[0] +# 7096 : BIFCbMa_B[0] +# 2665 : BIFzozM_A[0] +# 6666 : BIFzozM_B[0] +# 3462 : BIyGvjv_A[0] +# 7463 : BIyGvjv_B[0] +# 2690 : BJQkYdh_A[0] +# 6691 : BJQkYdh_B[0] +# 1147 : BKCeavs_A[1] +# 5148 : BKCeavs_B[1] +# 2424 : BKZtFzw_A[1] +# 6425 : BKZtFzw_B[1] +# 1150 : BKcEbdS_A[0] +# 5151 : BKcEbdS_B[0] +# 584 : BLNzOSi_A[1] +# 4585 : BLNzOSi_B[1] +# 225 : BMIduPB_A[0] +# 4226 : BMIduPB_B[0] +# 2499 : BMRmffv_A[1] +# 6500 : BMRmffv_B[1] +# 2386 : BMrEnCB_A[1] +# 6387 : BMrEnCB_B[1] +# 155 : BNCjmGy_A[1] +# 4156 : BNCjmGy_B[1] +# 2786 : BNjjMnQ_A[1] +# 6787 : BNjjMnQ_B[1] +# 1857 : BOnHjor_A[0] +# 5858 : BOnHjor_B[0] +# 1991 : BPirJWJ_A[1] +# 5992 : BPirJWJ_B[1] +# 2678 : BPmwkHh_A[0] +# 6679 : BPmwkHh_B[0] +# 3357 : BQLgalC_A[0] +# 7358 : BQLgalC_B[0] +# 3256 : BQtsMpQ_A[1] +# 7257 : BQtsMpQ_B[1] +# 3240 : BUelbNx_A[1] +# 7241 : BUelbNx_B[1] +# 363 : BUlbYYE_A[0] +# 4364 : BUlbYYE_B[0] +# 3931 : BWOfgNu_A[0] +# 7932 : BWOfgNu_B[0] +# 1425 : BWPcdzc_A[1] +# 5426 : BWPcdzc_B[1] +# 1514 : BWdcfOe_A[0] +# 5515 : BWdcfOe_B[0] +# 3979 : BWdcmsm_A[1] +# 7980 : BWdcmsm_B[1] +# 45 : BYscRiz_A[0] +# 4046 : BYscRiz_B[0] +# 2207 : BcbWxUO_A[0] +# 6208 : BcbWxUO_B[0] +# 3878 : BcmWzBH_A[0] +# 7879 : BcmWzBH_B[0] +# 854 : BdQykcD_A[0] +# 4855 : BdQykcD_B[0] +# 2240 : BeBhcmP_A[1] +# 6241 : BeBhcmP_B[1] +# 1494 : BeGGFAQ_A[0] +# 5495 : BeGGFAQ_B[0] +# 1638 : BeXCtxA_A[1] +# 5639 : BeXCtxA_B[1] +# 306 : BffKLxR_A[1] +# 4307 : BffKLxR_B[1] +# 1849 : BgRqXrF_A[1] +# 5850 : BgRqXrF_B[1] +# 741 : BiLrZko_A[1] +# 4742 : BiLrZko_B[1] +# 2581 : BibLPwB_A[1] +# 6582 : BibLPwB_B[1] +# 1935 : BimlowY_A[0] +# 5936 : BimlowY_B[0] +# 1202 : BkBHUJL_A[0] +# 5203 : BkBHUJL_B[0] +# 14 : BkBNWBw_A[0] +# 4015 : BkBNWBw_B[0] +# 3788 : BkETHbq_A[0] +# 7789 : BkETHbq_B[0] +# 2347 : BklNgic_A[1] +# 6348 : BklNgic_B[1] +# 1303 : BlqpHPc_A[1] +# 5304 : BlqpHPc_B[1] +# 2986 : BlyBrfX_A[0] +# 6987 : BlyBrfX_B[0] +# 2537 : BmToryY_A[0] +# 6538 : BmToryY_B[0] +# 699 : BmUdCnd_A[0] +# 4700 : BmUdCnd_B[0] +# 489 : BmfYbuz_A[0] +# 4490 : BmfYbuz_B[0] +# 895 : BmgIfiz_A[0] +# 4896 : BmgIfiz_B[0] +# 952 : BnSgiES_A[1] +# 4953 : BnSgiES_B[1] +# 3112 : BnShbbv_A[1] +# 7113 : BnShbbv_B[1] +# 2109 : BneDZIc_A[0] +# 6110 : BneDZIc_B[0] +# 2122 : BpGFRSI_A[1] +# 6123 : BpGFRSI_B[1] +# 2265 : BpUSbPE_A[0] +# 6266 : BpUSbPE_B[0] +# 3999 : BpYdEeb_A[0] +# 8000 : BpYdEeb_B[0] +# 2411 : Bqvczav_A[1] +# 6412 : Bqvczav_B[1] +# 2922 : BrEObUR_A[1] +# 6923 : BrEObUR_B[1] +# 1468 : BrlfNQH_A[1] +# 5469 : BrlfNQH_B[1] +# 1551 : BtHjHjj_A[1] +# 5552 : BtHjHjj_B[1] +# 3722 : BuQofTG_A[1] +# 7723 : BuQofTG_B[1] +# 1335 : BvIsLpU_A[0] +# 5336 : BvIsLpU_B[0] +# 101 : BwTIFav_A[0] +# 4102 : BwTIFav_B[0] +# 270 : BxqBGof_A[1] +# 4271 : BxqBGof_B[1] +# 278 : ByVxhrg_A[0] +# 4279 : ByVxhrg_B[0] +# 34 : BzZbNYp_A[0] +# 4035 : BzZbNYp_B[0] +# 1231 : CBBlRnQ_A[1] +# 5232 : CBBlRnQ_B[1] +# 721 : CBkdtRe_A[1] +# 4722 : CBkdtRe_B[1] +# 2647 : CCjoiJG_A[0] +# 6648 : CCjoiJG_B[0] +# 1754 : CCtzmoF_A[1] +# 5755 : CCtzmoF_B[1] +# 2218 : CDGyiYD_A[1] +# 6219 : CDGyiYD_B[1] +# 1630 : CFeVzVa_A[0] +# 5631 : CFeVzVa_B[0] +# 3376 : CFkPYmG_A[1] +# 7377 : CFkPYmG_B[1] +# 272 : CHGlGpZ_A[0] +# 4273 : CHGlGpZ_B[0] +# 3315 : CHgUUHX_A[1] +# 7316 : CHgUUHX_B[1] +# 1996 : CHzRDWF_A[0] +# 5997 : CHzRDWF_B[0] +# 538 : CIKHDST_A[0] +# 4539 : CIKHDST_B[0] +# 66 : CJbExvd_A[1] +# 4067 : CJbExvd_B[1] +# 1168 : CKRzbgc_A[0] +# 5169 : CKRzbgc_B[0] +# 2344 : CKiyKAE_A[0] +# 6345 : CKiyKAE_B[0] +# 2884 : CKmihGw_A[1] +# 6885 : CKmihGw_B[1] +# 608 : CKnZxsk_A[1] +# 4609 : CKnZxsk_B[1] +# 352 : CLtmDlz_A[1] +# 4353 : CLtmDlz_B[1] +# 1411 : CNbuexw_A[1] +# 5412 : CNbuexw_B[1] +# 1913 : CNhfktx_A[1] +# 5914 : CNhfktx_B[1] +# 1385 : CNsxWUy_A[0] +# 5386 : CNsxWUy_B[0] +# 3976 : COjPpZc_A[1] +# 7977 : COjPpZc_B[1] +# 3237 : CPLDPKy_A[0] +# 7238 : CPLDPKy_B[0] +# 1215 : CPLijyO_A[1] +# 5216 : CPLijyO_B[1] +# 3377 : CQrYeXq_A[1] +# 7378 : CQrYeXq_B[1] +# 1728 : CQyPRhD_A[1] +# 5729 : CQyPRhD_B[1] +# 3604 : CReCDUr_A[1] +# 7605 : CReCDUr_B[1] +# 2831 : CSTSkDb_A[0] +# 6832 : CSTSkDb_B[0] +# 2319 : CTLkdDH_A[0] +# 6320 : CTLkdDH_B[0] +# 2747 : CTpfaxg_A[1] +# 6748 : CTpfaxg_B[1] +# 441 : CUZzJDE_A[0] +# 4442 : CUZzJDE_B[0] +# 715 : CUfBvcy_A[0] +# 4716 : CUfBvcy_B[0] +# 3157 : CUxMacX_A[1] +# 7158 : CUxMacX_B[1] +# 2660 : CVScKTE_A[1] +# 6661 : CVScKTE_B[1] +# 2769 : CVmePFb_A[0] +# 6770 : CVmePFb_B[0] +# 796 : CWsYoeS_A[0] +# 4797 : CWsYoeS_B[0] +# 883 : CXMByqi_A[1] +# 4884 : CXMByqi_B[1] +# 1508 : CYRooqS_A[0] +# 5509 : CYRooqS_B[0] +# 1068 : CYaNggQ_A[1] +# 5069 : CYaNggQ_B[1] +# 764 : CYdiaEW_A[1] +# 4765 : CYdiaEW_B[1] +# 1015 : CZQekbp_A[0] +# 5016 : CZQekbp_B[0] +# 2289 : CZVZBiZ_A[1] +# 6290 : CZVZBiZ_B[1] +# 3501 : CZqGDQz_A[1] +# 7502 : CZqGDQz_B[1] +# 1487 : CZqeLFZ_A[1] +# 5488 : CZqeLFZ_B[1] +# 1312 : Ccaietl_A[1] +# 5313 : Ccaietl_B[1] +# 3571 : CcnjOiG_A[1] +# 7572 : CcnjOiG_B[1] +# 1497 : CczDOft_A[0] +# 5498 : CczDOft_B[0] +# 2779 : CdCteYL_A[1] +# 6780 : CdCteYL_B[1] +# 3805 : CekRKyt_A[1] +# 7806 : CekRKyt_B[1] +# 3249 : CfENqYM_A[1] +# 7250 : CfENqYM_B[1] +# 1042 : CftsmPE_A[1] +# 5043 : CftsmPE_B[1] +# 3905 : CiZtnQx_A[1] +# 7906 : CiZtnQx_B[1] +# 3983 : CjjKlsw_A[0] +# 7984 : CjjKlsw_B[0] +# 2677 : CldCCsj_A[1] +# 6678 : CldCCsj_B[1] +# 1723 : CmaefQD_A[0] +# 5724 : CmaefQD_B[0] +# 1214 : CnfBnZN_A[0] +# 5215 : CnfBnZN_B[0] +# 437 : CoYahuI_A[0] +# 4438 : CoYahuI_B[0] +# 3209 : Coywahn_A[1] +# 7210 : Coywahn_B[1] +# 3731 : CpvsfVH_A[0] +# 7732 : CpvsfVH_B[0] +# 2382 : CqLgTmb_A[0] +# 6383 : CqLgTmb_B[0] +# 1750 : CqaZjKg_A[1] +# 5751 : CqaZjKg_B[1] +# 1149 : CqmlKen_A[0] +# 5150 : CqmlKen_B[0] +# 1486 : CqzjLKD_A[1] +# 5487 : CqzjLKD_B[1] +# 2173 : CuMhuIr_A[0] +# 6174 : CuMhuIr_B[0] +# 3640 : CvcWviV_A[1] +# 7641 : CvcWviV_B[1] +# 3253 : CvmkhNJ_A[1] +# 7254 : CvmkhNJ_B[1] +# 571 : CwFxkKC_A[0] +# 4572 : CwFxkKC_B[0] +# 2885 : CwfWlSF_A[0] +# 6886 : CwfWlSF_B[0] +# 52 : CxMwyUL_A[0] +# 4053 : CxMwyUL_B[0] +# 3655 : CxkRYTN_A[0] +# 7656 : CxkRYTN_B[0] +# 2833 : CyvwmbD_A[0] +# 6834 : CyvwmbD_B[0] +# 1078 : CzlGFAc_A[0] +# 5079 : CzlGFAc_B[0] +# 951 : CzpWnvZ_A[1] +# 4952 : CzpWnvZ_B[1] +# 3857 : CzxIVJA_A[1] +# 7858 : CzxIVJA_B[1] +# 1692 : DAHiWLT_A[1] +# 5693 : DAHiWLT_B[1] +# 803 : DAaLAzZ_A[1] +# 4804 : DAaLAzZ_B[1] +# 1424 : DBNVpSX_A[1] +# 5425 : DBNVpSX_B[1] +# 1350 : DBaQqjp_A[1] +# 5351 : DBaQqjp_B[1] +# 3653 : DDwzmrI_A[1] +# 7654 : DDwzmrI_B[1] +# 2982 : DEONIKT_A[0] +# 6983 : DEONIKT_B[0] +# 2591 : DFpIFtp_A[0] +# 6592 : DFpIFtp_B[0] +# 378 : DGojjWU_A[1] +# 4379 : DGojjWU_B[1] +# 2219 : DJBLUVP_A[1] +# 6220 : DJBLUVP_B[1] +# 857 : DJBcAIl_A[1] +# 4858 : DJBcAIl_B[1] +# 2511 : DJpUmGW_A[1] +# 6512 : DJpUmGW_B[1] +# 3027 : DKXufyn_A[1] +# 7028 : DKXufyn_B[1] +# 3519 : DLEKljq_A[1] +# 7520 : DLEKljq_B[1] +# 836 : DLtUEnp_A[1] +# 4837 : DLtUEnp_B[1] +# 1067 : DLxKwMA_A[0] +# 5068 : DLxKwMA_B[0] +# 1590 : DMljetu_A[1] +# 5591 : DMljetu_B[1] +# 641 : DOCxYSY_A[0] +# 4642 : DOCxYSY_B[0] +# 671 : DPrZOHU_A[0] +# 4672 : DPrZOHU_B[0] +# 3273 : DQJtQdg_A[0] +# 7274 : DQJtQdg_B[0] +# 3792 : DQhboIt_A[0] +# 7793 : DQhboIt_B[0] +# 178 : DQxxPIo_A[1] +# 4179 : DQxxPIo_B[1] +# 251 : DRFkbzC_A[0] +# 4252 : DRFkbzC_B[0] +# 446 : DRnVmnc_A[0] +# 4447 : DRnVmnc_B[0] +# 2829 : DRumDCB_A[1] +# 6830 : DRumDCB_B[1] +# 2714 : DSQrwtx_A[1] +# 6715 : DSQrwtx_B[1] +# 257 : DTMaynU_A[1] +# 4258 : DTMaynU_B[1] +# 1543 : DUFnUvb_A[0] +# 5544 : DUFnUvb_B[0] +# 3658 : DUFvduk_A[0] +# 7659 : DUFvduk_B[0] +# 1681 : DUxEviu_A[0] +# 5682 : DUxEviu_B[0] +# 1922 : DWugOxg_A[1] +# 5923 : DWugOxg_B[1] +# 432 : DWwRIIX_A[1] +# 4433 : DWwRIIX_B[1] +# 2428 : DXeSYnl_A[1] +# 6429 : DXeSYnl_B[1] +# 1408 : DYQremX_A[1] +# 5409 : DYQremX_B[1] +# 2589 : DaOEbGp_A[0] +# 6590 : DaOEbGp_B[0] +# 106 : DatTFBu_A[1] +# 4107 : DatTFBu_B[1] +# 1627 : DbarkbS_A[0] +# 5628 : DbarkbS_B[0] +# 1828 : DcWgdrL_A[1] +# 5829 : DcWgdrL_B[1] +# 3529 : DdNzGUZ_A[0] +# 7530 : DdNzGUZ_B[0] +# 229 : DfNqtQt_A[0] +# 4230 : DfNqtQt_B[0] +# 3411 : DfWNcjn_A[0] +# 7412 : DfWNcjn_B[0] +# 1329 : DgnhfZH_A[1] +# 5330 : DgnhfZH_B[1] +# 1523 : DiIZSQj_A[0] +# 5524 : DiIZSQj_B[0] +# 2139 : DkKrTSQ_A[1] +# 6140 : DkKrTSQ_B[1] +# 1856 : DlQqAFB_A[1] +# 5857 : DlQqAFB_B[1] +# 1700 : DlgilgZ_A[0] +# 5701 : DlgilgZ_B[0] +# 402 : DmEEkbE_A[0] +# 4403 : DmEEkbE_B[0] +# 1670 : DmaamAo_A[1] +# 5671 : DmaamAo_B[1] +# 3285 : DmkuPhR_A[1] +# 7286 : DmkuPhR_B[1] +# 3926 : DmxVmeX_A[1] +# 7927 : DmxVmeX_B[1] +# 1611 : DnHDKcZ_A[0] +# 5612 : DnHDKcZ_B[0] +# 2053 : DnhYMHw_A[1] +# 6054 : DnhYMHw_B[1] +# 3088 : DoLXUtZ_A[0] +# 7089 : DoLXUtZ_B[0] +# 508 : DpNHxoT_A[1] +# 4509 : DpNHxoT_B[1] +# 3907 : DpubqfE_A[1] +# 7908 : DpubqfE_B[1] +# 3184 : DqUNmgf_A[0] +# 7185 : DqUNmgf_B[0] +# 307 : DqnZLyR_A[1] +# 4308 : DqnZLyR_B[1] +# 2883 : DqpeKFz_A[1] +# 6884 : DqpeKFz_B[1] +# 840 : DrgaIOc_A[1] +# 4841 : DrgaIOc_B[1] +# 2944 : DsHYDNb_A[0] +# 6945 : DsHYDNb_B[0] +# 3897 : DuMJcou_A[0] +# 7898 : DuMJcou_B[0] +# 798 : DuaQrhJ_A[0] +# 4799 : DuaQrhJ_B[0] +# 1013 : DurjKcu_A[1] +# 5014 : DurjKcu_B[1] +# 490 : DvCLAHm_A[1] +# 4491 : DvCLAHm_B[1] +# 2286 : DvnNjbg_A[1] +# 6287 : DvnNjbg_B[1] +# 33 : DxnGgUp_A[0] +# 4034 : DxnGgUp_B[0] +# 1807 : DyNfYwS_A[0] +# 5808 : DyNfYwS_B[0] +# 2343 : DyeSuhN_A[0] +# 6344 : DyeSuhN_B[0] +# 3416 : Dysexfy_A[1] +# 7417 : Dysexfy_B[1] +# 2019 : DzmMQFQ_A[0] +# 6020 : DzmMQFQ_B[0] +# 817 : DzxfqNa_A[0] +# 4818 : DzxfqNa_B[0] +# 256 : DzyWfMw_A[1] +# 4257 : DzyWfMw_B[1] +# 2193 : EARngKz_A[1] +# 6194 : EARngKz_B[1] +# 470 : EAslhAm_A[0] +# 4471 : EAslhAm_B[0] +# 2617 : EDKPmTX_A[0] +# 6618 : EDKPmTX_B[0] +# 981 : EDrCQpC_A[1] +# 4982 : EDrCQpC_B[1] +# 3728 : EEyTevy_A[0] +# 7729 : EEyTevy_B[0] +# 962 : EFfoEfV_A[1] +# 4963 : EFfoEfV_B[1] +# 1998 : EFkohhm_A[0] +# 5999 : EFkohhm_B[0] +# 1641 : EFrsRmx_A[0] +# 5642 : EFrsRmx_B[0] +# 3076 : EGDsXOW_A[0] +# 7077 : EGDsXOW_B[0] +# 397 : EGWwnTk_A[0] +# 4398 : EGWwnTk_B[0] +# 3006 : EGkiyDu_A[0] +# 7007 : EGkiyDu_B[0] +# 3469 : EGvbcNL_A[0] +# 7470 : EGvbcNL_B[0] +# 2614 : EHIvthx_A[0] +# 6615 : EHIvthx_B[0] +# 3852 : EHNbdpo_A[1] +# 7853 : EHNbdpo_B[1] +# 1137 : EHdXZzI_A[0] +# 5138 : EHdXZzI_B[0] +# 207 : EHsYZpt_A[0] +# 4208 : EHsYZpt_B[0] +# 980 : EIEyBPA_A[0] +# 4981 : EIEyBPA_B[0] +# 1341 : EJRDtKz_A[0] +# 5342 : EJRDtKz_B[0] +# 305 : EJXWSne_A[1] +# 4306 : EJXWSne_B[1] +# 581 : EJZdYmq_A[0] +# 4582 : EJZdYmq_B[0] +# 3889 : EKLIxcd_A[0] +# 7890 : EKLIxcd_B[0] +# 3222 : ELRzWIH_A[0] +# 7223 : ELRzWIH_B[0] +# 2840 : ELdXZeH_A[1] +# 6841 : ELdXZeH_B[1] +# 2881 : ENVzsvv_A[1] +# 6882 : ENVzsvv_B[1] +# 777 : ENhWwNr_A[0] +# 4778 : ENhWwNr_B[0] +# 3970 : EOQxPkK_A[1] +# 7971 : EOQxPkK_B[1] +# 2107 : EOSoggu_A[1] +# 6108 : EOSoggu_B[1] +# 2507 : EOyQCbK_A[1] +# 6508 : EOyQCbK_B[1] +# 3075 : EQtPabC_A[1] +# 7076 : EQtPabC_B[1] +# 3606 : ERKShgx_A[1] +# 7607 : ERKShgx_B[1] +# 2560 : ERRgRdh_A[0] +# 6561 : ERRgRdh_B[0] +# 1671 : ESVHsNB_A[0] +# 5672 : ESVHsNB_B[0] +# 2221 : EScgFJS_A[1] +# 6222 : EScgFJS_B[1] +# 1036 : ESxwNfl_A[1] +# 5037 : ESxwNfl_B[1] +# 127 : ETFgBdd_A[0] +# 4128 : ETFgBdd_B[0] +# 1053 : EVGPLnj_A[1] +# 5054 : EVGPLnj_B[1] +# 328 : EVcQAKI_A[1] +# 4329 : EVcQAKI_B[1] +# 636 : EVmJSHH_A[0] +# 4637 : EVmJSHH_B[0] +# 1397 : EWUpWif_A[0] +# 5398 : EWUpWif_B[0] +# 3117 : EWdwEJR_A[0] +# 7118 : EWdwEJR_B[0] +# 162 : EXotOUr_A[1] +# 4163 : EXotOUr_B[1] +# 3709 : EYMGyOQ_A[1] +# 7710 : EYMGyOQ_B[1] +# 3247 : EYWQlGp_A[0] +# 7248 : EYWQlGp_B[0] +# 783 : EYbWjoZ_A[0] +# 4784 : EYbWjoZ_B[0] +# 2750 : EZigZUe_A[0] +# 6751 : EZigZUe_B[0] +# 1698 : EaKOiAc_A[0] +# 5699 : EaKOiAc_B[0] +# 1718 : EcqEVTm_A[0] +# 5719 : EcqEVTm_B[0] +# 1105 : EczVDbX_A[1] +# 5106 : EczVDbX_B[1] +# 939 : EdfNmdg_A[0] +# 4940 : EdfNmdg_B[0] +# 2985 : EeJDfTF_A[1] +# 6986 : EeJDfTF_B[1] +# 3168 : EfRboWq_A[1] +# 7169 : EfRboWq_B[1] +# 1597 : EfidzKl_A[1] +# 5598 : EfidzKl_B[1] +# 2814 : EgdlhGx_A[1] +# 6815 : EgdlhGx_B[1] +# 2281 : EhJVdEk_A[0] +# 6282 : EhJVdEk_B[0] +# 3678 : Ehakkyx_A[0] +# 7679 : Ehakkyx_B[0] +# 3185 : EhkFevU_A[1] +# 7186 : EhkFevU_B[1] +# 763 : EhqYHFS_A[1] +# 4764 : EhqYHFS_B[1] +# 2051 : EiANmnV_A[0] +# 6052 : EiANmnV_B[0] +# 3695 : EiEEAWV_A[1] +# 7696 : EiEEAWV_B[1] +# 833 : EiLSQus_A[1] +# 4834 : EiLSQus_B[1] +# 197 : EiMizMU_A[1] +# 4198 : EiMizMU_B[1] +# 614 : EiZFYdF_A[1] +# 4615 : EiZFYdF_B[1] +# 1363 : EjNwzSP_A[0] +# 5364 : EjNwzSP_B[0] +# 859 : EjsjSIB_A[0] +# 4860 : EjsjSIB_B[0] +# 3235 : EkahcOW_A[0] +# 7236 : EkahcOW_B[0] +# 593 : EkxLWzT_A[0] +# 4594 : EkxLWzT_B[0] +# 3257 : ElJAnUI_A[0] +# 7258 : ElJAnUI_B[0] +# 1216 : EliEyEc_A[1] +# 5217 : EliEyEc_B[1] +# 3994 : EoJTqea_A[1] +# 7995 : EoJTqea_B[1] +# 492 : EofmrTj_A[1] +# 4493 : EofmrTj_B[1] +# 3699 : EqoWFrH_A[0] +# 7700 : EqoWFrH_B[0] +# 2393 : ErVltEf_A[1] +# 6394 : ErVltEf_B[1] +# 3466 : EsjWqYS_A[0] +# 7467 : EsjWqYS_B[0] +# 2888 : EtWZuFG_A[1] +# 6889 : EtWZuFG_B[1] +# 1141 : EtXxzKi_A[1] +# 5142 : EtXxzKi_B[1] +# 2656 : EuPpseg_A[1] +# 6657 : EuPpseg_B[1] +# 3922 : EuZODGj_A[0] +# 7923 : EuZODGj_B[0] +# 3242 : EvKjjMX_A[1] +# 7243 : EvKjjMX_B[1] +# 3238 : EvdnlAj_A[1] +# 7239 : EvdnlAj_B[1] +# 3941 : EwLexAT_A[0] +# 7942 : EwLexAT_B[0] +# 2643 : EwOSGJY_A[1] +# 6644 : EwOSGJY_B[1] +# 1775 : EwXcHDX_A[1] +# 5776 : EwXcHDX_B[1] +# 84 : ExKfgRt_A[0] +# 4085 : ExKfgRt_B[0] +# 1701 : EyHwkeX_A[0] +# 5702 : EyHwkeX_B[0] +# 451 : EypFuDg_A[1] +# 4452 : EypFuDg_B[1] +# 1564 : EzNOxrW_A[0] +# 5565 : EzNOxrW_B[0] +# 1871 : FBSEgHh_A[0] +# 5872 : FBSEgHh_B[0] +# 1933 : FBhnlWC_A[0] +# 5934 : FBhnlWC_B[0] +# 1454 : FCnqMnw_A[0] +# 5455 : FCnqMnw_B[0] +# 157 : FFDmBvh_A[0] +# 4158 : FFDmBvh_B[0] +# 2751 : FGJwENo_A[1] +# 6752 : FGJwENo_B[1] +# 684 : FIpskOE_A[1] +# 4685 : FIpskOE_B[1] +# 1217 : FJVVbZR_A[1] +# 5218 : FJVVbZR_B[1] +# 905 : FKTBPro_A[1] +# 4906 : FKTBPro_B[1] +# 1843 : FKTSDxF_A[0] +# 5844 : FKTSDxF_B[0] +# 1151 : FKWtkTi_A[1] +# 5152 : FKWtkTi_B[1] +# 940 : FKhkNgw_A[0] +# 4941 : FKhkNgw_B[0] +# 414 : FKkXfpe_A[1] +# 4415 : FKkXfpe_B[1] +# 1096 : FLJkScw_A[1] +# 5097 : FLJkScw_B[1] +# 3726 : FMnikmq_A[1] +# 7727 : FMnikmq_B[1] +# 3389 : FNmmpyH_A[1] +# 7390 : FNmmpyH_B[1] +# 2152 : FOneROT_A[1] +# 6153 : FOneROT_B[1] +# 1315 : FPJefvH_A[0] +# 5316 : FPJefvH_B[0] +# 3646 : FQDymZY_A[1] +# 7647 : FQDymZY_B[1] +# 3083 : FQwxHPv_A[0] +# 7084 : FQwxHPv_B[0] +# 2272 : FSvqIcQ_A[0] +# 6273 : FSvqIcQ_B[0] +# 2070 : FTjsSHX_A[1] +# 6071 : FTjsSHX_B[1] +# 466 : FUAXCFU_A[0] +# 4467 : FUAXCFU_B[0] +# 1827 : FVCggqk_A[0] +# 5828 : FVCggqk_B[0] +# 109 : FVISReD_A[0] +# 4110 : FVISReD_B[0] +# 2767 : FWEgzLk_A[1] +# 6768 : FWEgzLk_B[1] +# 1404 : FWwXaJe_A[0] +# 5405 : FWwXaJe_B[0] +# 3946 : FWxdwdS_A[0] +# 7947 : FWxdwdS_B[0] +# 3434 : FXByktQ_A[1] +# 7435 : FXByktQ_B[1] +# 3972 : FYIrNCZ_A[1] +# 7973 : FYIrNCZ_B[1] +# 2 : FYwbLts_A[1] +# 4003 : FYwbLts_B[1] +# 1499 : FYyOewj_A[0] +# 5500 : FYyOewj_B[0] +# 1008 : FZAIzpq_A[1] +# 5009 : FZAIzpq_B[1] +# 3164 : FZoSwfD_A[0] +# 7165 : FZoSwfD_B[0] +# 788 : FZwDYvP_A[1] +# 4789 : FZwDYvP_B[1] +# 3329 : FaJztxN_A[0] +# 7330 : FaJztxN_B[0] +# 689 : FaKOREG_A[1] +# 4690 : FaKOREG_B[1] +# 3740 : FaLeIWT_A[0] +# 7741 : FaLeIWT_B[0] +# 2619 : FaSOVQz_A[0] +# 6620 : FaSOVQz_B[0] +# 676 : FaVlMeT_A[1] +# 4677 : FaVlMeT_B[1] +# 910 : FbtGMEm_A[1] +# 4911 : FbtGMEm_B[1] +# 2065 : FcBunMQ_A[0] +# 6066 : FcBunMQ_B[0] +# 762 : FcTMaIa_A[0] +# 4763 : FcTMaIa_B[0] +# 3186 : FcZIMOG_A[1] +# 7187 : FcZIMOG_B[1] +# 149 : FelNakS_A[1] +# 4150 : FelNakS_B[1] +# 60 : FepjkmA_A[1] +# 4061 : FepjkmA_B[1] +# 2525 : FfxBaDS_A[1] +# 6526 : FfxBaDS_B[1] +# 2553 : FhQRjwd_A[1] +# 6554 : FhQRjwd_B[1] +# 2054 : FiSaAho_A[1] +# 6055 : FiSaAho_B[1] +# 1049 : FkdLRqM_A[1] +# 5050 : FkdLRqM_B[1] +# 3812 : FkseAWW_A[0] +# 7813 : FkseAWW_B[0] +# 2610 : FldLpsN_A[1] +# 6611 : FldLpsN_B[1] +# 1387 : FleMOwa_A[0] +# 5388 : FleMOwa_B[0] +# 2373 : FmvKHdt_A[1] +# 6374 : FmvKHdt_B[1] +# 2594 : FnUYTWT_A[1] +# 6595 : FnUYTWT_B[1] +# 3704 : FnbKNus_A[1] +# 7705 : FnbKNus_B[1] +# 302 : FneIVni_A[0] +# 4303 : FneIVni_B[0] +# 505 : FochxCd_A[0] +# 4506 : FochxCd_B[0] +# 2081 : FouIkAa_A[1] +# 6082 : FouIkAa_B[1] +# 2372 : FsImlMb_A[0] +# 6373 : FsImlMb_B[0] +# 1806 : FstgCFT_A[0] +# 5807 : FstgCFT_B[0] +# 2133 : FtnTIHT_A[1] +# 6134 : FtnTIHT_B[1] +# 3489 : FuMbPwA_A[1] +# 7490 : FuMbPwA_B[1] +# 266 : FuMxQPJ_A[0] +# 4267 : FuMxQPJ_B[0] +# 1162 : FuMyiIZ_A[1] +# 5163 : FuMyiIZ_B[1] +# 2941 : FufNtxI_A[1] +# 6942 : FufNtxI_B[1] +# 2506 : FvDQmFF_A[0] +# 6507 : FvDQmFF_B[0] +# 104 : FviuMwX_A[0] +# 4105 : FviuMwX_B[0] +# 704 : FxSpHuF_A[0] +# 4705 : FxSpHuF_B[0] +# 2477 : FxivjcC_A[0] +# 6478 : FxivjcC_B[0] +# 3138 : FxvBpcY_A[0] +# 7139 : FxvBpcY_B[0] +# 3819 : FyZbHBx_A[0] +# 7820 : FyZbHBx_B[0] +# 960 : FzTNNrf_A[0] +# 4961 : FzTNNrf_B[0] +# 4 : GAXHFKO_A[1] +# 4005 : GAXHFKO_B[1] +# 3445 : GAuEixb_A[1] +# 7446 : GAuEixb_B[1] +# 3486 : GBDnQnm_A[0] +# 7487 : GBDnQnm_B[0] +# 1835 : GBMtSvC_A[0] +# 5836 : GBMtSvC_B[0] +# 1418 : GCZMBUs_A[0] +# 5419 : GCZMBUs_B[0] +# 329 : GCtLdeP_A[0] +# 4330 : GCtLdeP_B[0] +# 3933 : GCuEDqW_A[0] +# 7934 : GCuEDqW_B[0] +# 3108 : GEMdRbx_A[0] +# 7109 : GEMdRbx_B[0] +# 3779 : GFMMkKh_A[1] +# 7780 : GFMMkKh_B[1] +# 3039 : GFmDFaT_A[0] +# 7040 : GFmDFaT_B[0] +# 2977 : GGwQstL_A[1] +# 6978 : GGwQstL_B[1] +# 3199 : GHWqpIY_A[0] +# 7200 : GHWqpIY_B[0] +# 2517 : GHddvAv_A[0] +# 6518 : GHddvAv_B[0] +# 3443 : GHmuEpP_A[0] +# 7444 : GHmuEpP_B[0] +# 2478 : GHtOhEq_A[1] +# 6479 : GHtOhEq_B[1] +# 3662 : GIMGxbb_A[1] +# 7663 : GIMGxbb_B[1] +# 891 : GIjsBNc_A[1] +# 4892 : GIjsBNc_B[1] +# 596 : GJIoQes_A[0] +# 4597 : GJIoQes_B[0] +# 2781 : GJQxJTl_A[1] +# 6782 : GJQxJTl_B[1] +# 869 : GJqbEBP_A[1] +# 4870 : GJqbEBP_B[1] +# 3768 : GKXwshG_A[0] +# 7769 : GKXwshG_B[0] +# 557 : GKekShn_A[1] +# 4558 : GKekShn_B[1] +# 2973 : GNuXjKq_A[1] +# 6974 : GNuXjKq_B[1] +# 24 : GOcilaY_A[0] +# 4025 : GOcilaY_B[0] +# 3835 : GPWGNyM_A[0] +# 7836 : GPWGNyM_B[0] +# 2778 : GQFDxGm_A[0] +# 6779 : GQFDxGm_B[0] +# 255 : GSBlDlz_A[0] +# 4256 : GSBlDlz_B[0] +# 1909 : GSCHKqE_A[1] +# 5910 : GSCHKqE_B[1] +# 3149 : GSYYxvs_A[0] +# 7150 : GSYYxvs_B[0] +# 616 : GSiwHld_A[1] +# 4617 : GSiwHld_B[1] +# 908 : GSxOPSg_A[0] +# 4909 : GSxOPSg_B[0] +# 97 : GTAXejM_A[1] +# 4098 : GTAXejM_B[1] +# 284 : GTIJsZR_A[1] +# 4285 : GTIJsZR_B[1] +# 43 : GTgTqHi_A[0] +# 4044 : GTgTqHi_B[0] +# 3908 : GTzgsGS_A[0] +# 7909 : GTzgsGS_B[0] +# 3359 : GULUhFO_A[1] +# 7360 : GULUhFO_B[1] +# 1220 : GUzmYFt_A[1] +# 5221 : GUzmYFt_B[1] +# 919 : GVgQNHZ_A[1] +# 4920 : GVgQNHZ_B[1] +# 3187 : GVsWdlZ_A[1] +# 7188 : GVsWdlZ_B[1] +# 2609 : GWjODmr_A[0] +# 6610 : GWjODmr_B[0] +# 3284 : GWmltNn_A[0] +# 7285 : GWmltNn_B[0] +# 2334 : GXEwXoJ_A[0] +# 6335 : GXEwXoJ_B[0] +# 852 : GXLZoCj_A[1] +# 4853 : GXLZoCj_B[1] +# 3052 : GYaVcbr_A[1] +# 7053 : GYaVcbr_B[1] +# 2545 : GYhWmEF_A[1] +# 6546 : GYhWmEF_B[1] +# 2029 : GaDRWhl_A[1] +# 6030 : GaDRWhl_B[1] +# 3612 : GbHxPIX_A[0] +# 7613 : GbHxPIX_B[0] +# 3484 : GbmXfOi_A[0] +# 7485 : GbmXfOi_B[0] +# 2688 : GcXNJJy_A[1] +# 6689 : GcXNJJy_B[1] +# 1242 : GdNVRRU_A[0] +# 5243 : GdNVRRU_B[0] +# 1776 : GdXwpAe_A[0] +# 5777 : GdXwpAe_B[0] +# 3799 : GdYagnN_A[1] +# 7800 : GdYagnN_B[1] +# 3885 : GdaBoRj_A[0] +# 7886 : GdaBoRj_B[0] +# 643 : GepkTkr_A[1] +# 4644 : GepkTkr_B[1] +# 3206 : GfRGeWe_A[0] +# 7207 : GfRGeWe_B[0] +# 3181 : GhincTP_A[0] +# 7182 : GhincTP_B[0] +# 2808 : GhzAmdK_A[0] +# 6809 : GhzAmdK_B[0] +# 1097 : GjHFlVV_A[0] +# 5098 : GjHFlVV_B[0] +# 3736 : GjUPfai_A[0] +# 7737 : GjUPfai_B[0] +# 1715 : GkTIfXt_A[0] +# 5716 : GkTIfXt_B[0] +# 2526 : GkmxsTP_A[1] +# 6527 : GkmxsTP_B[1] +# 1971 : GlnbHdd_A[0] +# 5972 : GlnbHdd_B[0] +# 2333 : Glwqavy_A[0] +# 6334 : Glwqavy_B[0] +# 639 : GmCCWSc_A[1] +# 4640 : GmCCWSc_B[1] +# 2445 : GmJyKRE_A[0] +# 6446 : GmJyKRE_B[0] +# 1850 : GmRzQJj_A[0] +# 5851 : GmRzQJj_B[0] +# 244 : GmxNrWv_A[1] +# 4245 : GmxNrWv_B[1] +# 1884 : GnCGZUw_A[0] +# 5885 : GnCGZUw_B[0] +# 1300 : GnHsZDY_A[0] +# 5301 : GnHsZDY_B[0] +# 2676 : GnrWMJS_A[0] +# 6677 : GnrWMJS_B[0] +# 1721 : GpBzBcR_A[0] +# 5722 : GpBzBcR_B[0] +# 53 : GrMHRBu_A[0] +# 4054 : GrMHRBu_B[0] +# 739 : GrwdKWT_A[1] +# 4740 : GrwdKWT_B[1] +# 2605 : GsPTtRs_A[1] +# 6606 : GsPTtRs_B[1] +# 3893 : GsmKUny_A[1] +# 7894 : GsmKUny_B[1] +# 1200 : GsqHMiu_A[1] +# 5201 : GsqHMiu_B[1] +# 136 : GsxggRe_A[1] +# 4137 : GsxggRe_B[1] +# 3597 : GtrTmmb_A[0] +# 7598 : GtrTmmb_B[0] +# 3293 : GtvwqyF_A[1] +# 7294 : GtvwqyF_B[1] +# 2130 : GuNCNpK_A[0] +# 6131 : GuNCNpK_B[0] +# 384 : GuYTubV_A[1] +# 4385 : GuYTubV_B[1] +# 3654 : GxHoLcx_A[0] +# 7655 : GxHoLcx_B[0] +# 3492 : GxTyKJL_A[0] +# 7493 : GxTyKJL_B[0] +# 806 : GxcoKWo_A[1] +# 4807 : GxcoKWo_B[1] +# 1349 : GxdPvyI_A[0] +# 5350 : GxdPvyI_B[0] +# 1848 : GyMdyqP_A[0] +# 5849 : GyMdyqP_B[0] +# 3978 : GyvnQOb_A[1] +# 7979 : GyvnQOb_B[1] +# 734 : GzBeNOb_A[0] +# 4735 : GzBeNOb_B[0] +# 2391 : GzfTAQU_A[0] +# 6392 : GzfTAQU_B[0] +# 3309 : HAvSPNj_A[1] +# 7310 : HAvSPNj_B[1] +# 1505 : HBVnZaH_A[0] +# 5506 : HBVnZaH_B[0] +# 3733 : HBqeFUF_A[0] +# 7734 : HBqeFUF_B[0] +# 4001 : HCAaTzs_A[0] +# 8002 : HCAaTzs_B[0] +# 1923 : HCXIduv_A[1] +# 5924 : HCXIduv_B[1] +# 2340 : HDFSUar_A[1] +# 6341 : HDFSUar_B[1] +# 1483 : HDUcUjH_A[1] +# 5484 : HDUcUjH_B[1] +# 782 : HDeMNyt_A[1] +# 4783 : HDeMNyt_B[1] +# 948 : HEycTyq_A[0] +# 4949 : HEycTyq_B[0] +# 529 : HFEVLUQ_A[0] +# 4530 : HFEVLUQ_B[0] +# 2280 : HFrNmIN_A[1] +# 6281 : HFrNmIN_B[1] +# 2235 : HGHGuGK_A[0] +# 6236 : HGHGuGK_B[0] +# 2876 : HHBNCCl_A[1] +# 6877 : HHBNCCl_B[1] +# 973 : HIMywzj_A[1] +# 4974 : HIMywzj_B[1] +# 472 : HIbDXrX_A[0] +# 4473 : HIbDXrX_B[0] +# 925 : HJnNqOT_A[0] +# 4926 : HJnNqOT_B[0] +# 1767 : HKgXShE_A[0] +# 5768 : HKgXShE_B[0] +# 2924 : HLmrYlO_A[0] +# 6925 : HLmrYlO_B[0] +# 3721 : HLpCwUp_A[0] +# 7722 : HLpCwUp_B[0] +# 2141 : HMWNHux_A[1] +# 6142 : HMWNHux_B[1] +# 2246 : HNAFnHf_A[0] +# 6247 : HNAFnHf_B[0] +# 23 : HNfWugM_A[0] +# 4024 : HNfWugM_B[0] +# 2897 : HOAAJoK_A[0] +# 6898 : HOAAJoK_B[0] +# 1440 : HOEqqfU_A[0] +# 5441 : HOEqqfU_B[0] +# 2762 : HOJOYLJ_A[0] +# 6763 : HOJOYLJ_B[0] +# 2734 : HOYazLi_A[1] +# 6735 : HOYazLi_B[1] +# 2727 : HPyKEOq_A[1] +# 6728 : HPyKEOq_B[1] +# 1289 : HRbCEVc_A[1] +# 5290 : HRbCEVc_B[1] +# 3801 : HRiGCLS_A[0] +# 7802 : HRiGCLS_B[0] +# 3126 : HUjxopI_A[0] +# 7127 : HUjxopI_B[0] +# 2600 : HVAzcpK_A[1] +# 6601 : HVAzcpK_B[1] +# 2642 : HWPPyhb_A[0] +# 6643 : HWPPyhb_B[0] +# 1083 : HWoFwEH_A[0] +# 5084 : HWoFwEH_B[0] +# 1145 : HYTWqMI_A[0] +# 5146 : HYTWqMI_B[0] +# 2117 : HYjbRWn_A[0] +# 6118 : HYjbRWn_B[0] +# 1501 : HZcIlZV_A[0] +# 5502 : HZcIlZV_B[0] +# 183 : HaNNFKo_A[1] +# 4184 : HaNNFKo_B[1] +# 2748 : HbkDFir_A[0] +# 6749 : HbkDFir_B[0] +# 2022 : HbnNMQT_A[1] +# 6023 : HbnNMQT_B[1] +# 3384 : HdDObiX_A[0] +# 7385 : HdDObiX_B[0] +# 2775 : HduQWxN_A[1] +# 6776 : HduQWxN_B[1] +# 2096 : HfBgANb_A[0] +# 6097 : HfBgANb_B[0] +# 2773 : HfdBYRq_A[1] +# 6774 : HfdBYRq_B[1] +# 81 : HhbvDtg_A[0] +# 4082 : HhbvDtg_B[0] +# 3923 : HiGUFyX_A[0] +# 7924 : HiGUFyX_B[0] +# 2631 : HilcTLp_A[0] +# 6632 : HilcTLp_B[0] +# 3751 : HjCjUUK_A[1] +# 7752 : HjCjUUK_B[1] +# 3069 : HjDcpEM_A[1] +# 7070 : HjDcpEM_B[1] +# 1051 : HkhDUZg_A[0] +# 5052 : HkhDUZg_B[0] +# 1398 : HkzjaOa_A[1] +# 5399 : HkzjaOa_B[1] +# 2216 : HlGTPlO_A[0] +# 6217 : HlGTPlO_B[0] +# 1539 : HlSMXeV_A[0] +# 5540 : HlSMXeV_B[0] +# 2918 : HmZPgPb_A[0] +# 6919 : HmZPgPb_B[0] +# 1492 : HmkmQpA_A[1] +# 5493 : HmkmQpA_B[1] +# 1578 : HmmJDtE_A[1] +# 5579 : HmmJDtE_B[1] +# 2886 : HnmQJIy_A[0] +# 6887 : HnmQJIy_B[0] +# 3690 : HoBGTkZ_A[1] +# 7691 : HoBGTkZ_B[1] +# 2505 : HoFhhRT_A[0] +# 6506 : HoFhhRT_B[0] +# 1111 : HoHUZbC_A[1] +# 5112 : HoHUZbC_B[1] +# 2165 : HpdIyvN_A[1] +# 6166 : HpdIyvN_B[1] +# 191 : HpfZPwQ_A[0] +# 4192 : HpfZPwQ_B[0] +# 2287 : HppKjbd_A[1] +# 6288 : HppKjbd_B[1] +# 3511 : HsIhFIN_A[0] +# 7512 : HsIhFIN_B[0] +# 2253 : HsLBrVl_A[0] +# 6254 : HsLBrVl_B[0] +# 1275 : HsLKxXx_A[0] +# 5276 : HsLKxXx_B[0] +# 2365 : HsMGorb_A[0] +# 6366 : HsMGorb_B[0] +# 1317 : HsskFII_A[1] +# 5318 : HsskFII_B[1] +# 613 : HtKMzjd_A[0] +# 4614 : HtKMzjd_B[0] +# 887 : HtkxYCS_A[1] +# 4888 : HtkxYCS_B[1] +# 1875 : HuehTUP_A[1] +# 5876 : HuehTUP_B[1] +# 2243 : HwkJTsX_A[1] +# 6244 : HwkJTsX_B[1] +# 1166 : HxNYeCz_A[0] +# 5167 : HxNYeCz_B[0] +# 930 : HxTMhpA_A[1] +# 4931 : HxTMhpA_B[1] +# 3335 : HxbEJxP_A[0] +# 7336 : HxbEJxP_B[0] +# 2578 : HxjhDOb_A[1] +# 6579 : HxjhDOb_B[1] +# 1500 : HzdkknV_A[0] +# 5501 : HzdkknV_B[0] +# 1370 : IBbyhwj_A[0] +# 5371 : IBbyhwj_B[0] +# 977 : ICyGDLw_A[1] +# 4978 : ICyGDLw_B[1] +# 2909 : IDeZQfK_A[0] +# 6910 : IDeZQfK_B[0] +# 160 : IFDperb_A[0] +# 4161 : IFDperb_B[0] +# 1389 : IFPpirX_A[0] +# 5390 : IFPpirX_B[0] +# 2926 : IFWiMgm_A[0] +# 6927 : IFWiMgm_B[0] +# 3904 : IFlHNIN_A[1] +# 7905 : IFlHNIN_B[1] +# 2563 : IFtQrEo_A[1] +# 6564 : IFtQrEo_B[1] +# 2933 : IGggGYc_A[1] +# 6934 : IGggGYc_B[1] +# 2002 : IHHtUKm_A[0] +# 6003 : IHHtUKm_B[0] +# 264 : IIKnKHt_A[1] +# 4265 : IIKnKHt_B[1] +# 86 : IIRBaei_A[0] +# 4087 : IIRBaei_B[0] +# 2128 : IJFnloz_A[1] +# 6129 : IJFnloz_B[1] +# 1732 : IJIUrky_A[0] +# 5733 : IJIUrky_B[0] +# 3770 : IKccIxv_A[1] +# 7771 : IKccIxv_B[1] +# 3630 : IKuXdRd_A[0] +# 7631 : IKuXdRd_B[0] +# 1120 : ILmeQFk_A[1] +# 5121 : ILmeQFk_B[1] +# 1180 : IMuNiKg_A[0] +# 5181 : IMuNiKg_B[0] +# 165 : IMxdTha_A[1] +# 4166 : IMxdTha_B[1] +# 120 : IOHguJU_A[0] +# 4121 : IOHguJU_B[0] +# 3681 : IOnEADn_A[1] +# 7682 : IOnEADn_B[1] +# 275 : IOywike_A[1] +# 4276 : IOywike_B[1] +# 3528 : IPxCVaH_A[1] +# 7529 : IPxCVaH_B[1] +# 1986 : IPziEwS_A[0] +# 5987 : IPziEwS_B[0] +# 2447 : IQUvirM_A[0] +# 6448 : IQUvirM_B[0] +# 196 : IQZaqwE_A[0] +# 4197 : IQZaqwE_B[0] +# 3071 : IRZsMix_A[0] +# 7072 : IRZsMix_B[0] +# 3625 : ISSzWii_A[0] +# 7626 : ISSzWii_B[0] +# 11 : ISTpNZB_A[0] +# 4012 : ISTpNZB_B[0] +# 1801 : ISgFZao_A[1] +# 5802 : ISgFZao_B[1] +# 912 : ISqdmJE_A[1] +# 4913 : ISqdmJE_B[1] +# 3648 : ITlLgfQ_A[1] +# 7649 : ITlLgfQ_B[1] +# 3738 : IUSfGcm_A[1] +# 7739 : IUSfGcm_B[1] +# 1825 : IUSpmjI_A[1] +# 5826 : IUSpmjI_B[1] +# 1131 : IUtHAgF_A[0] +# 5132 : IUtHAgF_B[0] +# 1194 : IUvaAmT_A[1] +# 5195 : IUvaAmT_B[1] +# 377 : IUyzPiw_A[1] +# 4378 : IUyzPiw_B[1] +# 3246 : IXKSrdY_A[1] +# 7247 : IXKSrdY_B[1] +# 740 : IXdoLpr_A[0] +# 4741 : IXdoLpr_B[0] +# 3971 : IYhdkuK_A[1] +# 7972 : IYhdkuK_B[1] +# 133 : IZPxNrJ_A[0] +# 4134 : IZPxNrJ_B[0] +# 288 : IZYQVhN_A[1] +# 4289 : IZYQVhN_B[1] +# 138 : IZrPUHR_A[0] +# 4139 : IZrPUHR_B[0] +# 655 : IZsxagg_A[0] +# 4656 : IZsxagg_B[0] +# 381 : IZuLcAf_A[0] +# 4382 : IZuLcAf_B[0] +# 628 : IbEIPmu_A[0] +# 4629 : IbEIPmu_B[0] +# 1730 : IcfrAiQ_A[1] +# 5731 : IcfrAiQ_B[1] +# 2843 : IcmbrSZ_A[1] +# 6844 : IcmbrSZ_B[1] +# 1050 : IeOJRnA_A[0] +# 5051 : IeOJRnA_B[0] +# 2300 : IeqGtfB_A[1] +# 6301 : IeqGtfB_B[1] +# 1061 : IfcAfIM_A[0] +# 5062 : IfcAfIM_B[0] +# 1249 : IfsRonh_A[1] +# 5250 : IfsRonh_B[1] +# 2524 : IgnIIKI_A[1] +# 6525 : IgnIIKI_B[1] +# 35 : IhougRa_A[0] +# 4036 : IhougRa_B[0] +# 575 : IhseHmp_A[0] +# 4576 : IhseHmp_B[0] +# 100 : IiClAPA_A[0] +# 4101 : IiClAPA_B[0] +# 3752 : IiZhBPM_A[1] +# 7753 : IiZhBPM_B[1] +# 1420 : IikuvYh_A[0] +# 5421 : IikuvYh_B[0] +# 1503 : IilJeAM_A[1] +# 5504 : IilJeAM_B[1] +# 38 : IiuaWCN_A[0] +# 4039 : IiuaWCN_B[0] +# 2052 : IjIDCZs_A[1] +# 6053 : IjIDCZs_B[1] +# 2905 : IjbfohU_A[1] +# 6906 : IjbfohU_B[1] +# 1087 : IkBDLXb_A[1] +# 5088 : IkBDLXb_B[1] +# 899 : IkVuDSx_A[0] +# 4900 : IkVuDSx_B[0] +# 3550 : IkoLJAR_A[0] +# 7551 : IkoLJAR_B[0] +# 219 : IkxQRXJ_A[1] +# 4220 : IkxQRXJ_B[1] +# 1642 : ImUYTzD_A[1] +# 5643 : ImUYTzD_B[1] +# 3716 : ImoHPpE_A[1] +# 7717 : ImoHPpE_B[1] +# 847 : IobwEVi_A[1] +# 4848 : IobwEVi_B[1] +# 2149 : IonjgTU_A[1] +# 6150 : IonjgTU_B[1] +# 3747 : IpAUCvv_A[0] +# 7748 : IpAUCvv_B[0] +# 3305 : IpnDlDK_A[0] +# 7306 : IpnDlDK_B[0] +# 2194 : IpsEPfV_A[1] +# 6195 : IpsEPfV_B[1] +# 2317 : IqLXESg_A[0] +# 6318 : IqLXESg_B[0] +# 512 : IqpEKVv_A[1] +# 4513 : IqpEKVv_B[1] +# 520 : IsQwFVW_A[0] +# 4521 : IsQwFVW_B[0] +# 2202 : IsVTXMt_A[0] +# 6203 : IsVTXMt_B[0] +# 2362 : ItHGHtY_A[0] +# 6363 : ItHGHtY_B[0] +# 2342 : IuThPWx_A[1] +# 6343 : IuThPWx_B[1] +# 1851 : IwGLwxw_A[1] +# 5852 : IwGLwxw_B[1] +# 1143 : IyADHCh_A[0] +# 5144 : IyADHCh_B[0] +# 2157 : IyBmVTf_A[0] +# 6158 : IyBmVTf_B[0] +# 1881 : IyqiCoS_A[0] +# 5882 : IyqiCoS_B[0] +# 2956 : IzDoEyF_A[1] +# 6957 : IzDoEyF_B[1] +# 752 : IzPHIYm_A[1] +# 4753 : IzPHIYm_B[1] +# 1904 : JAeoIeW_A[0] +# 5905 : JAeoIeW_B[0] +# 1284 : JBzLtCU_A[0] +# 5285 : JBzLtCU_B[0] +# 1257 : JCFFwLH_A[0] +# 5258 : JCFFwLH_B[0] +# 657 : JChsHtC_A[0] +# 4658 : JChsHtC_B[0] +# 88 : JCxEmNs_A[0] +# 4089 : JCxEmNs_B[0] +# 3314 : JDJnbFj_A[0] +# 7315 : JDJnbFj_B[0] +# 394 : JDoOCjf_A[1] +# 4395 : JDoOCjf_B[1] +# 3031 : JEeUYMJ_A[0] +# 7032 : JEeUYMJ_B[0] +# 1348 : JGSTJTy_A[0] +# 5349 : JGSTJTy_B[0] +# 1232 : JHWByox_A[0] +# 5233 : JHWByox_B[0] +# 2050 : JIzRGcZ_A[1] +# 6051 : JIzRGcZ_B[1] +# 2320 : JJJytgL_A[0] +# 6321 : JJJytgL_B[0] +# 1980 : JKBxGlI_A[1] +# 5981 : JKBxGlI_B[1] +# 3233 : JLFUjXK_A[0] +# 7234 : JLFUjXK_B[0] +# 6 : JLfKWLv_A[1] +# 4007 : JLfKWLv_B[1] +# 650 : JMEJspD_A[0] +# 4651 : JMEJspD_B[0] +# 3201 : JMUExAj_A[1] +# 7202 : JMUExAj_B[1] +# 2597 : JMbvfIM_A[0] +# 6598 : JMbvfIM_B[0] +# 2266 : JNIBmmM_A[1] +# 6267 : JNIBmmM_B[1] +# 1568 : JOgIyyP_A[0] +# 5569 : JOgIyyP_B[0] +# 2873 : JPRyGHd_A[1] +# 6874 : JPRyGHd_B[1] +# 1467 : JQZEnMp_A[1] +# 5468 : JQZEnMp_B[1] +# 3351 : JQvxPVE_A[0] +# 7352 : JQvxPVE_B[0] +# 1239 : JQwhFKT_A[1] +# 5240 : JQwhFKT_B[1] +# 2528 : JSqKlVt_A[1] +# 6529 : JSqKlVt_B[1] +# 9 : JSvJmEj_A[1] +# 4010 : JSvJmEj_B[1] +# 2865 : JTLcqwY_A[0] +# 6866 : JTLcqwY_B[0] +# 3559 : JTaLSgP_A[1] +# 7560 : JTaLSgP_B[1] +# 3536 : JUFPoBz_A[0] +# 7537 : JUFPoBz_B[0] +# 3388 : JUYIGpK_A[1] +# 7389 : JUYIGpK_B[1] +# 2607 : JYkbsVe_A[1] +# 6608 : JYkbsVe_B[1] +# 3147 : JZQnsTS_A[1] +# 7148 : JZQnsTS_B[1] +# 1557 : JZVUNjr_A[1] +# 5558 : JZVUNjr_B[1] +# 218 : JbHVBDc_A[0] +# 4219 : JbHVBDc_B[0] +# 1594 : JbKzpSs_A[0] +# 5595 : JbKzpSs_B[0] +# 3657 : JbVoCrw_A[0] +# 7658 : JbVoCrw_B[0] +# 2187 : JbmvFdP_A[1] +# 6188 : JbmvFdP_B[1] +# 2744 : JcfbhVn_A[1] +# 6745 : JcfbhVn_B[1] +# 372 : JdBmtqB_A[0] +# 4373 : JdBmtqB_B[0] +# 142 : JdMBDPO_A[0] +# 4143 : JdMBDPO_B[0] +# 774 : JdYOZjK_A[1] +# 4775 : JdYOZjK_B[1] +# 1417 : JddqknU_A[0] +# 5418 : JddqknU_B[0] +# 2433 : JeRPpKQ_A[1] +# 6434 : JeRPpKQ_B[1] +# 818 : JeeAsOC_A[0] +# 4819 : JeeAsOC_B[0] +# 634 : JepJYji_A[0] +# 4635 : JepJYji_B[0] +# 2155 : JfoWvgh_A[0] +# 6156 : JfoWvgh_B[0] +# 3617 : JftCyyS_A[1] +# 7618 : JftCyyS_B[1] +# 1055 : JgHkVdR_A[0] +# 5056 : JgHkVdR_B[0] +# 3182 : JgSkTDu_A[1] +# 7183 : JgSkTDu_B[1] +# 3962 : JggkkCW_A[1] +# 7963 : JggkkCW_B[1] +# 31 : JgsgwHS_A[0] +# 4032 : JgsgwHS_B[0] +# 1012 : JicTqnk_A[0] +# 5013 : JicTqnk_B[0] +# 2960 : JizgpTy_A[1] +# 6961 : JizgpTy_B[1] +# 791 : JjRbznL_A[1] +# 4792 : JjRbznL_B[1] +# 2283 : JjusPeu_A[1] +# 6284 : JjusPeu_B[1] +# 341 : JkHDBVs_A[0] +# 4342 : JkHDBVs_B[0] +# 349 : JkzsDIH_A[0] +# 4350 : JkzsDIH_B[0] +# 3762 : JmWJAQv_A[1] +# 7763 : JmWJAQv_B[1] +# 3009 : JnSxpgS_A[1] +# 7010 : JnSxpgS_B[1] +# 861 : JnbkBpa_A[0] +# 4862 : JnbkBpa_B[0] +# 41 : JncqXUl_A[1] +# 4042 : JncqXUl_B[1] +# 3930 : JoGglzX_A[1] +# 7931 : JoGglzX_B[1] +# 3526 : JplrgRc_A[0] +# 7527 : JplrgRc_B[0] +# 3753 : JqAQGOi_A[1] +# 7754 : JqAQGOi_B[1] +# 804 : JraDUvD_A[1] +# 4805 : JraDUvD_B[1] +# 2550 : JteatUU_A[1] +# 6551 : JteatUU_B[1] +# 2487 : JuKUibL_A[1] +# 6488 : JuKUibL_B[1] +# 543 : JupnqFO_A[1] +# 4544 : JupnqFO_B[1] +# 2997 : JwSAVQD_A[0] +# 6998 : JwSAVQD_B[0] +# 868 : JxDcaRQ_A[0] +# 4869 : JxDcaRQ_B[0] +# 2214 : JyCZWrC_A[0] +# 6215 : JyCZWrC_B[0] +# 2684 : JyFYTRe_A[0] +# 6685 : JyFYTRe_B[0] +# 2304 : JyvSLSh_A[0] +# 6305 : JyvSLSh_B[0] +# 3950 : JyxjxhS_A[1] +# 7951 : JyxjxhS_B[1] +# 3838 : JzGvVAt_A[0] +# 7839 : JzGvVAt_B[0] +# 310 : JzNrOeJ_A[0] +# 4311 : JzNrOeJ_B[0] +# 605 : JzZQUav_A[0] +# 4606 : JzZQUav_B[0] +# 2839 : JzfOJGm_A[1] +# 6840 : JzfOJGm_B[1] +# 997 : JzmgYiE_A[0] +# 4998 : JzmgYiE_B[0] +# 1346 : KATKeXA_A[1] +# 5347 : KATKeXA_B[1] +# 2143 : KBLnmdc_A[1] +# 6144 : KBLnmdc_B[1] +# 3144 : KBXoccV_A[0] +# 7145 : KBXoccV_B[0] +# 2414 : KBixaqs_A[1] +# 6415 : KBixaqs_B[1] +# 3900 : KDLLnfQ_A[1] +# 7901 : KDLLnfQ_B[1] +# 886 : KDfDhea_A[1] +# 4887 : KDfDhea_B[1] +# 3627 : KFxSYyG_A[0] +# 7628 : KFxSYyG_B[0] +# 3338 : KFxVtPq_A[0] +# 7339 : KFxVtPq_B[0] +# 2415 : KGCiVku_A[0] +# 6416 : KGCiVku_B[0] +# 2310 : KGcvPvn_A[1] +# 6311 : KGcvPvn_B[1] +# 1372 : KJFuUUy_A[1] +# 5373 : KJFuUUy_B[1] +# 1340 : KJTZbTR_A[1] +# 5341 : KJTZbTR_B[1] +# 234 : KJwqfAy_A[1] +# 4235 : KJwqfAy_B[1] +# 1885 : KJzAIgn_A[0] +# 5886 : KJzAIgn_B[0] +# 3344 : KKYCJlB_A[0] +# 7345 : KKYCJlB_B[0] +# 253 : KKsCswj_A[0] +# 4254 : KKsCswj_B[0] +# 2799 : KLVmuue_A[1] +# 6800 : KLVmuue_B[1] +# 2904 : KLmRMqg_A[1] +# 6905 : KLmRMqg_B[1] +# 1751 : KMSrslC_A[1] +# 5752 : KMSrslC_B[1] +# 2276 : KNzNncY_A[0] +# 6277 : KNzNncY_B[0] +# 2005 : KOUTsSD_A[1] +# 6006 : KOUTsSD_B[1] +# 1095 : KOdeZtm_A[1] +# 5096 : KOdeZtm_B[1] +# 3688 : KPmJMaP_A[1] +# 7689 : KPmJMaP_B[1] +# 2547 : KQcdSky_A[0] +# 6548 : KQcdSky_B[0] +# 339 : KRVVEWX_A[0] +# 4340 : KRVVEWX_B[0] +# 832 : KSIIzJO_A[1] +# 4833 : KSIIzJO_B[1] +# 2395 : KSqoqyK_A[0] +# 6396 : KSqoqyK_B[0] +# 1970 : KTXlDGu_A[0] +# 5971 : KTXlDGu_B[0] +# 566 : KTjcPSA_A[0] +# 4567 : KTjcPSA_B[0] +# 658 : KTjtXxU_A[1] +# 4659 : KTjtXxU_B[1] +# 1655 : KUDuYum_A[0] +# 5656 : KUDuYum_B[0] +# 2146 : KUHroez_A[0] +# 6147 : KUHroez_B[0] +# 346 : KULOuOV_A[1] +# 4347 : KULOuOV_B[1] +# 2969 : KVIukSV_A[0] +# 6970 : KVIukSV_B[0] +# 1809 : KVQmSUn_A[1] +# 5810 : KVQmSUn_B[1] +# 1018 : KVsiJzK_A[1] +# 5019 : KVsiJzK_B[1] +# 2844 : KXoyucv_A[0] +# 6845 : KXoyucv_B[0] +# 3633 : KZZvUcX_A[1] +# 7634 : KZZvUcX_B[1] +# 822 : KZllalk_A[1] +# 4823 : KZllalk_B[1] +# 281 : KaGMMEK_A[0] +# 4282 : KaGMMEK_B[0] +# 3091 : KbsERVw_A[1] +# 7092 : KbsERVw_B[1] +# 2759 : KcHJPpi_A[0] +# 6760 : KcHJPpi_B[0] +# 1855 : KdJPrEs_A[1] +# 5856 : KdJPrEs_B[1] +# 3569 : KdLnoXO_A[0] +# 7570 : KdLnoXO_B[0] +# 3358 : KeHasbf_A[0] +# 7359 : KeHasbf_B[0] +# 1380 : KeQNaMJ_A[1] +# 5381 : KeQNaMJ_B[1] +# 2397 : KepTjKb_A[0] +# 6398 : KepTjKb_B[0] +# 1973 : KezXQzm_A[0] +# 5974 : KezXQzm_B[0] +# 993 : KfCjtwU_A[0] +# 4994 : KfCjtwU_B[0] +# 3096 : KfYryYV_A[0] +# 7097 : KfYryYV_B[0] +# 3537 : KgDwUxo_A[1] +# 7538 : KgDwUxo_B[1] +# 3769 : KggWpzu_A[0] +# 7770 : KggWpzu_B[0] +# 1831 : KgpKNeb_A[0] +# 5832 : KgpKNeb_B[0] +# 923 : KhoQvBC_A[0] +# 4924 : KhoQvBC_B[0] +# 2352 : KigXbdm_A[1] +# 6353 : KigXbdm_B[1] +# 600 : KjEaNcF_A[1] +# 4601 : KjEaNcF_B[1] +# 2098 : KjIrJCw_A[0] +# 6099 : KjIrJCw_B[0] +# 2838 : KjzRsKM_A[0] +# 6839 : KjzRsKM_B[0] +# 3479 : KkJhfaB_A[1] +# 7480 : KkJhfaB_B[1] +# 2666 : KkOaqLp_A[0] +# 6667 : KkOaqLp_B[0] +# 3821 : Kklpsej_A[0] +# 7822 : Kklpsej_B[0] +# 1365 : KkvsYEI_A[1] +# 5366 : KkvsYEI_B[1] +# 3871 : KmgUtxt_A[0] +# 7872 : KmgUtxt_B[0] +# 3122 : Kovybwa_A[0] +# 7123 : Kovybwa_B[0] +# 2651 : KrLfrnx_A[1] +# 6652 : KrLfrnx_B[1] +# 2012 : KrbuZYL_A[1] +# 6013 : KrbuZYL_B[1] +# 667 : KtMKKWU_A[1] +# 4668 : KtMKKWU_B[1] +# 2429 : KtRsaHc_A[1] +# 6430 : KtRsaHc_B[1] +# 758 : KtgViuS_A[0] +# 4759 : KtgViuS_B[0] +# 1695 : KtkPWpv_A[0] +# 5696 : KtkPWpv_B[0] +# 1605 : KvLySBu_A[1] +# 5606 : KvLySBu_B[1] +# 979 : KvVHVqx_A[1] +# 4980 : KvVHVqx_B[1] +# 3782 : KvXRISd_A[1] +# 7783 : KvXRISd_B[1] +# 678 : KyqqcoC_A[0] +# 4679 : KyqqcoC_B[0] +# 3109 : KywsRKI_A[0] +# 7110 : KywsRKI_B[0] +# 2947 : KzHvhrr_A[1] +# 6948 : KzHvhrr_B[1] +# 2056 : KzKCoBq_A[0] +# 6057 : KzKCoBq_B[0] +# 1559 : LBYmfFU_A[1] +# 5560 : LBYmfFU_B[1] +# 1982 : LBwkgJv_A[1] +# 5983 : LBwkgJv_B[1] +# 1662 : LCFUjGe_A[0] +# 5663 : LCFUjGe_B[0] +# 3202 : LCvjvfR_A[1] +# 7203 : LCvjvfR_B[1] +# 1480 : LCwzuQd_A[1] +# 5481 : LCwzuQd_B[1] +# 595 : LDCOass_A[1] +# 4596 : LDCOass_B[1] +# 1320 : LEqYhBP_A[1] +# 5321 : LEqYhBP_B[1] +# 3811 : LFCxjOD_A[0] +# 7812 : LFCxjOD_B[0] +# 2328 : LHzNHwT_A[0] +# 6329 : LHzNHwT_B[0] +# 89 : LJhJhvY_A[1] +# 4090 : LJhJhvY_B[1] +# 713 : LJwxcBV_A[0] +# 4714 : LJwxcBV_B[0] +# 1085 : LKXWrUQ_A[0] +# 5086 : LKXWrUQ_B[0] +# 3638 : LLVjKkD_A[0] +# 7639 : LLVjKkD_B[0] +# 3845 : LLlSeMd_A[0] +# 7846 : LLlSeMd_B[0] +# 3696 : LMWmuWI_A[0] +# 7697 : LMWmuWI_B[0] +# 2637 : LNOHxIQ_A[0] +# 6638 : LNOHxIQ_B[0] +# 2868 : LOLqasn_A[0] +# 6869 : LOLqasn_B[0] +# 317 : LPexngi_A[0] +# 4318 : LPexngi_B[0] +# 1534 : LQAwepj_A[0] +# 5535 : LQAwepj_B[0] +# 578 : LQfBaMw_A[0] +# 4579 : LQfBaMw_B[0] +# 347 : LQoiJPk_A[1] +# 4348 : LQoiJPk_B[1] +# 1635 : LRPwsjc_A[0] +# 5636 : LRPwsjc_B[0] +# 123 : LTeMZVK_A[0] +# 4124 : LTeMZVK_B[0] +# 1714 : LVWlaCk_A[0] +# 5715 : LVWlaCk_B[0] +# 1251 : LViyHHF_A[1] +# 5252 : LViyHHF_B[1] +# 610 : LVsBYQd_A[1] +# 4611 : LVsBYQd_B[1] +# 623 : LWBinYC_A[1] +# 4624 : LWBinYC_B[1] +# 2024 : LWcMsiG_A[1] +# 6025 : LWcMsiG_B[1] +# 1258 : LXANhUk_A[1] +# 5259 : LXANhUk_B[1] +# 665 : LXndfXb_A[0] +# 4666 : LXndfXb_B[0] +# 2112 : LYPMOWP_A[1] +# 6113 : LYPMOWP_B[1] +# 3939 : LYUZWMI_A[0] +# 7940 : LYUZWMI_B[0] +# 651 : LYZXGWU_A[1] +# 4652 : LYZXGWU_B[1] +# 1944 : LYjMGNs_A[0] +# 5945 : LYjMGNs_B[0] +# 3598 : LYpEZsZ_A[0] +# 7599 : LYpEZsZ_B[0] +# 1741 : LZohdCT_A[0] +# 5742 : LZohdCT_B[0] +# 862 : LZrmuAc_A[1] +# 4863 : LZrmuAc_B[1] +# 3928 : LZsnWsF_A[1] +# 7929 : LZsnWsF_B[1] +# 1407 : LaDQshK_A[0] +# 5408 : LaDQshK_B[0] +# 1764 : LajWNku_A[1] +# 5765 : LajWNku_B[1] +# 1784 : LanysVx_A[1] +# 5785 : LanysVx_B[1] +# 3706 : LaphmVb_A[1] +# 7707 : LaphmVb_B[1] +# 3034 : LavwgqY_A[1] +# 7035 : LavwgqY_B[1] +# 888 : LcDSrkR_A[1] +# 4889 : LcDSrkR_B[1] +# 1160 : LdHhvat_A[0] +# 5161 : LdHhvat_B[0] +# 2728 : LfqoRwr_A[1] +# 6729 : LfqoRwr_B[1] +# 1814 : LgPrlRN_A[0] +# 5815 : LgPrlRN_B[0] +# 1354 : LgRJiNh_A[1] +# 5355 : LgRJiNh_B[1] +# 3160 : LgwmPpk_A[0] +# 7161 : LgwmPpk_B[0] +# 3867 : LhMxkGX_A[1] +# 7868 : LhMxkGX_B[1] +# 1707 : LhTndUb_A[0] +# 5708 : LhTndUb_B[0] +# 1412 : LhhvZZz_A[1] +# 5413 : LhhvZZz_B[1] +# 1947 : LhqCDwc_A[1] +# 5948 : LhqCDwc_B[1] +# 1770 : LjeIzBL_A[0] +# 5771 : LjeIzBL_B[0] +# 802 : Ljtoddn_A[1] +# 4803 : Ljtoddn_B[1] +# 1386 : LkEiYAs_A[0] +# 5387 : LkEiYAs_B[0] +# 3967 : LkYpKMR_A[0] +# 7968 : LkYpKMR_B[0] +# 1785 : LkjPzIt_A[0] +# 5786 : LkjPzIt_B[0] +# 561 : LlsbMbA_A[0] +# 4562 : LlsbMbA_B[0] +# 3776 : LmAyXyW_A[0] +# 7777 : LmAyXyW_B[0] +# 456 : LmUyZZy_A[0] +# 4457 : LmUyZZy_B[0] +# 2611 : LmwmwUU_A[1] +# 6612 : LmwmwUU_B[1] +# 2150 : LnDOcrY_A[0] +# 6151 : LnDOcrY_B[0] +# 1458 : LnfpHeO_A[1] +# 5459 : LnfpHeO_B[1] +# 1481 : LoUgmKG_A[1] +# 5482 : LoUgmKG_B[1] +# 2408 : LomDcef_A[1] +# 6409 : LomDcef_B[1] +# 3137 : LopnTGy_A[0] +# 7138 : LopnTGy_B[0] +# 1119 : LpWHUOy_A[1] +# 5120 : LpWHUOy_B[1] +# 1195 : LpaMUVF_A[0] +# 5196 : LpaMUVF_B[0] +# 1170 : LpaMelW_A[1] +# 5171 : LpaMelW_B[1] +# 1285 : LprRgcC_A[0] +# 5286 : LprRgcC_B[0] +# 1902 : LqUwxTv_A[0] +# 5903 : LqUwxTv_B[0] +# 2222 : LqkBxVu_A[1] +# 6223 : LqkBxVu_B[1] +# 3982 : LqmYMpH_A[1] +# 7983 : LqmYMpH_B[1] +# 3679 : LrYcDwC_A[0] +# 7680 : LrYcDwC_B[0] +# 2296 : LtnUXLW_A[1] +# 6297 : LtnUXLW_B[1] +# 1600 : LtxKgAl_A[1] +# 5601 : LtxKgAl_B[1] +# 2258 : LtyqzUV_A[1] +# 6259 : LtyqzUV_B[1] +# 1010 : LuNCjjX_A[1] +# 5011 : LuNCjjX_B[1] +# 3610 : LuQYAyg_A[0] +# 7611 : LuQYAyg_B[0] +# 3136 : LvPeyhI_A[1] +# 7137 : LvPeyhI_B[1] +# 528 : LvVDctn_A[1] +# 4529 : LvVDctn_B[1] +# 3085 : LwtgNTk_A[0] +# 7086 : LwtgNTk_B[0] +# 175 : LxDHaUV_A[1] +# 4176 : LxDHaUV_B[1] +# 3066 : LxNdZTk_A[1] +# 7067 : LxNdZTk_B[1] +# 718 : LxYDMKE_A[1] +# 4719 : LxYDMKE_B[1] +# 3258 : LxwOxgC_A[0] +# 7259 : LxwOxgC_B[0] +# 2170 : LyZOSnF_A[0] +# 6171 : LyZOSnF_B[0] +# 1452 : LyaZXkm_A[1] +# 5453 : LyaZXkm_B[1] +# 866 : LypqiGo_A[1] +# 4867 : LypqiGo_B[1] +# 697 : LzJAYfu_A[0] +# 4698 : LzJAYfu_B[0] +# 971 : LzpJAmd_A[0] +# 4972 : LzpJAmd_B[0] +# 3624 : MAxUdAc_A[1] +# 7625 : MAxUdAc_B[1] +# 770 : MBLeVDl_A[0] +# 4771 : MBLeVDl_B[0] +# 2315 : MBYyprD_A[0] +# 6316 : MBYyprD_B[0] +# 1529 : MBbjnZx_A[1] +# 5530 : MBbjnZx_B[1] +# 1544 : MCBSekf_A[0] +# 5545 : MCBSekf_B[0] +# 540 : MCBTEZn_A[0] +# 4541 : MCBTEZn_B[0] +# 1946 : MCwGxQp_A[0] +# 5947 : MCwGxQp_B[0] +# 2570 : MDMFyHV_A[0] +# 6571 : MDMFyHV_B[0] +# 2023 : MDVMrxF_A[0] +# 6024 : MDVMrxF_B[0] +# 2901 : MEyROuA_A[1] +# 6902 : MEyROuA_B[1] +# 504 : MFKxnyQ_A[1] +# 4505 : MFKxnyQ_B[1] +# 1803 : MFnBFxD_A[0] +# 5804 : MFnBFxD_B[0] +# 1310 : MFnmFsO_A[1] +# 5311 : MFnmFsO_B[1] +# 3288 : MFyGUqh_A[1] +# 7289 : MFyGUqh_B[1] +# 355 : MGCATzu_A[1] +# 4356 : MGCATzu_B[1] +# 2845 : MGVfJWt_A[1] +# 6846 : MGVfJWt_B[1] +# 2943 : MGptbnK_A[0] +# 6944 : MGptbnK_B[0] +# 2381 : MHGjqJT_A[0] +# 6382 : MHGjqJT_B[0] +# 2962 : MHNBBJo_A[0] +# 6963 : MHNBBJo_B[0] +# 3710 : MIEotuz_A[1] +# 7711 : MIEotuz_B[1] +# 1591 : MIIxEnI_A[1] +# 5592 : MIIxEnI_B[1] +# 1763 : MKLixZz_A[0] +# 5764 : MKLixZz_B[0] +# 1931 : MKSmKDG_A[0] +# 5932 : MKSmKDG_B[0] +# 3956 : MKhbYeC_A[1] +# 7957 : MKhbYeC_B[1] +# 2412 : MKoKrfw_A[1] +# 6413 : MKoKrfw_B[1] +# 2087 : MKsQWSS_A[0] +# 6088 : MKsQWSS_B[0] +# 442 : MMvyNQC_A[0] +# 4443 : MMvyNQC_B[0] +# 2260 : MNdgIfn_A[1] +# 6261 : MNdgIfn_B[1] +# 212 : MOIxvyP_A[0] +# 4213 : MOIxvyP_B[0] +# 2169 : MSQlEsA_A[0] +# 6170 : MSQlEsA_B[0] +# 1485 : MTLVOFQ_A[0] +# 5486 : MTLVOFQ_B[0] +# 3872 : MTkVzGc_A[0] +# 7873 : MTkVzGc_B[0] +# 3410 : MUJvzme_A[0] +# 7411 : MUJvzme_B[0] +# 1961 : MUbfYVK_A[1] +# 5962 : MUbfYVK_B[1] +# 3296 : MVNISTV_A[1] +# 7297 : MVNISTV_B[1] +# 3380 : MWiokjs_A[0] +# 7381 : MWiokjs_B[0] +# 2965 : MYMquTm_A[0] +# 6966 : MYMquTm_B[0] +# 3042 : MZPuRfz_A[0] +# 7043 : MZPuRfz_B[0] +# 2446 : MZZoYQd_A[0] +# 6447 : MZZoYQd_B[0] +# 1941 : MZaUtyz_A[0] +# 5942 : MZaUtyz_B[0] +# 1742 : MZgCPoQ_A[1] +# 5743 : MZgCPoQ_B[1] +# 880 : MZyDnVj_A[0] +# 4881 : MZyDnVj_B[0] +# 555 : MaXxAYt_A[0] +# 4556 : MaXxAYt_B[0] +# 1415 : MabaECP_A[0] +# 5416 : MabaECP_B[0] +# 811 : Mafepgx_A[1] +# 4812 : Mafepgx_B[1] +# 2126 : MbfGRdV_A[0] +# 6127 : MbfGRdV_B[0] +# 3408 : McOyFYK_A[1] +# 7409 : McOyFYK_B[1] +# 723 : McaqHbN_A[1] +# 4724 : McaqHbN_B[1] +# 1852 : MctbzXp_A[0] +# 5853 : MctbzXp_B[0] +# 8 : MdGViNK_A[0] +# 4009 : MdGViNK_B[0] +# 312 : MeLCCbj_A[1] +# 4313 : MeLCCbj_B[1] +# 2521 : MfiTITI_A[0] +# 6522 : MfiTITI_B[0] +# 2562 : MfmZNED_A[1] +# 6563 : MfmZNED_B[1] +# 1518 : Mfuiepb_A[0] +# 5519 : Mfuiepb_B[0] +# 3396 : MgnENzu_A[1] +# 7397 : MgnENzu_B[1] +# 2337 : MgowVpE_A[1] +# 6338 : MgowVpE_B[1] +# 3935 : MjSzPVV_A[1] +# 7936 : MjSzPVV_B[1] +# 2603 : MjlYnhk_A[0] +# 6604 : MjlYnhk_B[0] +# 968 : MkwobrA_A[1] +# 4969 : MkwobrA_B[1] +# 3200 : MlEDDBk_A[1] +# 7201 : MlEDDBk_B[1] +# 481 : MlLToKR_A[0] +# 4482 : MlLToKR_B[0] +# 3808 : MnnMynK_A[1] +# 7809 : MnnMynK_B[1] +# 2120 : MoZMIop_A[1] +# 6121 : MoZMIop_B[1] +# 146 : MossVbB_A[1] +# 4147 : MossVbB_B[1] +# 287 : MpmYpyC_A[1] +# 4288 : MpmYpyC_B[1] +# 1821 : MppPjrG_A[1] +# 5822 : MppPjrG_B[1] +# 3331 : MqITKaP_A[0] +# 7332 : MqITKaP_B[0] +# 3787 : MtOXOVF_A[0] +# 7788 : MtOXOVF_B[0] +# 1734 : MuRvDIj_A[1] +# 5735 : MuRvDIj_B[1] +# 262 : MuYhOGN_A[0] +# 4263 : MuYhOGN_B[0] +# 686 : MvTNSSK_A[0] +# 4687 : MvTNSSK_B[0] +# 3012 : MwIfOOk_A[0] +# 7013 : MwIfOOk_B[0] +# 1438 : MxCIxEW_A[1] +# 5439 : MxCIxEW_B[1] +# 542 : MxLBJFd_A[0] +# 4543 : MxLBJFd_B[0] +# 2632 : MzNHWtE_A[1] +# 6633 : MzNHWtE_B[1] +# 3151 : NAmMRvR_A[0] +# 7152 : NAmMRvR_B[0] +# 2209 : NArCdAL_A[1] +# 6210 : NArCdAL_B[1] +# 3713 : NBcGnLd_A[1] +# 7714 : NBcGnLd_B[1] +# 1357 : NBqjuRp_A[0] +# 5358 : NBqjuRp_B[0] +# 71 : NBrsyfm_A[0] +# 4072 : NBrsyfm_B[0] +# 494 : NCfjIRN_A[0] +# 4495 : NCfjIRN_B[0] +# 1574 : NDYUNWy_A[1] +# 5575 : NDYUNWy_B[1] +# 591 : NFKvfEn_A[0] +# 4592 : NFKvfEn_B[0] +# 3207 : NFYSpcl_A[1] +# 7208 : NFYSpcl_B[1] +# 2208 : NGOAGpJ_A[0] +# 6209 : NGOAGpJ_B[0] +# 3518 : NHUWpys_A[0] +# 7519 : NHUWpys_B[0] +# 2284 : NIRHfig_A[1] +# 6285 : NIRHfig_B[1] +# 938 : NImnIYM_A[1] +# 4939 : NImnIYM_B[1] +# 3951 : NItswkV_A[0] +# 7952 : NItswkV_B[0] +# 3816 : NJrJiRT_A[1] +# 7817 : NJrJiRT_B[1] +# 1759 : NKDFZrG_A[1] +# 5760 : NKDFZrG_B[1] +# 3254 : NKeSxwM_A[1] +# 7255 : NKeSxwM_B[1] +# 2178 : NLYrfEQ_A[1] +# 6179 : NLYrfEQ_B[1] +# 1647 : NLtgZgo_A[1] +# 5648 : NLtgZgo_B[1] +# 1690 : NMieQCn_A[0] +# 5691 : NMieQCn_B[0] +# 1213 : NMsBfAO_A[0] +# 5214 : NMsBfAO_B[0] +# 54 : NNPbSIX_A[0] +# 4055 : NNPbSIX_B[0] +# 1656 : NNyLVey_A[0] +# 5657 : NNyLVey_B[0] +# 1164 : NOlqMZm_A[1] +# 5165 : NOlqMZm_B[1] +# 1744 : NPIrVxx_A[1] +# 5745 : NPIrVxx_B[1] +# 2388 : NPspkYj_A[1] +# 6389 : NPspkYj_B[1] +# 1619 : NPzPXZo_A[1] +# 5620 : NPzPXZo_B[1] +# 3748 : NQBjFUd_A[1] +# 7749 : NQBjFUd_B[1] +# 2464 : NQEfcnE_A[0] +# 6465 : NQEfcnE_B[0] +# 2957 : NSbxBvb_A[1] +# 6958 : NSbxBvb_B[1] +# 362 : NSuoikY_A[0] +# 4363 : NSuoikY_B[0] +# 3815 : NTFZRnC_A[0] +# 7816 : NTFZRnC_B[0] +# 3412 : NTpbHlt_A[0] +# 7413 : NTpbHlt_B[0] +# 3764 : NTyZlRg_A[1] +# 7765 : NTyZlRg_B[1] +# 1691 : NUHwVbk_A[0] +# 5692 : NUHwVbk_B[0] +# 3649 : NUNtMBm_A[1] +# 7650 : NUNtMBm_B[1] +# 3538 : NUjDCoz_A[0] +# 7539 : NUjDCoz_B[0] +# 2467 : NVrPAUf_A[1] +# 6468 : NVrPAUf_B[1] +# 2236 : NWIKxPG_A[0] +# 6237 : NWIKxPG_B[0] +# 2732 : NWlxDYi_A[1] +# 6733 : NWlxDYi_B[1] +# 1443 : NWqGTgc_A[1] +# 5444 : NWqGTgc_B[1] +# 1091 : NXOFYYe_A[1] +# 5092 : NXOFYYe_B[1] +# 649 : NZjXxWq_A[0] +# 4650 : NZjXxWq_B[0] +# 1135 : NaUQrLx_A[1] +# 5136 : NaUQrLx_B[1] +# 3643 : NbJXBEe_A[1] +# 7644 : NbJXBEe_B[1] +# 2644 : NcAiUsQ_A[1] +# 6645 : NcAiUsQ_B[1] +# 395 : NcpJjcJ_A[1] +# 4396 : NcpJjcJ_B[1] +# 702 : NdJxGxo_A[1] +# 4703 : NdJxGxo_B[1] +# 1192 : NdkhgSI_A[1] +# 5193 : NdkhgSI_B[1] +# 3771 : NfTTVOf_A[0] +# 7772 : NfTTVOf_B[0] +# 1471 : NgGQvyH_A[0] +# 5472 : NgGQvyH_B[0] +# 3509 : NiTWGGw_A[1] +# 7510 : NiTWGGw_B[1] +# 3942 : NioNmni_A[1] +# 7943 : NioNmni_B[1] +# 3313 : NkrhFrj_A[0] +# 7314 : NkrhFrj_B[0] +# 1874 : NmyotUl_A[1] +# 5875 : NmyotUl_B[1] +# 46 : NnGbzMm_A[0] +# 4047 : NnGbzMm_B[0] +# 3367 : NnhJEAk_A[1] +# 7368 : NnhJEAk_B[1] +# 3809 : NoWleiV_A[1] +# 7810 : NoWleiV_B[1] +# 129 : NppBmmJ_A[1] +# 4130 : NppBmmJ_B[1] +# 3308 : NpzvXWh_A[1] +# 7309 : NpzvXWh_B[1] +# 3837 : NqGIWOE_A[0] +# 7838 : NqGIWOE_B[0] +# 1047 : NqKZMcN_A[0] +# 5048 : NqKZMcN_B[0] +# 2211 : NrAJIkT_A[0] +# 6212 : NrAJIkT_B[0] +# 3251 : NrQoEQl_A[0] +# 7252 : NrQoEQl_B[0] +# 1795 : NrnozDQ_A[1] +# 5796 : NrnozDQ_B[1] +# 3001 : NtkbXzC_A[1] +# 7002 : NtkbXzC_B[1] +# 2994 : NvLpaRN_A[1] +# 6995 : NvLpaRN_B[1] +# 1437 : NvVsmJt_A[0] +# 5438 : NvVsmJt_B[0] +# 477 : NvcCtaG_A[1] +# 4478 : NvcCtaG_B[1] +# 3269 : NwMDjWx_A[1] +# 7270 : NwMDjWx_B[1] +# 941 : NyUCtfk_A[0] +# 4942 : NyUCtfk_B[0] +# 3448 : NymIpER_A[1] +# 7449 : NymIpER_B[1] +# 2166 : NyxWLSu_A[1] +# 6167 : NyxWLSu_B[1] +# 1121 : NzEvrTJ_A[1] +# 5122 : NzEvrTJ_B[1] +# 1394 : OBfriES_A[1] +# 5395 : OBfriES_B[1] +# 1366 : OCNkajL_A[1] +# 5367 : OCNkajL_B[1] +# 3913 : OCThpKM_A[0] +# 7914 : OCThpKM_B[0] +# 150 : OCUkCmk_A[1] +# 4151 : OCUkCmk_B[1] +# 1847 : OCuempn_A[0] +# 5848 : OCuempn_B[0] +# 1772 : ODqcdzj_A[0] +# 5773 : ODqcdzj_B[0] +# 3642 : ODxRCzr_A[1] +# 7643 : ODxRCzr_B[1] +# 3772 : OEozfzp_A[0] +# 7773 : OEozfzp_B[0] +# 518 : OEqVHCX_A[0] +# 4519 : OEqVHCX_B[0] +# 3583 : OFyhNhV_A[0] +# 7584 : OFyhNhV_B[0] +# 1299 : OGEzynK_A[1] +# 5300 : OGEzynK_B[1] +# 3135 : OHIbTqo_A[1] +# 7136 : OHIbTqo_B[1] +# 1818 : OHdMDkA_A[0] +# 5819 : OHdMDkA_B[0] +# 2322 : OHwJqug_A[0] +# 6323 : OHwJqug_B[0] +# 3392 : OIHlrup_A[0] +# 7393 : OIHlrup_B[0] +# 2649 : OIXEjwZ_A[1] +# 6650 : OIXEjwZ_B[1] +# 200 : OIhkJHN_A[1] +# 4201 : OIhkJHN_B[1] +# 3228 : OImbKYq_A[0] +# 7229 : OImbKYq_B[0] +# 2705 : OJTLymU_A[1] +# 6706 : OJTLymU_B[1] +# 1907 : OKrUrLo_A[1] +# 5908 : OKrUrLo_B[1] +# 1427 : OKtwTiA_A[0] +# 5428 : OKtwTiA_B[0] +# 2990 : OLnOaXB_A[0] +# 6991 : OLnOaXB_B[0] +# 775 : OMRVuDX_A[0] +# 4776 : OMRVuDX_B[0] +# 1530 : ONylRDS_A[0] +# 5531 : ONylRDS_B[0] +# 49 : OOMwoWT_A[0] +# 4050 : OOMwoWT_B[0] +# 507 : OQXoVeX_A[0] +# 4508 : OQXoVeX_B[0] +# 3004 : ORGUlrE_A[0] +# 7005 : ORGUlrE_B[0] +# 187 : OSTWcqE_A[0] +# 4188 : OSTWcqE_B[0] +# 1890 : OTDvsCB_A[1] +# 5891 : OTDvsCB_B[1] +# 1167 : OTHKuVt_A[1] +# 5168 : OTHKuVt_B[1] +# 379 : OTKLEmS_A[0] +# 4380 : OTKLEmS_B[0] +# 3148 : OTXsxGV_A[0] +# 7149 : OTXsxGV_B[0] +# 1731 : OTwBcuu_A[0] +# 5732 : OTwBcuu_B[0] +# 1601 : OUwlols_A[1] +# 5602 : OUwlols_B[1] +# 2185 : OVbWDlZ_A[1] +# 6186 : OVbWDlZ_B[1] +# 1431 : OXCoSNE_A[1] +# 5432 : OXCoSNE_B[1] +# 2323 : OXReYhM_A[1] +# 6324 : OXReYhM_B[1] +# 2821 : OXnauvk_A[1] +# 6822 : OXnauvk_B[1] +# 125 : OXsfOMv_A[1] +# 4126 : OXsfOMv_B[1] +# 1702 : OYVtKgJ_A[1] +# 5703 : OYVtKgJ_B[1] +# 2339 : OYobfoj_A[1] +# 6340 : OYobfoj_B[1] +# 2435 : OZiaEIn_A[1] +# 6436 : OZiaEIn_B[1] +# 2224 : OZyxAOo_A[0] +# 6225 : OZyxAOo_B[0] +# 1780 : OcKDhgX_A[1] +# 5781 : OcKDhgX_B[1] +# 617 : OdBMjrH_A[0] +# 4618 : OdBMjrH_B[0] +# 2536 : OeWNaeJ_A[1] +# 6537 : OeWNaeJ_B[1] +# 2348 : OfBIQWQ_A[1] +# 6349 : OfBIQWQ_B[1] +# 864 : OfQDLxn_A[1] +# 4865 : OfQDLxn_B[1] +# 1356 : OfWIWCn_A[0] +# 5357 : OfWIWCn_B[0] +# 308 : OfyXZKl_A[1] +# 4309 : OfyXZKl_B[1] +# 1912 : Ofzujqz_A[1] +# 5913 : Ofzujqz_B[1] +# 1978 : OgfMGBt_A[0] +# 5979 : OgfMGBt_B[0] +# 2571 : OhXRVCm_A[0] +# 6572 : OhXRVCm_B[0] +# 1281 : OilFlRU_A[0] +# 5282 : OilFlRU_B[0] +# 2077 : OjBtvKX_A[1] +# 6078 : OjBtvKX_B[1] +# 3530 : OjOBEAX_A[1] +# 7531 : OjOBEAX_B[1] +# 2363 : OjxYMft_A[0] +# 6364 : OjxYMft_B[0] +# 3623 : OlFPsnu_A[0] +# 7624 : OlFPsnu_B[0] +# 383 : OmLyNIP_A[0] +# 4384 : OmLyNIP_B[0] +# 3447 : OmgHGhc_A[1] +# 7448 : OmgHGhc_B[1] +# 3833 : OnRYcRE_A[1] +# 7834 : OnRYcRE_B[1] +# 2504 : OnhhFeL_A[1] +# 6505 : OnhhFeL_B[1] +# 3603 : OoODPFJ_A[1] +# 7604 : OoODPFJ_B[1] +# 1840 : OorNeCV_A[0] +# 5841 : OorNeCV_B[0] +# 1977 : OpQWGUM_A[0] +# 5978 : OpQWGUM_B[0] +# 1650 : OqaCLGE_A[1] +# 5651 : OqaCLGE_B[1] +# 3665 : OrPiECx_A[1] +# 7666 : OrPiECx_B[1] +# 1753 : OsDICHX_A[1] +# 5754 : OsDICHX_B[1] +# 1952 : OtqbBzI_A[1] +# 5953 : OtqbBzI_B[1] +# 3262 : OuzvKcO_A[1] +# 7263 : OuzvKcO_B[1] +# 2291 : OvhZOrL_A[0] +# 6292 : OvhZOrL_B[0] +# 2991 : OvmUzof_A[0] +# 6992 : OvmUzof_B[0] +# 156 : OwAgwgh_A[1] +# 4157 : OwAgwgh_B[1] +# 3243 : OwtnmOt_A[0] +# 7244 : OwtnmOt_B[0] +# 1124 : OxFXjyR_A[1] +# 5125 : OxFXjyR_B[1] +# 26 : OyFJbsY_A[0] +# 4027 : OyFJbsY_B[0] +# 680 : OyNDEPh_A[0] +# 4681 : OyNDEPh_B[0] +# 1779 : OylYWAS_A[0] +# 5780 : OylYWAS_B[0] +# 5 : OyqFcfz_A[1] +# 4006 : OyqFcfz_B[1] +# 957 : PANbHzB_A[1] +# 4958 : PANbHzB_B[1] +# 2040 : PBhDucL_A[1] +# 6041 : PBhDucL_B[1] +# 3195 : PBrZgiL_A[1] +# 7196 : PBrZgiL_B[1] +# 2906 : PDaWUKh_A[0] +# 6907 : PDaWUKh_B[0] +# 1965 : PErPcZP_A[0] +# 5966 : PErPcZP_B[0] +# 121 : PEyDTXz_A[1] +# 4122 : PEyDTXz_B[1] +# 1246 : PFKAtQV_A[1] +# 5247 : PFKAtQV_B[1] +# 1782 : PHXMjXm_A[0] +# 5783 : PHXMjXm_B[0] +# 3498 : PHzRjja_A[1] +# 7499 : PHzRjja_B[1] +# 324 : PIyBAkL_A[1] +# 4325 : PIyBAkL_B[1] +# 2561 : PJKtvqi_A[0] +# 6562 : PJKtvqi_B[0] +# 849 : PJbFiHQ_A[1] +# 4850 : PJbFiHQ_B[1] +# 1657 : POQECdw_A[0] +# 5658 : POQECdw_B[0] +# 787 : POevkky_A[0] +# 4788 : POevkky_B[0] +# 3698 : PPpSYCJ_A[0] +# 7699 : PPpSYCJ_B[0] +# 3858 : PQiCjIN_A[0] +# 7859 : PQiCjIN_B[0] +# 161 : PQkoXVN_A[0] +# 4162 : PQkoXVN_B[0] +# 3180 : PQlAYez_A[1] +# 7181 : PQlAYez_B[1] +# 3791 : PRRvwWz_A[0] +# 7792 : PRRvwWz_B[0] +# 1752 : PRltRyM_A[1] +# 5753 : PRltRyM_B[1] +# 881 : PSOCjOY_A[1] +# 4882 : PSOCjOY_B[1] +# 1892 : PSWCfdy_A[1] +# 5893 : PSWCfdy_B[1] +# 1606 : PSqGoRK_A[0] +# 5607 : PSqGoRK_B[0] +# 1419 : PTGlizP_A[0] +# 5420 : PTGlizP_B[0] +# 1038 : PTiHCQq_A[1] +# 5039 : PTiHCQq_B[1] +# 210 : PTtrCDF_A[0] +# 4211 : PTtrCDF_B[0] +# 188 : PUMLpaf_A[1] +# 4189 : PUMLpaf_B[1] +# 350 : PVBWFVs_A[1] +# 4351 : PVBWFVs_B[1] +# 3170 : PVNOTbS_A[1] +# 7171 : PVNOTbS_B[1] +# 105 : PVVRrBi_A[0] +# 4106 : PVVRrBi_B[0] +# 1226 : PWMfIRb_A[0] +# 5227 : PWMfIRb_B[0] +# 875 : PYdbsED_A[0] +# 4876 : PYdbsED_B[0] +# 1632 : PYxQdty_A[1] +# 5633 : PYxQdty_B[1] +# 90 : PZAVzAt_A[1] +# 4091 : PZAVzAt_B[1] +# 1382 : PZPsPYA_A[1] +# 5383 : PZPsPYA_B[1] +# 286 : PZrckJj_A[1] +# 4287 : PZrckJj_B[1] +# 3720 : PaFAvEh_A[1] +# 7721 : PaFAvEh_B[1] +# 1773 : PaFJOMg_A[1] +# 5774 : PaFJOMg_B[1] +# 3843 : PbdinEu_A[1] +# 7844 : PbdinEu_B[1] +# 1866 : PbrEVTI_A[0] +# 5867 : PbrEVTI_B[0] +# 1507 : PcDDAEY_A[0] +# 5508 : PcDDAEY_B[0] +# 434 : Pcikzqr_A[0] +# 4435 : Pcikzqr_B[0] +# 1622 : PdDTMqw_A[1] +# 5623 : PdDTMqw_B[1] +# 1240 : PdPJfTk_A[0] +# 5241 : PdPJfTk_B[0] +# 1475 : PeHsHfW_A[1] +# 5476 : PeHsHfW_B[1] +# 3828 : Pffhggl_A[0] +# 7829 : Pffhggl_B[0] +# 1546 : PhIZdhd_A[1] +# 5547 : PhIZdhd_B[1] +# 921 : PhJsPap_A[0] +# 4922 : PhJsPap_B[0] +# 1873 : PiRlqsG_A[0] +# 5874 : PiRlqsG_B[0] +# 2518 : PjnvVhP_A[1] +# 6519 : PjnvVhP_B[1] +# 3003 : PjuhSeW_A[1] +# 7004 : PjuhSeW_B[1] +# 2137 : PkvFZWu_A[0] +# 6138 : PkvFZWu_B[0] +# 2653 : PmTsmyk_A[1] +# 6654 : PmTsmyk_B[1] +# 2118 : PnYzwFY_A[0] +# 6119 : PnYzwFY_B[0] +# 1381 : Pnwgqdc_A[1] +# 5382 : Pnwgqdc_B[1] +# 3074 : PoMGFtt_A[0] +# 7075 : PoMGFtt_B[0] +# 3100 : PooiItP_A[0] +# 7101 : PooiItP_B[0] +# 1113 : PpXSHKQ_A[1] +# 5114 : PpXSHKQ_B[1] +# 1726 : PpZEzHJ_A[0] +# 5727 : PpZEzHJ_B[0] +# 900 : PqWqeUJ_A[1] +# 4901 : PqWqeUJ_B[1] +# 648 : PsiTnxY_A[0] +# 4649 : PsiTnxY_B[0] +# 2404 : PswHSCT_A[0] +# 6405 : PswHSCT_B[0] +# 1517 : PtQmwRv_A[1] +# 5518 : PtQmwRv_B[1] +# 3279 : PuEqDcc_A[0] +# 7280 : PuEqDcc_B[0] +# 620 : PuNTuaC_A[1] +# 4621 : PuNTuaC_B[1] +# 2321 : PurvOqC_A[0] +# 6322 : PurvOqC_B[0] +# 1423 : PwaFjln_A[0] +# 5424 : PwaFjln_B[0] +# 1253 : Pwaamws_A[1] +# 5254 : Pwaamws_B[1] +# 1688 : PwmKXSf_A[0] +# 5689 : PwmKXSf_B[0] +# 2828 : PxGNNuD_A[1] +# 6829 : PxGNNuD_B[1] +# 2612 : PxzoeLN_A[0] +# 6613 : PxzoeLN_B[0] +# 2440 : PylPLXl_A[1] +# 6441 : PylPLXl_B[1] +# 2453 : PyxfoRL_A[1] +# 6454 : PyxfoRL_B[1] +# 2910 : PzodZDU_A[1] +# 6911 : PzodZDU_B[1] +# 2495 : QAHXcUp_A[0] +# 6496 : QAHXcUp_B[0] +# 73 : QAamCWY_A[1] +# 4074 : QAamCWY_B[1] +# 1140 : QAvwffY_A[1] +# 5141 : QAvwffY_B[1] +# 2270 : QDcslAH_A[1] +# 6271 : QDcslAH_B[1] +# 1531 : QGEDemU_A[0] +# 5532 : QGEDemU_B[0] +# 2804 : QIPqTwn_A[0] +# 6805 : QIPqTwn_B[0] +# 2299 : QIRVsoW_A[1] +# 6300 : QIRVsoW_B[1] +# 731 : QIzykOS_A[1] +# 4732 : QIzykOS_B[1] +# 1405 : QKDaOZk_A[1] +# 5406 : QKDaOZk_B[1] +# 1880 : QKhmzcQ_A[1] +# 5881 : QKhmzcQ_B[1] +# 1951 : QMNKgwp_A[0] +# 5952 : QMNKgwp_B[0] +# 116 : QOIBFHp_A[0] +# 4117 : QOIBFHp_B[0] +# 2105 : QOQiKqq_A[1] +# 6106 : QOQiKqq_B[1] +# 2121 : QPeOdlP_A[1] +# 6122 : QPeOdlP_B[1] +# 2774 : QQEswmd_A[0] +# 6775 : QQEswmd_B[0] +# 3014 : QQaVoJS_A[0] +# 7015 : QQaVoJS_B[0] +# 1968 : QQkmDsj_A[1] +# 5969 : QQkmDsj_B[1] +# 3586 : QQzlyYL_A[0] +# 7587 : QQzlyYL_B[0] +# 342 : QSZZtmW_A[0] +# 4343 : QSZZtmW_B[0] +# 2349 : QTDWLQH_A[0] +# 6350 : QTDWLQH_B[0] +# 1465 : QVGhdsC_A[1] +# 5466 : QVGhdsC_B[1] +# 2953 : QWbiDUF_A[1] +# 6954 : QWbiDUF_B[1] +# 180 : QWqdlYS_A[1] +# 4181 : QWqdlYS_B[1] +# 1988 : QXkDFso_A[1] +# 5989 : QXkDFso_B[1] +# 726 : QYBljwp_A[1] +# 4727 : QYBljwp_B[1] +# 3585 : QYCKJHZ_A[0] +# 7586 : QYCKJHZ_B[0] +# 1609 : QZoRsrk_A[0] +# 5610 : QZoRsrk_B[0] +# 241 : QZpJdat_A[0] +# 4242 : QZpJdat_B[0] +# 548 : QaWYUKN_A[0] +# 4549 : QaWYUKN_B[0] +# 3413 : QagPBbU_A[1] +# 7414 : QagPBbU_B[1] +# 269 : QaiPSMy_A[0] +# 4270 : QaiPSMy_B[0] +# 480 : QbYsnDH_A[1] +# 4481 : QbYsnDH_B[1] +# 3959 : QbeWDNz_A[0] +# 7960 : QbeWDNz_B[0] +# 1130 : QdCdYpM_A[1] +# 5131 : QdCdYpM_B[1] +# 1816 : QdSxYho_A[0] +# 5817 : QdSxYho_B[0] +# 2459 : QfhcdHC_A[1] +# 6460 : QfhcdHC_B[1] +# 3354 : QggmFpn_A[1] +# 7355 : QggmFpn_B[1] +# 1786 : QinUvMy_A[1] +# 5787 : QinUvMy_B[1] +# 3664 : QkgzNTF_A[1] +# 7665 : QkgzNTF_B[1] +# 2964 : QkhazuM_A[0] +# 6965 : QkhazuM_B[0] +# 2626 : QloTFHz_A[0] +# 6627 : QloTFHz_B[0] +# 3644 : QniqetY_A[0] +# 7645 : QniqetY_B[0] +# 2519 : QnqUYon_A[0] +# 6520 : QnqUYon_B[0] +# 1684 : QoLOlKl_A[0] +# 5685 : QoLOlKl_B[0] +# 1865 : QoNfvwW_A[1] +# 5866 : QoNfvwW_B[1] +# 2679 : QockSjw_A[1] +# 6680 : QockSjw_B[1] +# 1699 : QqiVVAM_A[0] +# 5700 : QqiVVAM_B[0] +# 2999 : QqyIWtp_A[0] +# 7000 : QqyIWtp_B[0] +# 2756 : QrcYgSj_A[1] +# 6757 : QrcYgSj_B[1] +# 1826 : Qrcwwcd_A[0] +# 5827 : Qrcwwcd_B[0] +# 497 : QrobNkn_A[1] +# 4498 : QrobNkn_B[1] +# 1235 : QsLrwNk_A[0] +# 5236 : QsLrwNk_B[0] +# 2430 : Qsncdud_A[1] +# 6431 : Qsncdud_B[1] +# 203 : QtPVpci_A[1] +# 4204 : QtPVpci_B[1] +# 393 : QuCRPxP_A[1] +# 4394 : QuCRPxP_B[1] +# 3490 : QuOcaIT_A[0] +# 7491 : QuOcaIT_B[0] +# 2097 : QuRgQBV_A[1] +# 6098 : QuRgQBV_B[1] +# 607 : QveePav_A[0] +# 4608 : QveePav_B[0] +# 3618 : QwaxFLx_A[0] +# 7619 : QwaxFLx_B[0] +# 2394 : QwobPyA_A[0] +# 6395 : QwobPyA_B[0] +# 1983 : QwuvoOh_A[1] +# 5984 : QwuvoOh_B[1] +# 2129 : QwwNnuI_A[0] +# 6130 : QwwNnuI_B[0] +# 1464 : QxHhxwW_A[0] +# 5465 : QxHhxwW_B[0] +# 343 : QyoHYhc_A[0] +# 4344 : QyoHYhc_B[0] +# 2103 : Qyzjiyg_A[0] +# 6104 : Qyzjiyg_B[0] +# 992 : QzGHJJC_A[0] +# 4993 : QzGHJJC_B[0] +# 3839 : QzXIsTL_A[0] +# 7840 : QzXIsTL_B[0] +# 3899 : QzmCSeL_A[0] +# 7900 : QzmCSeL_B[0] +# 1891 : QznQnbE_A[0] +# 5892 : QznQnbE_B[0] +# 338 : QzzbKxo_A[0] +# 4339 : QzzbKxo_B[0] +# 602 : RALGxAs_A[0] +# 4603 : RALGxAs_B[0] +# 780 : RBwMpdz_A[1] +# 4781 : RBwMpdz_B[1] +# 280 : RDDTOgd_A[1] +# 4281 : RDDTOgd_B[1] +# 2255 : RDfjalF_A[1] +# 6256 : RDfjalF_B[1] +# 1376 : RDmzRvb_A[0] +# 5377 : RDmzRvb_B[0] +# 3503 : RDpubgs_A[1] +# 7504 : RDpubgs_B[1] +# 793 : REIFJzN_A[0] +# 4794 : REIFJzN_B[0] +# 242 : RESxiXa_A[1] +# 4243 : RESxiXa_B[1] +# 3958 : REZiwjq_A[1] +# 7959 : REZiwjq_B[1] +# 145 : REcUXoO_A[1] +# 4146 : REcUXoO_B[1] +# 3563 : RFBNUeG_A[1] +# 7564 : RFBNUeG_B[1] +# 1864 : RIilrSg_A[0] +# 5865 : RIilrSg_B[0] +# 137 : RJBOfxw_A[0] +# 4138 : RJBOfxw_B[0] +# 749 : RJLReTz_A[1] +# 4750 : RJLReTz_B[1] +# 1558 : RMczARe_A[0] +# 5559 : RMczARe_B[0] +# 3949 : RMoNFUD_A[1] +# 7950 : RMoNFUD_B[1] +# 3668 : RNRAZTG_A[1] +# 7669 : RNRAZTG_B[1] +# 2387 : RNVJJQY_A[0] +# 6388 : RNVJJQY_B[0] +# 2142 : RPBDtLd_A[1] +# 6143 : RPBDtLd_B[1] +# 2812 : RPTEeRT_A[1] +# 6813 : RPTEeRT_B[1] +# 474 : RQHlgGm_A[0] +# 4475 : RQHlgGm_B[0] +# 537 : RRZsqOA_A[1] +# 4538 : RRZsqOA_B[1] +# 3803 : RTfPFGt_A[0] +# 7804 : RTfPFGt_B[0] +# 1677 : RUHkiPF_A[1] +# 5678 : RUHkiPF_B[1] +# 2090 : RVUvKhJ_A[1] +# 6091 : RVUvKhJ_B[1] +# 2124 : RWkgKVq_A[0] +# 6125 : RWkgKVq_B[0] +# 2451 : RXUMxXZ_A[0] +# 6452 : RXUMxXZ_B[0] +# 3820 : RYvwPdR_A[0] +# 7821 : RYvwPdR_B[0] +# 1859 : RZkixDl_A[0] +# 5860 : RZkixDl_B[0] +# 1466 : RayquTX_A[1] +# 5467 : RayquTX_B[1] +# 1223 : RbXunLT_A[1] +# 5224 : RbXunLT_B[1] +# 2772 : RbcosBY_A[0] +# 6773 : RbcosBY_B[0] +# 510 : RczehvO_A[1] +# 4511 : RczehvO_B[1] +# 3587 : RdpWzMK_A[0] +# 7588 : RdpWzMK_B[0] +# 1103 : ReFXBqQ_A[1] +# 5104 : ReFXBqQ_B[1] +# 2443 : ReeTxMh_A[1] +# 6444 : ReeTxMh_B[1] +# 1082 : Rekwnlj_A[0] +# 5083 : Rekwnlj_B[0] +# 1631 : RfzvdXw_A[1] +# 5632 : RfzvdXw_B[1] +# 1869 : RgOYTqv_A[1] +# 5870 : RgOYTqv_B[1] +# 3937 : RgUmvLj_A[1] +# 7938 : RgUmvLj_B[1] +# 1925 : RhKBCLK_A[1] +# 5926 : RhKBCLK_B[1] +# 2783 : RhvlcOO_A[0] +# 6784 : RhvlcOO_B[0] +# 228 : RlLBAMX_A[1] +# 4229 : RlLBAMX_B[1] +# 1021 : RlTPIJC_A[1] +# 5022 : RlTPIJC_B[1] +# 1306 : RnCZphr_A[1] +# 5307 : RnCZphr_B[1] +# 935 : RoCDSQZ_A[1] +# 4936 : RoCDSQZ_B[1] +# 164 : RoEUrxB_A[0] +# 4165 : RoEUrxB_B[0] +# 409 : RpFnYDo_A[0] +# 4410 : RpFnYDo_B[0] +# 2784 : RpNVVSt_A[0] +# 6785 : RpNVVSt_B[0] +# 2001 : RpxsyUx_A[1] +# 6002 : RpxsyUx_B[1] +# 3053 : RraheED_A[1] +# 7054 : RraheED_B[1] +# 2485 : Rrziqeh_A[1] +# 6486 : Rrziqeh_B[1] +# 549 : RsAmmGy_A[1] +# 4550 : RsAmmGy_B[1] +# 2629 : RsDrcJP_A[0] +# 6630 : RsDrcJP_B[0] +# 1403 : RsFTTTS_A[1] +# 5404 : RsFTTTS_B[1] +# 1331 : RsfJyHH_A[0] +# 5332 : RsfJyHH_B[0] +# 506 : RuCHhPv_A[0] +# 4507 : RuCHhPv_B[0] +# 1837 : RuSiDgp_A[0] +# 5838 : RuSiDgp_B[0] +# 3500 : RuaPHqy_A[1] +# 7501 : RuaPHqy_B[1] +# 3953 : RudGHFT_A[1] +# 7954 : RudGHFT_B[1] +# 2539 : RvdhMvi_A[1] +# 6540 : RvdhMvi_B[1] +# 189 : RvmbCMF_A[1] +# 4190 : RvmbCMF_B[1] +# 1651 : RvzYOhm_A[0] +# 5652 : RvzYOhm_B[0] +# 1353 : RwZMLLA_A[1] +# 5354 : RwZMLLA_B[1] +# 1687 : RwszXnf_A[1] +# 5688 : RwszXnf_B[1] +# 2992 : RxATYIj_A[1] +# 6993 : RxATYIj_B[1] +# 2341 : RxtuKIu_A[0] +# 6342 : RxtuKIu_B[0] +# 632 : RycqsRE_A[0] +# 4633 : RycqsRE_B[0] +# 2975 : RydFGnE_A[0] +# 6976 : RydFGnE_B[0] +# 1371 : RzaEkIP_A[1] +# 5372 : RzaEkIP_B[1] +# 2140 : SAjDaNm_A[1] +# 6141 : SAjDaNm_B[1] +# 576 : SAucWGp_A[1] +# 4577 : SAucWGp_B[1] +# 1101 : SDxikkx_A[1] +# 5102 : SDxikkx_B[1] +# 3881 : SEGHsGk_A[1] +# 7882 : SEGHsGk_B[1] +# 3622 : SEnsKbC_A[1] +# 7623 : SEnsKbC_B[1] +# 2569 : SFjaXiC_A[1] +# 6570 : SFjaXiC_B[1] +# 1451 : SFpyVsg_A[0] +# 5452 : SFpyVsg_B[0] +# 1478 : SIxxgfy_A[0] +# 5479 : SIxxgfy_B[0] +# 3700 : SKasdEQ_A[0] +# 7701 : SKasdEQ_B[0] +# 85 : SKpYbHR_A[1] +# 4086 : SKpYbHR_B[1] +# 294 : SKuUZYH_A[1] +# 4295 : SKuUZYH_B[1] +# 3491 : SKyodWs_A[0] +# 7492 : SKyodWs_B[0] +# 3433 : SLLvyzw_A[0] +# 7434 : SLLvyzw_B[0] +# 3786 : SNAnJQv_A[1] +# 7787 : SNAnJQv_B[1] +# 3051 : SNaplBS_A[1] +# 7052 : SNaplBS_B[1] +# 759 : SNsWgbV_A[0] +# 4760 : SNsWgbV_B[0] +# 2712 : SOGjRTf_A[0] +# 6713 : SOGjRTf_B[0] +# 1685 : SOZeXOC_A[0] +# 5686 : SOZeXOC_B[0] +# 1584 : SOmCcQs_A[0] +# 5585 : SOmCcQs_B[0] +# 1063 : SOytJFO_A[0] +# 5064 : SOytJFO_B[0] +# 879 : SPMNNuA_A[0] +# 4880 : SPMNNuA_B[0] +# 3589 : SPbZtEE_A[1] +# 7590 : SPbZtEE_B[1] +# 3863 : SQiGmnx_A[0] +# 7864 : SQiGmnx_B[0] +# 3693 : SQifyuJ_A[0] +# 7694 : SQifyuJ_B[0] +# 1127 : SQvGAdM_A[1] +# 5128 : SQvGAdM_B[1] +# 3049 : SRQMYWr_A[1] +# 7050 : SRQMYWr_B[1] +# 2765 : SRaefbG_A[0] +# 6766 : SRaefbG_B[0] +# 2702 : SRvORdX_A[1] +# 6703 : SRvORdX_B[1] +# 1102 : SSEuFtw_A[0] +# 5103 : SSEuFtw_B[0] +# 830 : SSOLCoP_A[1] +# 4831 : SSOLCoP_B[1] +# 3975 : SSTuOID_A[0] +# 7976 : SSTuOID_B[0] +# 1208 : SSVfNYK_A[0] +# 5209 : SSVfNYK_B[0] +# 2566 : SSeFErJ_A[0] +# 6567 : SSeFErJ_B[0] +# 878 : STOPrBt_A[0] +# 4879 : STOPrBt_B[0] +# 2302 : STOXFsX_A[0] +# 6303 : STOXFsX_B[0] +# 1429 : STZoVyp_A[0] +# 5430 : STZoVyp_B[0] +# 277 : SVTNNTY_A[1] +# 4278 : SVTNNTY_B[1] +# 2242 : SVcJtph_A[1] +# 6243 : SVcJtph_B[1] +# 2733 : SVddXNR_A[0] +# 6734 : SVddXNR_B[0] +# 79 : SVqNhpz_A[1] +# 4080 : SVqNhpz_B[1] +# 405 : SWJiXwz_A[0] +# 4406 : SWJiXwz_B[0] +# 931 : SWWrRzB_A[0] +# 4932 : SWWrRzB_B[0] +# 3382 : SWgAjmo_A[0] +# 7383 : SWgAjmo_B[0] +# 3632 : SWjRpDy_A[0] +# 7633 : SWjRpDy_B[0] +# 1294 : SXBzEsh_A[1] +# 5295 : SXBzEsh_B[1] +# 1610 : SYqNiyt_A[1] +# 5611 : SYqNiyt_B[1] +# 436 : SZsBzZE_A[0] +# 4437 : SZsBzZE_B[0] +# 1872 : SbiskRg_A[1] +# 5873 : SbiskRg_B[1] +# 1351 : SdznULP_A[0] +# 5352 : SdznULP_B[0] +# 1498 : SeEucuO_A[0] +# 5499 : SeEucuO_B[0] +# 1774 : SeaytSl_A[0] +# 5775 : SeaytSl_B[0] +# 3667 : SfKSEqb_A[1] +# 7668 : SfKSEqb_B[1] +# 3759 : SfRVHKB_A[1] +# 7760 : SfRVHKB_B[1] +# 1449 : SgLmMJy_A[0] +# 5450 : SgLmMJy_B[0] +# 3854 : SiiWsTs_A[1] +# 7855 : SiiWsTs_B[1] +# 1532 : SjEGtKM_A[0] +# 5533 : SjEGtKM_B[0] +# 1024 : SkYlxDN_A[1] +# 5025 : SkYlxDN_B[1] +# 2183 : SkjjSrs_A[0] +# 6184 : SkjjSrs_B[0] +# 1984 : SkkGAdx_A[0] +# 5985 : SkkGAdx_B[0] +# 1755 : Slcslbt_A[0] +# 5756 : Slcslbt_B[0] +# 2836 : SmJRkDL_A[0] +# 6837 : SmJRkDL_B[0] +# 885 : SoAIkBl_A[0] +# 4886 : SoAIkBl_B[0] +# 3064 : SodkXtk_A[0] +# 7065 : SodkXtk_B[0] +# 3225 : SpowEHa_A[0] +# 7226 : SpowEHa_B[0] +# 781 : SpzKvje_A[1] +# 4782 : SpzKvje_B[1] +# 2979 : SqLkXiW_A[1] +# 6980 : SqLkXiW_B[1] +# 987 : SrFXIaa_A[0] +# 4988 : SrFXIaa_B[0] +# 1663 : SrrhiMp_A[1] +# 5664 : SrrhiMp_B[1] +# 3264 : SsKEDRA_A[1] +# 7265 : SsKEDRA_B[1] +# 184 : SsZNgby_A[1] +# 4185 : SsZNgby_B[1] +# 3702 : SuNUVbT_A[1] +# 7703 : SuNUVbT_B[1] +# 1958 : SuownsM_A[0] +# 5959 : SuownsM_B[0] +# 3406 : SuuIZRm_A[0] +# 7407 : SuuIZRm_B[0] +# 1236 : SvimFkH_A[1] +# 5237 : SvimFkH_B[1] +# 1566 : SvstrOK_A[1] +# 5567 : SvstrOK_B[1] +# 3796 : SwFgPyh_A[1] +# 7797 : SwFgPyh_B[1] +# 3879 : SwPbhxL_A[0] +# 7880 : SwPbhxL_B[0] +# 3245 : SwYKfkt_A[1] +# 7246 : SwYKfkt_B[1] +# 1156 : SwdCPzb_A[1] +# 5157 : SwdCPzb_B[1] +# 3038 : SwwDfxL_A[1] +# 7039 : SwwDfxL_B[1] +# 1007 : SxCcKCm_A[1] +# 5008 : SxCcKCm_B[1] +# 2575 : SyJWnHC_A[0] +# 6576 : SyJWnHC_B[0] +# 1621 : SyVbBsL_A[1] +# 5622 : SyVbBsL_B[1] +# 1157 : SzxvDDd_A[1] +# 5158 : SzxvDDd_B[1] +# 3194 : TAQyHYv_A[0] +# 7195 : TAQyHYv_B[0] +# 2013 : TAtamXI_A[0] +# 6014 : TAtamXI_B[0] +# 545 : TBHwutu_A[1] +# 4546 : TBHwutu_B[1] +# 3461 : TBfjUJq_A[0] +# 7462 : TBfjUJq_B[0] +# 1561 : TFEDLNR_A[1] +# 5562 : TFEDLNR_B[1] +# 3847 : TJStPuo_A[0] +# 7848 : TJStPuo_B[0] +# 3936 : TKsWXPQ_A[0] +# 7937 : TKsWXPQ_B[0] +# 666 : TMbkVpq_A[0] +# 4667 : TMbkVpq_B[0] +# 1079 : TNEPuXq_A[0] +# 5080 : TNEPuXq_B[0] +# 618 : TOMeHOJ_A[0] +# 4619 : TOMeHOJ_B[0] +# 2533 : TOTaflz_A[0] +# 6534 : TOTaflz_B[0] +# 2948 : TOecknK_A[1] +# 6949 : TOecknK_B[1] +# 3512 : TPmxZoE_A[1] +# 7513 : TPmxZoE_B[1] +# 3932 : TQUUQec_A[1] +# 7933 : TQUUQec_B[1] +# 2940 : TQlzIzC_A[0] +# 6941 : TQlzIzC_B[0] +# 1668 : TRlmgrG_A[0] +# 5669 : TRlmgrG_B[0] +# 3997 : TTFAMOS_A[1] +# 7998 : TTFAMOS_B[1] +# 2858 : TUSwhqs_A[0] +# 6859 : TUSwhqs_B[0] +# 3637 : TWUEXgo_A[1] +# 7638 : TWUEXgo_B[1] +# 279 : TXLPuNG_A[0] +# 4280 : TXLPuNG_B[0] +# 2331 : TYJcqHY_A[0] +# 6332 : TYJcqHY_B[0] +# 113 : TYrKnMn_A[1] +# 4114 : TYrKnMn_B[1] +# 2410 : TZHmPUV_A[0] +# 6411 : TZHmPUV_B[0] +# 2383 : TcbOZtO_A[1] +# 6384 : TcbOZtO_B[1] +# 3458 : TcsKxrR_A[0] +# 7459 : TcsKxrR_B[0] +# 2390 : TdOaBPS_A[0] +# 6391 : TdOaBPS_B[0] +# 1056 : TeIbMMt_A[1] +# 5057 : TeIbMMt_B[1] +# 3094 : TfridMy_A[1] +# 7095 : TfridMy_B[1] +# 1090 : TghcGdw_A[1] +# 5091 : TghcGdw_B[1] +# 2523 : ThMvosO_A[1] +# 6524 : ThMvosO_B[1] +# 3391 : ThtIquZ_A[0] +# 7392 : ThtIquZ_B[0] +# 1014 : TiajNeb_A[0] +# 5015 : TiajNeb_B[0] +# 1122 : TkXVPQm_A[0] +# 5123 : TkXVPQm_B[0] +# 645 : TksIaFq_A[0] +# 4646 : TksIaFq_B[0] +# 3456 : TkzOWBI_A[0] +# 7457 : TkzOWBI_B[0] +# 2041 : TlGeQhV_A[0] +# 6042 : TlGeQhV_B[0] +# 1992 : TlGiNup_A[0] +# 5993 : TlGiNup_B[0] +# 239 : Tmlfhfh_A[0] +# 4240 : Tmlfhfh_B[0] +# 3952 : Tmualnh_A[1] +# 7953 : Tmualnh_B[1] +# 2946 : TnAbjEf_A[1] +# 6947 : TnAbjEf_B[1] +# 3616 : Tnqosfo_A[1] +# 7617 : Tnqosfo_B[1] +# 3636 : TrIbQWj_A[0] +# 7637 : TrIbQWj_B[0] +# 1747 : TufEWYT_A[0] +# 5748 : TufEWYT_B[0] +# 2515 : TuhRSED_A[1] +# 6516 : TuhRSED_B[1] +# 1592 : TvZXHeD_A[0] +# 5593 : TvZXHeD_B[0] +# 2234 : TwtPmDv_A[1] +# 6235 : TwtPmDv_B[1] +# 1037 : TxCmtwz_A[1] +# 5038 : TxCmtwz_B[1] +# 1966 : TxgLHam_A[1] +# 5967 : TxgLHam_B[1] +# 2123 : TyOVSRy_A[1] +# 6124 : TyOVSRy_B[1] +# 3058 : TypmPkx_A[0] +# 7059 : TypmPkx_B[0] +# 3067 : TzQNpqh_A[0] +# 7068 : TzQNpqh_B[0] +# 2101 : TzfIVOQ_A[1] +# 6102 : TzfIVOQ_B[1] +# 2574 : UCJrzpZ_A[1] +# 6575 : UCJrzpZ_B[1] +# 2049 : UCThyZe_A[0] +# 6050 : UCThyZe_B[0] +# 462 : UCnvnxj_A[0] +# 4463 : UCnvnxj_B[0] +# 2466 : UDxaOwl_A[0] +# 6467 : UDxaOwl_B[0] +# 1230 : UEhNMVh_A[1] +# 5231 : UEhNMVh_B[1] +# 756 : UFcVumq_A[0] +# 4757 : UFcVumq_B[0] +# 3531 : UFhrqef_A[1] +# 7532 : UFhrqef_B[1] +# 3822 : UHHjXIp_A[0] +# 7823 : UHHjXIp_B[0] +# 860 : UHaqZyM_A[1] +# 4861 : UHaqZyM_B[1] +# 2254 : UHpPzLR_A[0] +# 6255 : UHpPzLR_B[0] +# 1929 : UIGFqkR_A[0] +# 5930 : UIGFqkR_B[0] +# 696 : UIbKorh_A[1] +# 4697 : UIbKorh_B[1] +# 396 : UIrowmE_A[1] +# 4397 : UIrowmE_B[1] +# 2199 : UJOsbTI_A[0] +# 6200 : UJOsbTI_B[0] +# 1572 : UKeDwid_A[1] +# 5573 : UKeDwid_B[1] +# 690 : UKhAOOi_A[1] +# 4691 : UKhAOOi_B[1] +# 3873 : UKpHgMf_A[0] +# 7874 : UKpHgMf_B[0] +# 3840 : UKylmPJ_A[0] +# 7841 : UKylmPJ_B[0] +# 1019 : UMFTdta_A[1] +# 5020 : UMFTdta_B[1] +# 927 : UNPjTlC_A[0] +# 4928 : UNPjTlC_B[0] +# 2434 : UNmeamQ_A[0] +# 6435 : UNmeamQ_B[0] +# 568 : UPPoAcJ_A[1] +# 4569 : UPPoAcJ_B[1] +# 1477 : UPpayqM_A[1] +# 5478 : UPpayqM_B[1] +# 1981 : UQhwKdl_A[0] +# 5982 : UQhwKdl_B[0] +# 3340 : URWXukg_A[1] +# 7341 : URWXukg_B[1] +# 2369 : URplsHD_A[0] +# 6370 : URplsHD_B[0] +# 1460 : USLWhCm_A[1] +# 5461 : USLWhCm_B[1] +# 2758 : USbreSc_A[0] +# 6759 : USbreSc_B[0] +# 1839 : USdYyCI_A[0] +# 5840 : USdYyCI_B[0] +# 1177 : UToXrDm_A[1] +# 5178 : UToXrDm_B[1] +# 223 : UTplhaP_A[0] +# 4224 : UTplhaP_B[0] +# 3739 : UVaGMBA_A[1] +# 7740 : UVaGMBA_B[1] +# 2708 : UWrfoAC_A[0] +# 6709 : UWrfoAC_B[0] +# 3365 : UXEZuxJ_A[0] +# 7366 : UXEZuxJ_B[0] +# 2661 : UXlatlp_A[1] +# 6662 : UXlatlp_B[1] +# 2039 : UXqMRUB_A[1] +# 6040 : UXqMRUB_B[1] +# 1999 : UXywxHG_A[1] +# 6000 : UXywxHG_B[1] +# 2860 : Ubocekw_A[1] +# 6861 : Ubocekw_B[1] +# 28 : UbqjZRM_A[0] +# 4029 : UbqjZRM_B[0] +# 2568 : UcAxtMc_A[1] +# 6569 : UcAxtMc_B[1] +# 695 : UclchtC_A[0] +# 4696 : UclchtC_B[0] +# 1436 : UcqtKxH_A[0] +# 5437 : UcqtKxH_B[0] +# 3660 : UeoGxZx_A[1] +# 7661 : UeoGxZx_B[1] +# 3650 : UfVXACU_A[0] +# 7651 : UfVXACU_B[0] +# 1081 : UgQQDwg_A[1] +# 5082 : UgQQDwg_B[1] +# 589 : UgfKefH_A[0] +# 4590 : UgfKefH_B[0] +# 2148 : UhNtewW_A[0] +# 6149 : UhNtewW_B[0] +# 3017 : UiSRPcb_A[0] +# 7018 : UiSRPcb_B[0] +# 3742 : UicZCxc_A[1] +# 7743 : UicZCxc_B[1] +# 114 : UjMUqGx_A[0] +# 4115 : UjMUqGx_B[0] +# 2809 : UjSwNZL_A[1] +# 6810 : UjSwNZL_B[1] +# 3092 : Ujrcivb_A[0] +# 7093 : Ujrcivb_B[0] +# 3506 : UlGuKML_A[0] +# 7507 : UlGuKML_B[0] +# 1867 : UndVGgh_A[1] +# 5868 : UndVGgh_B[1] +# 1930 : UnoBHgs_A[1] +# 5931 : UnoBHgs_B[1] +# 1029 : UoXxjKY_A[1] +# 5030 : UoXxjKY_B[1] +# 3046 : UoqJUbE_A[1] +# 7047 : UoqJUbE_B[1] +# 3595 : UoujoxP_A[0] +# 7596 : UoujoxP_B[0] +# 1153 : UplTJGY_A[0] +# 5154 : UplTJGY_B[0] +# 50 : Uqizrsc_A[1] +# 4051 : Uqizrsc_B[1] +# 2110 : UqngeOi_A[1] +# 6111 : UqngeOi_B[1] +# 3634 : UrhVUDB_A[0] +# 7635 : UrhVUDB_B[0] +# 954 : UrnFkWT_A[1] +# 4955 : UrnFkWT_B[1] +# 2220 : UsggxCl_A[0] +# 6221 : UsggxCl_B[0] +# 1536 : UtPoVzt_A[1] +# 5537 : UtPoVzt_B[1] +# 3208 : UttNRVc_A[0] +# 7209 : UttNRVc_B[0] +# 3991 : UudDsGC_A[1] +# 7992 : UudDsGC_B[1] +# 3582 : UuuyvbJ_A[1] +# 7583 : UuuyvbJ_B[1] +# 3150 : UwDMBGo_A[1] +# 7151 : UwDMBGo_B[1] +# 3842 : UwMnGGt_A[0] +# 7843 : UwMnGGt_B[0] +# 2073 : UwvJqCf_A[1] +# 6074 : UwvJqCf_B[1] +# 755 : UxspSMe_A[0] +# 4756 : UxspSMe_B[0] +# 192 : UyVhueU_A[0] +# 4193 : UyVhueU_B[0] +# 2847 : UyZqKDV_A[1] +# 6848 : UyZqKDV_B[1] +# 943 : UzRCkgs_A[1] +# 4944 : UzRCkgs_B[1] +# 1088 : VANFljY_A[0] +# 5089 : VANFljY_B[0] +# 1905 : VBjnQzd_A[1] +# 5906 : VBjnQzd_B[1] +# 1915 : VBlSDGC_A[0] +# 5916 : VBlSDGC_B[0] +# 465 : VBoQAhE_A[1] +# 4466 : VBoQAhE_B[1] +# 488 : VCUrjPy_A[0] +# 4489 : VCUrjPy_B[0] +# 96 : VCbhsCd_A[0] +# 4097 : VCbhsCd_B[0] +# 2615 : VDtsAAY_A[0] +# 6616 : VDtsAAY_B[0] +# 3318 : VEtREZZ_A[0] +# 7319 : VEtREZZ_B[0] +# 3107 : VFvvAqJ_A[0] +# 7108 : VFvvAqJ_B[0] +# 2572 : VHZWfNB_A[0] +# 6573 : VHZWfNB_B[0] +# 1264 : VHtVFFp_A[1] +# 5265 : VHtVFFp_B[1] +# 3070 : VJWsmhh_A[1] +# 7071 : VJWsmhh_B[1] +# 1041 : VJhsktq_A[0] +# 5042 : VJhsktq_B[0] +# 283 : VKfqbeN_A[1] +# 4284 : VKfqbeN_B[1] +# 2638 : VKvhWmQ_A[1] +# 6639 : VKvhWmQ_B[1] +# 2864 : VLTcdwZ_A[0] +# 6865 : VLTcdwZ_B[0] +# 1554 : VNkZckE_A[1] +# 5555 : VNkZckE_B[1] +# 2364 : VNtWqYi_A[0] +# 6365 : VNtWqYi_B[0] +# 37 : VPkzpqf_A[0] +# 4038 : VPkzpqf_B[0] +# 2955 : VQIOhoL_A[1] +# 6956 : VQIOhoL_B[1] +# 2916 : VRFELPD_A[1] +# 6917 : VRFELPD_B[1] +# 2018 : VSriFYW_A[0] +# 6019 : VSriFYW_B[0] +# 2088 : VThyStS_A[1] +# 6089 : VThyStS_B[1] +# 2295 : VUMIDOA_A[0] +# 6296 : VUMIDOA_B[0] +# 1488 : VVIdllo_A[1] +# 5489 : VVIdllo_B[1] +# 3832 : VVJBLDv_A[1] +# 7833 : VVJBLDv_B[1] +# 2336 : VXPZPgS_A[1] +# 6337 : VXPZPgS_B[1] +# 2541 : VbTXUkD_A[1] +# 6542 : VbTXUkD_B[1] +# 3427 : VbnKXPE_A[1] +# 7428 : VbnKXPE_B[1] +# 2491 : VcCJdAz_A[0] +# 6492 : VcCJdAz_B[0] +# 809 : VcnRmtg_A[1] +# 4810 : VcnRmtg_B[1] +# 2379 : VdKJPvf_A[1] +# 6380 : VdKJPvf_B[1] +# 2172 : VdjcVph_A[1] +# 6173 : VdjcVph_B[1] +# 2919 : VeLiLxb_A[0] +# 6920 : VeLiLxb_B[0] +# 1990 : VedOgIX_A[1] +# 5991 : VedOgIX_B[1] +# 1060 : VfUABtE_A[1] +# 5061 : VfUABtE_B[1] +# 1911 : VfjaYkL_A[0] +# 5912 : VfjaYkL_B[0] +# 3283 : VgXznGj_A[1] +# 7284 : VgXznGj_B[1] +# 2850 : ViTbFCw_A[1] +# 6851 : ViTbFCw_B[1] +# 2998 : VicYqRe_A[1] +# 6999 : VicYqRe_B[1] +# 1876 : VkVWgsa_A[0] +# 5877 : VkVWgsa_B[0] +# 3063 : VkXourr_A[1] +# 7064 : VkXourr_B[1] +# 2227 : VljXIxI_A[0] +# 6228 : VljXIxI_B[0] +# 871 : VmVPjfh_A[0] +# 4872 : VmVPjfh_B[0] +# 2452 : VoHmPfI_A[0] +# 6453 : VoHmPfI_B[0] +# 2161 : VonEKdV_A[0] +# 6162 : VonEKdV_B[0] +# 2639 : VpjvvGK_A[1] +# 6640 : VpjvvGK_B[1] +# 36 : VqJaLnn_A[0] +# 4037 : VqJaLnn_B[0] +# 1247 : VqSWPZY_A[0] +# 5248 : VqSWPZY_B[0] +# 2719 : VqyfxRV_A[0] +# 6720 : VqyfxRV_B[0] +# 2703 : VrVwjtJ_A[0] +# 6704 : VrVwjtJ_B[0] +# 3040 : VsAovcn_A[1] +# 7041 : VsAovcn_B[1] +# 3125 : VsCnBSt_A[1] +# 7126 : VsCnBSt_B[1] +# 2630 : VtWMMaZ_A[0] +# 6631 : VtWMMaZ_B[0] +# 1280 : VtlRyXp_A[0] +# 5281 : VtlRyXp_B[0] +# 1183 : VuAWSGH_A[1] +# 5184 : VuAWSGH_B[1] +# 527 : VuMfNjG_A[1] +# 4528 : VuMfNjG_B[1] +# 245 : VvPdAHh_A[1] +# 4246 : VvPdAHh_B[1] +# 3450 : VvslohN_A[0] +# 7451 : VvslohN_B[0] +# 2241 : VwBgayp_A[1] +# 6242 : VwBgayp_B[1] +# 1808 : VwOTDDk_A[1] +# 5809 : VwOTDDk_B[1] +# 3128 : VwUoTWD_A[1] +# 7129 : VwUoTWD_B[1] +# 3041 : VwlZSAW_A[1] +# 7042 : VwlZSAW_B[1] +# 3116 : VxLylfe_A[0] +# 7117 : VxLylfe_B[0] +# 3327 : VxturCm_A[0] +# 7328 : VxturCm_B[0] +# 3894 : VyvhLzA_A[1] +# 7895 : VyvhLzA_B[1] +# 1219 : VzWAsWa_A[0] +# 5220 : VzWAsWa_B[0] +# 2996 : VzvnTqd_A[1] +# 6997 : VzvnTqd_B[1] +# 604 : WBtMdQF_A[1] +# 4605 : WBtMdQF_B[1] +# 2635 : WFPmVZJ_A[0] +# 6636 : WFPmVZJ_B[0] +# 2735 : WHAwCOm_A[1] +# 6736 : WHAwCOm_B[1] +# 3110 : WIRgQFU_A[0] +# 7111 : WIRgQFU_B[0] +# 2262 : WIgDAry_A[0] +# 6263 : WIgDAry_B[0] +# 2468 : WInysGB_A[0] +# 6469 : WInysGB_B[0] +# 535 : WJHgpOg_A[0] +# 4536 : WJHgpOg_B[0] +# 1439 : WKNXkvp_A[1] +# 5440 : WKNXkvp_B[1] +# 2061 : WKuRYYd_A[1] +# 6062 : WKuRYYd_B[1] +# 2664 : WLqobZh_A[0] +# 6665 : WLqobZh_B[0] +# 3495 : WMEgXof_A[1] +# 7496 : WMEgXof_B[1] +# 550 : WMoWZFI_A[1] +# 4551 : WMoWZFI_B[1] +# 2558 : WNmyeLM_A[0] +# 6559 : WNmyeLM_B[0] +# 56 : WPKPZiK_A[1] +# 4057 : WPKPZiK_B[1] +# 1705 : WPKcAFD_A[1] +# 5706 : WPKcAFD_B[1] +# 47 : WPXYulg_A[0] +# 4048 : WPXYulg_B[0] +# 3270 : WPcGBil_A[1] +# 7271 : WPcGBil_B[1] +# 1694 : WPslPIf_A[0] +# 5695 : WPslPIf_B[0] +# 2036 : WQKPWmx_A[1] +# 6037 : WQKPWmx_B[1] +# 25 : WQejAzP_A[1] +# 4026 : WQejAzP_B[1] +# 2731 : WRpEnTi_A[1] +# 6732 : WRpEnTi_B[1] +# 3504 : WSNOtkQ_A[0] +# 7505 : WSNOtkQ_B[0] +# 2003 : WSmpjQK_A[1] +# 6004 : WSmpjQK_B[1] +# 2111 : WSrpsJP_A[0] +# 6112 : WSrpsJP_B[0] +# 450 : WUGPWLa_A[1] +# 4451 : WUGPWLa_B[1] +# 1106 : WUHZsLR_A[0] +# 5107 : WUHZsLR_B[0] +# 536 : WWNgMCm_A[0] +# 4537 : WWNgMCm_B[0] +# 3221 : WYCaHgQ_A[1] +# 7222 : WYCaHgQ_B[1] +# 1540 : WYryYYz_A[1] +# 5541 : WYryYYz_B[1] +# 2403 : WZQZcxs_A[1] +# 6404 : WZQZcxs_B[1] +# 3869 : WZuWEoK_A[1] +# 7870 : WZuWEoK_B[1] +# 1645 : WbFRvKO_A[1] +# 5646 : WbFRvKO_B[1] +# 2817 : WbZCXMP_A[1] +# 6818 : WbZCXMP_B[1] +# 2951 : WcBfmfc_A[0] +# 6952 : WcBfmfc_B[0] +# 2136 : WcCfpTq_A[1] +# 6137 : WcCfpTq_B[1] +# 198 : WcOsSiV_A[0] +# 4199 : WcOsSiV_B[0] +# 1040 : WcpvsRn_A[1] +# 5041 : WcpvsRn_B[1] +# 2837 : WdstKjn_A[1] +# 6838 : WdstKjn_B[1] +# 3691 : WdtCYGf_A[0] +# 7692 : WdtCYGf_B[0] +# 2742 : WeHtKFi_A[1] +# 6743 : WeHtKFi_B[1] +# 1502 : WfJxHvU_A[0] +# 5503 : WfJxHvU_B[0] +# 19 : WfXLnjU_A[0] +# 4020 : WfXLnjU_B[0] +# 464 : WfvWiXT_A[1] +# 4465 : WfvWiXT_B[1] +# 2952 : WfxicNl_A[0] +# 6953 : WfxicNl_B[0] +# 2493 : WgIeEfv_A[0] +# 6494 : WgIeEfv_B[0] +# 2290 : WgJDvLw_A[0] +# 6291 : WgJDvLw_B[0] +# 2195 : WgdxZHm_A[1] +# 6196 : WgdxZHm_B[1] +# 1620 : WghOQlb_A[1] +# 5621 : WghOQlb_B[1] +# 662 : WicHQiv_A[0] +# 4663 : WicHQiv_B[0] +# 2862 : WjjDMoT_A[0] +# 6863 : WjjDMoT_B[0] +# 330 : Wjyytue_A[1] +# 4331 : Wjyytue_B[1] +# 661 : WkTsQPN_A[1] +# 4662 : WkTsQPN_B[1] +# 1683 : WkhPkdN_A[1] +# 5684 : WkhPkdN_B[1] +# 769 : WmLAXun_A[1] +# 4770 : WmLAXun_B[1] +# 3030 : WnTGIxm_A[0] +# 7031 : WnTGIxm_B[0] +# 3353 : Wnajaba_A[0] +# 7354 : Wnajaba_B[0] +# 2020 : WoIsqVZ_A[0] +# 6021 : WoIsqVZ_B[0] +# 2645 : WoyxSWM_A[0] +# 6646 : WoyxSWM_B[0] +# 3718 : WpiWYcj_A[0] +# 7719 : WpiWYcj_B[0] +# 2959 : WqvMwwD_A[0] +# 6960 : WqvMwwD_B[0] +# 3701 : WrhCmBv_A[0] +# 7702 : WrhCmBv_B[0] +# 2582 : WtgRktY_A[1] +# 6583 : WtgRktY_B[1] +# 3524 : WulTKWu_A[1] +# 7525 : WulTKWu_B[1] +# 3572 : WvvNeei_A[1] +# 7573 : WvvNeei_B[1] +# 3432 : WwHCOEe_A[0] +# 7433 : WwHCOEe_B[0] +# 746 : WwHZfvc_A[1] +# 4747 : WwHZfvc_B[1] +# 3798 : WwKruIO_A[1] +# 7799 : WwKruIO_B[1] +# 2482 : WwdQzCD_A[0] +# 6483 : WwdQzCD_B[0] +# 1898 : WwjGfyT_A[0] +# 5899 : WwjGfyT_B[0] +# 3553 : WyINnNk_A[1] +# 7554 : WyINnNk_B[1] +# 2573 : WyKHSpP_A[0] +# 6574 : WyKHSpP_B[0] +# 3916 : XAPDHHu_A[1] +# 7917 : XAPDHHu_B[1] +# 3508 : XAabdkX_A[1] +# 7509 : XAabdkX_B[1] +# 3259 : XAytjiM_A[0] +# 7260 : XAytjiM_B[0] +# 3440 : XBhzNzW_A[1] +# 7441 : XBhzNzW_B[1] +# 1824 : XBzgaZi_A[1] +# 5825 : XBzgaZi_B[1] +# 2887 : XClXrcL_A[0] +# 6888 : XClXrcL_B[0] +# 1908 : XCltmOQ_A[1] +# 5909 : XCltmOQ_B[1] +# 2713 : XDMtcXq_A[1] +# 6714 : XDMtcXq_B[1] +# 2861 : XEbMsud_A[0] +# 6862 : XEbMsud_B[0] +# 694 : XEctpJF_A[0] +# 4695 : XEctpJF_B[0] +# 3599 : XEqARtS_A[1] +# 7600 : XEqARtS_B[1] +# 2914 : XGOZrYZ_A[1] +# 6915 : XGOZrYZ_B[1] +# 2551 : XGvcEDC_A[0] +# 6552 : XGvcEDC_B[0] +# 2848 : XHBrZsZ_A[1] +# 6849 : XHBrZsZ_B[1] +# 3697 : XJMYFGa_A[0] +# 7698 : XJMYFGa_B[0] +# 2115 : XMOJAJY_A[0] +# 6116 : XMOJAJY_B[0] +# 2746 : XNIGBhH_A[0] +# 6747 : XNIGBhH_B[0] +# 3099 : XNIvNkN_A[1] +# 7100 : XNIvNkN_B[1] +# 1062 : XNLvOon_A[1] +# 5063 : XNLvOon_B[1] +# 151 : XPjwoED_A[0] +# 4152 : XPjwoED_B[0] +# 2312 : XPwTsby_A[1] +# 6313 : XPwTsby_B[1] +# 1422 : XQddGiq_A[0] +# 5423 : XQddGiq_B[0] +# 3274 : XRQdujp_A[1] +# 7275 : XRQdujp_B[1] +# 404 : XRvBaQW_A[0] +# 4405 : XRvBaQW_B[0] +# 532 : XSHypum_A[1] +# 4533 : XSHypum_B[1] +# 2367 : XStFWff_A[1] +# 6368 : XStFWff_B[1] +# 2552 : XTuvebF_A[0] +# 6553 : XTuvebF_B[0] +# 1171 : XWtzHwC_A[1] +# 5172 : XWtzHwC_B[1] +# 2674 : XYyanvb_A[1] +# 6675 : XYyanvb_B[1] +# 1268 : XZRMiNg_A[0] +# 5269 : XZRMiNg_B[0] +# 3886 : XaIklYV_A[1] +# 7887 : XaIklYV_B[1] +# 55 : XalXuTu_A[0] +# 4056 : XalXuTu_B[0] +# 3888 : XamBgRR_A[1] +# 7889 : XamBgRR_B[1] +# 3371 : XbZsbeu_A[1] +# 7372 : XbZsbeu_B[1] +# 3105 : XcAyuRR_A[0] +# 7106 : XcAyuRR_B[0] +# 2995 : XcFokcv_A[1] +# 6996 : XcFokcv_B[1] +# 289 : XcqNGdC_A[0] +# 4290 : XcqNGdC_B[0] +# 2226 : XdJPciz_A[0] +# 6227 : XdJPciz_B[0] +# 1347 : XdZbNjo_A[0] +# 5348 : XdZbNjo_B[0] +# 2004 : XdbKBOe_A[1] +# 6005 : XdbKBOe_B[1] +# 1863 : XdcgWDn_A[1] +# 5864 : XdcgWDn_B[1] +# 681 : Xebfwzo_A[0] +# 4682 : Xebfwzo_B[0] +# 3578 : XfSkTHP_A[0] +# 7579 : XfSkTHP_B[0] +# 2682 : XfWKoZE_A[1] +# 6683 : XfWKoZE_B[1] +# 2351 : XflbXXO_A[1] +# 6352 : XflbXXO_B[1] +# 3337 : XftIDbo_A[1] +# 7338 : XftIDbo_B[1] +# 444 : XgbqROO_A[0] +# 4445 : XgbqROO_B[0] +# 1441 : XhsZHdi_A[0] +# 5442 : XhsZHdi_B[0] +# 3290 : XidYJdh_A[0] +# 7291 : XidYJdh_B[0] +# 889 : XjJstbf_A[1] +# 4890 : XjJstbf_B[1] +# 959 : XjgyMvs_A[1] +# 4960 : XjgyMvs_B[1] +# 2060 : XkUOfkp_A[0] +# 6061 : XkUOfkp_B[0] +# 476 : XkbzMBA_A[0] +# 4477 : XkbzMBA_B[0] +# 285 : XlNmhwG_A[0] +# 4286 : XlNmhwG_B[0] +# 2796 : XlPORmj_A[1] +# 6797 : XlPORmj_B[1] +# 3169 : XlSDUlG_A[1] +# 7170 : XlSDUlG_B[1] +# 322 : XnhXHrV_A[0] +# 4323 : XnhXHrV_B[0] +# 2033 : XnkRKnp_A[1] +# 6034 : XnkRKnp_B[1] +# 1535 : XoEbOdL_A[1] +# 5536 : XoEbOdL_B[1] +# 1976 : XoqNGzr_A[1] +# 5977 : XoqNGzr_B[1] +# 926 : XpanTIx_A[1] +# 4927 : XpanTIx_B[1] +# 3059 : XpbPtgF_A[0] +# 7060 : XpbPtgF_B[0] +# 1172 : XpcMggw_A[0] +# 5173 : XpcMggw_B[0] +# 428 : XrSNmBw_A[0] +# 4429 : XrSNmBw_B[0] +# 2737 : XrVreTw_A[1] +# 6738 : XrVreTw_B[1] +# 679 : XrbFbhL_A[0] +# 4680 : XrbFbhL_B[0] +# 3689 : XrbZWFB_A[1] +# 7690 : XrbZWFB_B[1] +# 744 : XsKqbdS_A[0] +# 4745 : XsKqbdS_B[0] +# 3015 : XsyfmKd_A[0] +# 7016 : XsyfmKd_B[0] +# 3326 : XtIgtjD_A[1] +# 7327 : XtIgtjD_B[1] +# 2673 : XtQFQNf_A[0] +# 6674 : XtQFQNf_B[0] +# 2710 : XtRwFnB_A[0] +# 6711 : XtRwFnB_B[0] +# 211 : XtVvaGG_A[0] +# 4212 : XtVvaGG_B[0] +# 1158 : XtfMqNZ_A[0] +# 5159 : XtfMqNZ_B[0] +# 3441 : XvODbcV_A[0] +# 7442 : XvODbcV_B[0] +# 2473 : XvlZUZt_A[1] +# 6474 : XvlZUZt_B[1] +# 3390 : XwiDFXz_A[0] +# 7391 : XwiDFXz_B[0] +# 1585 : Xwmzkqx_A[0] +# 5586 : Xwmzkqx_B[0] +# 1504 : XwoRcRy_A[1] +# 5505 : XwoRcRy_B[1] +# 1324 : XyJnoHW_A[1] +# 5325 : XyJnoHW_B[1] +# 2954 : XydwcVL_A[1] +# 6955 : XydwcVL_B[1] +# 240 : XzCVEhP_A[1] +# 4241 : XzCVEhP_B[1] +# 2132 : XzXuhnq_A[0] +# 6133 : XzXuhnq_B[0] +# 3781 : XzgarIa_A[0] +# 7782 : XzgarIa_B[0] +# 828 : XzzdaYl_A[0] +# 4829 : XzzdaYl_B[0] +# 2987 : YAJorzw_A[0] +# 6988 : YAJorzw_B[0] +# 2350 : YAameWq_A[1] +# 6351 : YAameWq_B[1] +# 3749 : YAsjJkD_A[1] +# 7750 : YAsjJkD_B[1] +# 1094 : YCOZDUM_A[0] +# 5095 : YCOZDUM_B[0] +# 1854 : YCZDkCr_A[1] +# 5855 : YCZDkCr_B[1] +# 2766 : YDWgwKP_A[0] +# 6767 : YDWgwKP_B[0] +# 135 : YEjiFpJ_A[1] +# 4136 : YEjiFpJ_B[1] +# 1274 : YGnettD_A[0] +# 5275 : YGnettD_B[0] +# 3089 : YGqsgBr_A[0] +# 7090 : YGqsgBr_B[0] +# 3291 : YHDWDCg_A[1] +# 7292 : YHDWDCg_B[1] +# 855 : YHmWaOv_A[0] +# 4856 : YHmWaOv_B[0] +# 3419 : YJvauDE_A[0] +# 7420 : YJvauDE_B[0] +# 3267 : YKTrgzQ_A[0] +# 7268 : YKTrgzQ_B[0] +# 177 : YKmshAi_A[0] +# 4178 : YKmshAi_B[0] +# 3113 : YKxblQB_A[1] +# 7114 : YKxblQB_B[1] +# 2419 : YMMFucK_A[0] +# 6420 : YMMFucK_B[0] +# 1017 : YNHEqBv_A[0] +# 5018 : YNHEqBv_B[0] +# 1664 : YNQqQBI_A[1] +# 5665 : YNQqQBI_B[1] +# 3876 : YOQFZzF_A[0] +# 7877 : YOQFZzF_B[0] +# 3077 : YOSlmCC_A[1] +# 7078 : YOSlmCC_B[1] +# 1432 : YPepubI_A[1] +# 5433 : YPepubI_B[1] +# 2818 : YPvcAYo_A[0] +# 6819 : YPvcAYo_B[0] +# 1391 : YRJYUAk_A[0] +# 5392 : YRJYUAk_B[0] +# 1796 : YSQdMLx_A[1] +# 5797 : YSQdMLx_B[1] +# 1516 : YSQlTrc_A[0] +# 5517 : YSQlTrc_B[0] +# 766 : YSjZSSd_A[1] +# 4767 : YSjZSSd_B[1] +# 1626 : YUSRZQq_A[0] +# 5627 : YUSRZQq_B[0] +# 179 : YVQcgAq_A[1] +# 4180 : YVQcgAq_B[1] +# 1506 : YVUFVej_A[0] +# 5507 : YVUFVej_B[0] +# 3727 : YWHNbWX_A[1] +# 7728 : YWHNbWX_B[1] +# 259 : YWbYmUI_A[1] +# 4260 : YWbYmUI_B[1] +# 2650 : YXBVDPo_A[0] +# 6651 : YXBVDPo_B[0] +# 2301 : YXKUYGd_A[0] +# 6302 : YXKUYGd_B[0] +# 3576 : YXLvAFx_A[1] +# 7577 : YXLvAFx_B[1] +# 3793 : YXRURTl_A[0] +# 7794 : YXRURTl_B[0] +# 3826 : YZgNKnO_A[0] +# 7827 : YZgNKnO_B[0] +# 3400 : YcJdTMu_A[1] +# 7401 : YcJdTMu_B[1] +# 2967 : YcSRFQm_A[0] +# 6968 : YcSRFQm_B[0] +# 918 : YcXlrTL_A[1] +# 4919 : YcXlrTL_B[1] +# 842 : YcvAaSc_A[1] +# 4843 : YcvAaSc_B[1] +# 647 : YdQTlPo_A[1] +# 4648 : YdQTlPo_B[1] +# 947 : YdWyEvt_A[1] +# 4948 : YdWyEvt_B[1] +# 1379 : YdfVJjX_A[0] +# 5380 : YdfVJjX_B[0] +# 3945 : YeLfKbR_A[1] +# 7946 : YeLfKbR_B[1] +# 1142 : YehBXIO_A[1] +# 5143 : YehBXIO_B[1] +# 2789 : YfUCoAC_A[0] +# 6790 : YfUCoAC_B[0] +# 2400 : YfVDosq_A[0] +# 6401 : YfVDosq_B[0] +# 1522 : YfjNqHO_A[0] +# 5523 : YfjNqHO_B[0] +# 2646 : YfzrdiZ_A[1] +# 6647 : YfzrdiZ_B[1] +# 265 : YgENHal_A[1] +# 4266 : YgENHal_B[1] +# 3161 : YgRWOvk_A[0] +# 7162 : YgRWOvk_B[0] +# 1065 : YgvMvnL_A[1] +# 5066 : YgvMvnL_B[1] +# 2516 : YhsWULl_A[1] +# 6517 : YhsWULl_B[1] +# 1787 : YhwUBEs_A[0] +# 5788 : YhwUBEs_B[0] +# 1327 : YieWPON_A[0] +# 5328 : YieWPON_B[0] +# 2531 : YiyBWrR_A[0] +# 6532 : YiyBWrR_B[0] +# 2556 : YjtNhpp_A[0] +# 6557 : YjtNhpp_B[0] +# 2950 : YjtrVmL_A[1] +# 6951 : YjtrVmL_B[1] +# 1084 : YkQvRGc_A[0] +# 5085 : YkQvRGc_B[0] +# 3268 : YkuXAiU_A[0] +# 7269 : YkuXAiU_B[0] +# 2509 : YmWAfUn_A[0] +# 6510 : YmWAfUn_B[0] +# 2191 : YneKTUC_A[1] +# 6192 : YneKTUC_B[1] +# 850 : YoTNUHV_A[0] +# 4851 : YoTNUHV_B[0] +# 1636 : YoYMews_A[1] +# 5637 : YoYMews_B[1] +# 2584 : YowJYbz_A[1] +# 6585 : YowJYbz_B[1] +# 1307 : YpERWvW_A[0] +# 5308 : YpERWvW_B[0] +# 182 : YrISMMp_A[0] +# 4183 : YrISMMp_B[0] +# 1044 : YsByAVR_A[0] +# 5045 : YsByAVR_B[0] +# 1512 : YvlZWbX_A[0] +# 5513 : YvlZWbX_B[0] +# 323 : YxNcFSC_A[0] +# 4324 : YxNcFSC_B[0] +# 2177 : YxcEMTS_A[0] +# 6178 : YxcEMTS_B[0] +# 1016 : YxjxYsj_A[0] +# 5017 : YxjxYsj_B[0] +# 3364 : YxynWjA_A[0] +# 7365 : YxynWjA_B[0] +# 698 : YyCIXhu_A[1] +# 4699 : YyCIXhu_B[1] +# 2711 : YyKQlOJ_A[0] +# 6712 : YyKQlOJ_B[0] +# 2699 : YyaOtpJ_A[0] +# 6700 : YyaOtpJ_B[0] +# 3190 : YyqqSEr_A[1] +# 7191 : YyqqSEr_B[1] +# 2757 : YzWyjJs_A[1] +# 6758 : YzWyjJs_B[1] +# 2308 : YzZmdJI_A[0] +# 6309 : YzZmdJI_B[0] +# 3927 : YzfPuwA_A[1] +# 7928 : YzfPuwA_B[1] +# 877 : ZAdsPyy_A[0] +# 4878 : ZAdsPyy_B[0] +# 1138 : ZAteTxP_A[0] +# 5139 : ZAteTxP_B[0] +# 2245 : ZBGYcoc_A[0] +# 6246 : ZBGYcoc_B[0] +# 1039 : ZBJhGfi_A[0] +# 5040 : ZBJhGfi_B[0] +# 2780 : ZBUvpSw_A[0] +# 6781 : ZBUvpSw_B[0] +# 1832 : ZBfXoUs_A[0] +# 5833 : ZBfXoUs_B[0] +# 1618 : ZBfiSzi_A[1] +# 5619 : ZBfiSzi_B[1] +# 2009 : ZCbOkUN_A[1] +# 6010 : ZCbOkUN_B[1] +# 1426 : ZCjtNIT_A[0] +# 5427 : ZCjtNIT_B[0] +# 345 : ZDIKVvH_A[1] +# 4346 : ZDIKVvH_B[1] +# 2604 : ZDLZILy_A[1] +# 6605 : ZDLZILy_B[1] +# 3475 : ZDLuzYt_A[1] +# 7476 : ZDLuzYt_B[1] +# 1819 : ZDkbSkK_A[1] +# 5820 : ZDkbSkK_B[1] +# 2980 : ZDuNwap_A[1] +# 6981 : ZDuNwap_B[1] +# 3684 : ZEJesKg_A[1] +# 7685 : ZEJesKg_B[1] +# 3943 : ZEQrREb_A[0] +# 7944 : ZEQrREb_B[0] +# 2968 : ZFJYpde_A[0] +# 6969 : ZFJYpde_B[0] +# 2252 : ZFOiGjj_A[0] +# 6253 : ZFOiGjj_B[0] +# 1173 : ZFbtQXZ_A[0] +# 5174 : ZFbtQXZ_B[0] +# 963 : ZFxPWZF_A[0] +# 4964 : ZFxPWZF_B[0] +# 633 : ZGHNOWs_A[1] +# 4634 : ZGHNOWs_B[1] +# 2949 : ZGiRyVd_A[0] +# 6950 : ZGiRyVd_B[0] +# 1783 : ZGoVhHC_A[1] +# 5784 : ZGoVhHC_B[1] +# 519 : ZHXscUr_A[0] +# 4520 : ZHXscUr_B[0] +# 1395 : ZHfPPCq_A[1] +# 5396 : ZHfPPCq_B[1] +# 3505 : ZHvTLCk_A[0] +# 7506 : ZHvTLCk_B[0] +# 2500 : ZHxViOY_A[1] +# 6501 : ZHxViOY_B[1] +# 1369 : ZIIEILH_A[1] +# 5370 : ZIIEILH_B[1] +# 112 : ZIMSksA_A[1] +# 4113 : ZIMSksA_B[1] +# 1979 : ZJOfsCM_A[0] +# 5980 : ZJOfsCM_B[0] +# 2303 : ZKibLNW_A[0] +# 6304 : ZKibLNW_B[0] +# 475 : ZLDcrdm_A[1] +# 4476 : ZLDcrdm_B[1] +# 422 : ZLKtwyE_A[1] +# 4423 : ZLKtwyE_B[1] +# 745 : ZLuJwQL_A[0] +# 4746 : ZLuJwQL_B[0] +# 3675 : ZMEnMUB_A[0] +# 7676 : ZMEnMUB_B[0] +# 3884 : ZMNsPpY_A[0] +# 7885 : ZMNsPpY_B[0] +# 3028 : ZNMHaLy_A[0] +# 7029 : ZNMHaLy_B[0] +# 3998 : ZORtZIz_A[0] +# 7999 : ZORtZIz_B[0] +# 3552 : ZPJAMFs_A[1] +# 7553 : ZPJAMFs_B[1] +# 3581 : ZPSqNMq_A[1] +# 7582 : ZPSqNMq_B[1] +# 1224 : ZPXVszh_A[1] +# 5225 : ZPXVszh_B[1] +# 254 : ZPqQRQf_A[0] +# 4255 : ZPqQRQf_B[0] +# 2093 : ZPysatX_A[1] +# 6094 : ZPysatX_B[1] +# 4000 : ZQVwdRX_A[1] +# 8001 : ZQVwdRX_B[1] +# 2671 : ZQygNPO_A[1] +# 6672 : ZQygNPO_B[1] +# 3214 : ZRFQAWo_A[0] +# 7215 : ZRFQAWo_B[0] +# 220 : ZSJSLyp_A[1] +# 4221 : ZSJSLyp_B[1] +# 2233 : ZSZJrza_A[0] +# 6234 : ZSZJrza_B[0] +# 3814 : ZVYZiqd_A[1] +# 7815 : ZVYZiqd_B[1] +# 2332 : ZVbokRd_A[1] +# 6333 : ZVbokRd_B[1] +# 3317 : ZVhausS_A[0] +# 7318 : ZVhausS_B[0] +# 767 : ZYAUwrj_A[1] +# 4768 : ZYAUwrj_B[1] +# 3356 : ZYAqgJe_A[1] +# 7357 : ZYAqgJe_B[1] +# 1308 : ZYNcLZO_A[0] +# 5309 : ZYNcLZO_B[0] +# 3628 : ZYtQHAs_A[1] +# 7629 : ZYtQHAs_B[1] +# 1152 : ZYuJPni_A[0] +# 5153 : ZYuJPni_B[0] +# 1526 : ZZfZSZx_A[1] +# 5527 : ZZfZSZx_B[1] +# 147 : ZaMaZnI_A[1] +# 4148 : ZaMaZnI_B[1] +# 2593 : ZaydpqS_A[0] +# 6594 : ZaydpqS_B[0] +# 498 : ZcYvnzb_A[1] +# 4499 : ZcYvnzb_B[1] +# 730 : ZcqZIDY_A[0] +# 4731 : ZcqZIDY_B[0] +# 17 : ZdJoSZG_A[0] +# 4018 : ZdJoSZG_B[0] +# 3397 : ZdjXzpB_A[0] +# 7398 : ZdjXzpB_B[0] +# 260 : ZfOeMJM_A[0] +# 4261 : ZfOeMJM_B[0] +# 1719 : ZgviTnZ_A[0] +# 5720 : ZgviTnZ_B[0] +# 3973 : ZiiyWYX_A[0] +# 7974 : ZiiyWYX_B[0] +# 1697 : ZjZLWZd_A[1] +# 5698 : ZjZLWZd_B[1] +# 3023 : ZjaNkUV_A[1] +# 7024 : ZjaNkUV_B[1] +# 3686 : ZkdxoMl_A[0] +# 7687 : ZkdxoMl_B[0] +# 2465 : ZlTDxCa_A[1] +# 6466 : ZlTDxCa_B[1] +# 3955 : ZmybZos_A[1] +# 7956 : ZmybZos_B[1] +# 1964 : ZnOaqaQ_A[0] +# 5965 : ZnOaqaQ_B[0] +# 1330 : ZnTfBqu_A[0] +# 5331 : ZnTfBqu_B[0] +# 1023 : Zncwvmu_A[1] +# 5024 : Zncwvmu_B[1] +# 2870 : ZopLMxb_A[1] +# 6871 : ZopLMxb_B[1] +# 3000 : ZpTBZhD_A[1] +# 7001 : ZpTBZhD_B[1] +# 371 : ZqYYcIt_A[1] +# 4372 : ZqYYcIt_B[1] +# 1228 : ZqZiHMf_A[1] +# 5229 : ZqZiHMf_B[1] +# 1686 : ZqhPCZn_A[1] +# 5687 : ZqhPCZn_B[1] +# 2753 : ZsZwzgB_A[1] +# 6754 : ZsZwzgB_B[1] +# 2038 : ZtDPMJL_A[0] +# 6039 : ZtDPMJL_B[0] +# 1617 : ZtezqsP_A[0] +# 5618 : ZtezqsP_B[0] +# 3661 : ZuAvcKF_A[0] +# 7662 : ZuAvcKF_B[0] +# 3715 : ZuBHwGH_A[0] +# 7716 : ZuBHwGH_B[0] +# 1689 : ZuJzWnK_A[0] +# 5690 : ZuJzWnK_B[0] +# 547 : ZvuOmfI_A[1] +# 4548 : ZvuOmfI_B[1] +# 3166 : Zwcugqm_A[1] +# 7167 : Zwcugqm_B[1] +# 274 : ZwiOGIO_A[0] +# 4275 : ZwiOGIO_B[0] +# 808 : Zxysjwr_A[0] +# 4809 : Zxysjwr_B[0] +# 3729 : ZyzWyeC_A[0] +# 7730 : ZyzWyeC_B[0] +# 78 : ZzMJQOz_A[1] +# 4079 : ZzMJQOz_B[1] +# 3355 : ZzrxRyS_A[0] +# 7356 : ZzrxRyS_B[0] +# 2700 : aATvBBB_A[1] +# 6701 : aATvBBB_B[1] +# 2318 : aBWuwSa_A[1] +# 6319 : aBWuwSa_B[1] +# 2823 : aBgYfol_A[1] +# 6824 : aBgYfol_B[1] +# 3437 : aCJRrOT_A[0] +# 7438 : aCJRrOT_B[0] +# 1491 : aCmHIsU_A[1] +# 5492 : aCmHIsU_B[1] +# 2791 : aDBwFEi_A[0] +# 6792 : aDBwFEi_B[0] +# 1562 : aFfaKZl_A[0] +# 5563 : aFfaKZl_B[0] +# 1648 : aGDxKXs_A[1] +# 5649 : aGDxKXs_B[1] +# 580 : aGQDFEg_A[1] +# 4581 : aGQDFEg_B[1] +# 1948 : aGXUBZn_A[0] +# 5949 : aGXUBZn_B[0] +# 1115 : aHOsTij_A[0] +# 5116 : aHOsTij_B[0] +# 1637 : aHVApoB_A[0] +# 5638 : aHVApoB_B[0] +# 1882 : aHjzONk_A[0] +# 5883 : aHjzONk_B[0] +# 2675 : aIqGlvv_A[0] +# 6676 : aIqGlvv_B[0] +# 845 : aJHtzaP_A[0] +# 4846 : aJHtzaP_B[0] +# 2898 : aJMMyqU_A[1] +# 6899 : aJMMyqU_B[1] +# 544 : aJMThfj_A[0] +# 4545 : aJMThfj_B[0] +# 1187 : aJWGHwn_A[1] +# 5188 : aJWGHwn_B[1] +# 2598 : aKkxZzM_A[1] +# 6599 : aKkxZzM_B[1] +# 3483 : aLPsGIC_A[0] +# 7484 : aLPsGIC_B[0] +# 75 : aLTwDzd_A[0] +# 4076 : aLTwDzd_B[0] +# 248 : aLWgDoi_A[0] +# 4249 : aLWgDoi_B[0] +# 949 : aMIzTim_A[0] +# 4950 : aMIzTim_B[0] +# 3143 : aMRVHXD_A[1] +# 7144 : aMRVHXD_B[1] +# 2942 : aNVPPIX_A[0] +# 6943 : aNVPPIX_B[0] +# 485 : aNzscCX_A[0] +# 4486 : aNzscCX_B[0] +# 2135 : aRJLSaT_A[1] +# 6136 : aRJLSaT_B[1] +# 3155 : aTxSdXz_A[1] +# 7156 : aTxSdXz_B[1] +# 1064 : aUPSYkD_A[0] +# 5065 : aUPSYkD_B[0] +# 569 : aVllIQT_A[1] +# 4570 : aVllIQT_B[1] +# 582 : aZoFcMk_A[0] +# 4583 : aZoFcMk_B[0] +# 2159 : aaCsWrR_A[0] +# 6160 : aaCsWrR_B[0] +# 2928 : aaoAPZM_A[0] +# 6929 : aaoAPZM_B[0] +# 2667 : abkAQWU_A[1] +# 6668 : abkAQWU_B[1] +# 872 : aeCBKrv_A[0] +# 4873 : aeCBKrv_B[0] +# 2314 : aecGxmf_A[0] +# 6315 : aecGxmf_B[0] +# 3425 : aeyRDdv_A[1] +# 7426 : aeyRDdv_B[1] +# 692 : afDqEFT_A[0] +# 4693 : afDqEFT_B[0] +# 353 : afXbWDk_A[0] +# 4354 : afXbWDk_B[0] +# 3925 : agZPODN_A[0] +# 7926 : agZPODN_B[0] +# 3265 : agZhPxA_A[0] +# 7266 : agZhPxA_B[0] +# 829 : aibEjOq_A[0] +# 4830 : aibEjOq_B[0] +# 2685 : aieXGmy_A[1] +# 6686 : aieXGmy_B[1] +# 2527 : ajIyLVn_A[1] +# 6528 : ajIyLVn_B[1] +# 2293 : ajVfREY_A[1] +# 6294 : ajVfREY_B[1] +# 2801 : akAdhQt_A[0] +# 6802 : akAdhQt_B[0] +# 1434 : akRxvKI_A[1] +# 5435 : akRxvKI_B[1] +# 2811 : akfOkNa_A[1] +# 6812 : akfOkNa_B[1] +# 2384 : akqkbrK_A[0] +# 6385 : akqkbrK_B[0] +# 3554 : amnHGLe_A[1] +# 7555 : amnHGLe_B[1] +# 956 : aqQBDMn_A[0] +# 4957 : aqQBDMn_B[0] +# 823 : aqyXkcN_A[0] +# 4824 : aqyXkcN_B[0] +# 2895 : asXxENH_A[0] +# 6896 : asXxENH_B[0] +# 609 : atpSdkV_A[0] +# 4610 : atpSdkV_B[0] +# 117 : auAwLIy_A[1] +# 4118 : auAwLIy_B[1] +# 3988 : auJDoxf_A[1] +# 7989 : auJDoxf_B[1] +# 3409 : aucAIgV_A[1] +# 7410 : aucAIgV_B[1] +# 3692 : avzoqCT_A[0] +# 7693 : avzoqCT_B[0] +# 3620 : axhOpUP_A[1] +# 7621 : axhOpUP_B[1] +# 2853 : axpMZzN_A[0] +# 6854 : axpMZzN_B[0] +# 515 : axxIABK_A[0] +# 4516 : axxIABK_B[0] +# 1654 : ayDbLzU_A[0] +# 5655 : ayDbLzU_B[0] +# 683 : azApXEh_A[1] +# 4684 : azApXEh_B[1] +# 3082 : azvNVSK_A[1] +# 7083 : azvNVSK_B[1] +# 3302 : bAFLwvJ_A[1] +# 7303 : bAFLwvJ_B[1] +# 765 : bARteyG_A[1] +# 4766 : bARteyG_B[1] +# 2455 : bApBbGm_A[0] +# 6456 : bApBbGm_B[0] +# 1337 : bBmSdRn_A[0] +# 5338 : bBmSdRn_B[0] +# 799 : bCOZYOQ_A[1] +# 4800 : bCOZYOQ_B[1] +# 1640 : bCrRIMk_A[0] +# 5641 : bCrRIMk_B[0] +# 2437 : bFqzqfO_A[1] +# 6438 : bFqzqfO_B[1] +# 1862 : bGSOiNP_A[1] +# 5863 : bGSOiNP_B[1] +# 3564 : bJpJVOB_A[0] +# 7565 : bJpJVOB_B[0] +# 3140 : bJujXuR_A[1] +# 7141 : bJujXuR_B[1] +# 615 : bKzzAWn_A[1] +# 4616 : bKzzAWn_B[1] +# 3178 : bLDUuWF_A[0] +# 7179 : bLDUuWF_B[0] +# 1287 : bLeyJNe_A[0] +# 5288 : bLeyJNe_B[0] +# 3343 : bLgKvei_A[0] +# 7344 : bLgKvei_B[0] +# 3915 : bMRKBoA_A[0] +# 7916 : bMRKBoA_B[0] +# 1883 : bMUEQAB_A[0] +# 5884 : bMUEQAB_B[0] +# 3152 : bNfSkLr_A[1] +# 7153 : bNfSkLr_B[1] +# 3134 : bOVsAwb_A[0] +# 7135 : bOVsAwb_B[0] +# 2857 : bOeNnWO_A[0] +# 6858 : bOeNnWO_B[0] +# 1196 : bOkHAms_A[0] +# 5197 : bOkHAms_B[0] +# 333 : bOtftvD_A[1] +# 4334 : bOtftvD_B[1] +# 2726 : bQpqLJr_A[1] +# 6727 : bQpqLJr_B[1] +# 2484 : bQyBcuy_A[1] +# 6485 : bQyBcuy_B[1] +# 1675 : bRMlgfb_A[1] +# 5676 : bRMlgfb_B[1] +# 1845 : bRmRHUX_A[0] +# 5846 : bRmRHUX_B[0] +# 3870 : bUgFsEB_A[1] +# 7871 : bUgFsEB_B[1] +# 554 : bVEmnLC_A[1] +# 4555 : bVEmnLC_B[1] +# 3929 : bVWlvTj_A[1] +# 7930 : bVWlvTj_B[1] +# 911 : bVYSCeX_A[0] +# 4912 : bVYSCeX_B[0] +# 3115 : bVgapEn_A[1] +# 7116 : bVgapEn_B[1] +# 917 : bYIXYrX_A[0] +# 4918 : bYIXYrX_B[0] +# 1393 : bYbwhlN_A[0] +# 5394 : bYbwhlN_B[0] +# 3310 : bZcsGcF_A[1] +# 7311 : bZcsGcF_B[1] +# 3212 : bafasjV_A[0] +# 7213 : bafasjV_B[0] +# 1298 : bbcHKPN_A[0] +# 5299 : bbcHKPN_B[0] +# 2989 : bcAwDcz_A[0] +# 6990 : bcAwDcz_B[0] +# 356 : bdOkpsK_A[1] +# 4357 : bdOkpsK_B[1] +# 760 : beVvHnk_A[0] +# 4761 : beVvHnk_B[0] +# 3130 : beeVdwR_A[0] +# 7131 : beeVdwR_B[0] +# 619 : bemWqes_A[0] +# 4620 : bemWqes_B[0] +# 816 : bemgFFE_A[0] +# 4817 : bemgFFE_B[0] +# 2376 : bewFYgG_A[1] +# 6377 : bewFYgG_B[1] +# 546 : bfSEEXm_A[0] +# 4547 : bfSEEXm_B[0] +# 1708 : bgcjrhC_A[1] +# 5709 : bgcjrhC_B[1] +# 2399 : bhlEYeq_A[0] +# 6400 : bhlEYeq_B[0] +# 2230 : bhoaGOX_A[1] +# 6231 : bhoaGOX_B[1] +# 2740 : bhxgdyo_A[1] +# 6741 : bhxgdyo_B[1] +# 3080 : biQawRl_A[1] +# 7081 : biQawRl_B[1] +# 1793 : bkHQdui_A[0] +# 5794 : bkHQdui_B[0] +# 1210 : bkQhLiB_A[1] +# 5211 : bkQhLiB_B[1] +# 3961 : bkoXJzQ_A[0] +# 7962 : bkoXJzQ_B[0] +# 301 : bkxVzRj_A[1] +# 4302 : bkxVzRj_B[1] +# 2210 : bmfFODe_A[0] +# 6211 : bmfFODe_B[0] +# 3497 : bmrlQxE_A[0] +# 7498 : bmrlQxE_B[0] +# 2912 : bnnjLpQ_A[1] +# 6913 : bnnjLpQ_B[1] +# 1378 : bokYZTt_A[0] +# 5379 : bokYZTt_B[0] +# 1972 : bozxpGI_A[0] +# 5973 : bozxpGI_B[0] +# 3375 : bplVWtb_A[0] +# 7376 : bplVWtb_B[0] +# 660 : bunZtsC_A[0] +# 4661 : bunZtsC_B[0] +# 3098 : bwiGEAQ_A[0] +# 7099 : bwiGEAQ_B[0] +# 3602 : bxscXkA_A[1] +# 7603 : bxscXkA_B[1] +# 57 : byUTlmD_A[1] +# 4058 : byUTlmD_B[1] +# 3018 : cAUJGwi_A[1] +# 7019 : cAUJGwi_B[1] +# 3334 : cAUpSqS_A[1] +# 7335 : cAUpSqS_B[1] +# 2981 : cBDpoVd_A[1] +# 6982 : cBDpoVd_B[1] +# 3903 : cBKhTNd_A[0] +# 7904 : cBKhTNd_B[0] +# 3 : cBPPrQy_A[1] +# 4004 : cBPPrQy_B[1] +# 1342 : cBbXEUq_A[1] +# 5343 : cBbXEUq_B[1] +# 2017 : cBdeXng_A[0] +# 6018 : cBdeXng_B[0] +# 716 : cBicmDP_A[0] +# 4717 : cBicmDP_B[0] +# 313 : cCefFdt_A[0] +# 4314 : cCefFdt_B[0] +# 682 : cCmsDLi_A[1] +# 4683 : cCmsDLi_B[1] +# 2325 : cDasTFg_A[1] +# 6326 : cDasTFg_B[1] +# 2197 : cFSycYV_A[0] +# 6198 : cFSycYV_B[0] +# 367 : cGjoZSQ_A[0] +# 4368 : cGjoZSQ_B[0] +# 916 : cHPHUMi_A[0] +# 4917 : cHPHUMi_B[0] +# 2072 : cIJdKjH_A[0] +# 6073 : cIJdKjH_B[0] +# 902 : cISthTa_A[0] +# 4903 : cISthTa_B[0] +# 335 : cJVuKqb_A[0] +# 4336 : cJVuKqb_B[0] +# 3520 : cKqIKkK_A[1] +# 7521 : cKqIKkK_B[1] +# 3806 : cLBQtRp_A[1] +# 7807 : cLBQtRp_B[1] +# 814 : cLMgwhU_A[0] +# 4815 : cLMgwhU_B[0] +# 2259 : cMDJlog_A[0] +# 6260 : cMDJlog_B[0] +# 611 : cMhFCkZ_A[1] +# 4612 : cMhFCkZ_B[1] +# 3203 : cMlTsTn_A[0] +# 7204 : cMlTsTn_B[0] +# 2449 : cNJoYcl_A[1] +# 6450 : cNJoYcl_B[1] +# 1712 : cNKOzwu_A[0] +# 5713 : cNKOzwu_B[0] +# 821 : cNscuBD_A[0] +# 4822 : cNscuBD_B[0] +# 3131 : cNusniQ_A[0] +# 7132 : cNusniQ_B[0] +# 2625 : cQIKXSS_A[1] +# 6626 : cQIKXSS_B[1] +# 1669 : cQdvydI_A[0] +# 5670 : cQdvydI_B[0] +# 3453 : cQsoTlz_A[0] +# 7454 : cQsoTlz_B[0] +# 863 : cUDRBvu_A[1] +# 4864 : cUDRBvu_B[1] +# 1118 : cUvHOiv_A[1] +# 5119 : cUvHOiv_B[1] +# 316 : cWEcKub_A[1] +# 4317 : cWEcKub_B[1] +# 2777 : cWkebMP_A[0] +# 6778 : cWkebMP_B[0] +# 2439 : cYdYqTu_A[0] +# 6440 : cYdYqTu_B[0] +# 1666 : cYeGHKA_A[1] +# 5667 : cYeGHKA_B[1] +# 1720 : cYxkiRx_A[0] +# 5721 : cYxkiRx_B[0] +# 3378 : cZONBpo_A[1] +# 7379 : cZONBpo_B[1] +# 3914 : cZQeVxs_A[0] +# 7915 : cZQeVxs_B[0] +# 1877 : cZiZGXg_A[1] +# 5878 : cZiZGXg_B[1] +# 3386 : caNjgCd_A[1] +# 7387 : caNjgCd_B[1] +# 3496 : caRLPnD_A[0] +# 7497 : caRLPnD_B[0] +# 1186 : caRlpnn_A[0] +# 5187 : caRlpnn_B[0] +# 3062 : caxgwLl_A[0] +# 7063 : caxgwLl_B[0] +# 2026 : cbOLZDF_A[1] +# 6027 : cbOLZDF_B[1] +# 1006 : cbZHDgk_A[1] +# 5007 : cbZHDgk_B[1] +# 3596 : cbntTQW_A[1] +# 7597 : cbntTQW_B[1] +# 3601 : ccJXOHf_A[1] +# 7602 : ccJXOHf_B[1] +# 2138 : ccVvevw_A[0] +# 6139 : ccVvevw_B[0] +# 831 : cdCnjfE_A[1] +# 4832 : cdCnjfE_B[1] +# 2931 : cfIBBCM_A[0] +# 6932 : cfIBBCM_B[0] +# 3008 : ciddWSX_A[1] +# 7009 : ciddWSX_B[1] +# 398 : ckAVTph_A[1] +# 4399 : ckAVTph_B[1] +# 3676 : ckkATUF_A[1] +# 7677 : ckkATUF_B[1] +# 3172 : ckyVvBm_A[1] +# 7173 : ckyVvBm_B[1] +# 969 : cljIwrC_A[1] +# 4970 : cljIwrC_B[1] +# 42 : cnZPYqp_A[0] +# 4043 : cnZPYqp_B[0] +# 2079 : coWHjIG_A[0] +# 6080 : coWHjIG_B[0] +# 2532 : cpfBaiX_A[0] +# 6533 : cpfBaiX_B[0] +# 1823 : cpvjXmJ_A[0] +# 5824 : cpvjXmJ_B[0] +# 3457 : cqLoMRb_A[0] +# 7458 : cqLoMRb_B[0] +# 1834 : crVoaHT_A[0] +# 5835 : crVoaHT_B[0] +# 612 : crwvmvk_A[1] +# 4613 : crwvmvk_B[1] +# 2000 : csaIWrV_A[0] +# 6001 : csaIWrV_B[0] +# 3352 : ctaFlVL_A[0] +# 7353 : ctaFlVL_B[0] +# 2670 : cttxKfS_A[1] +# 6671 : cttxKfS_B[1] +# 15 : cuAwNss_A[0] +# 4016 : cuAwNss_B[0] +# 2488 : cuCZNiC_A[1] +# 6489 : cuCZNiC_B[1] +# 3825 : cuOqMZQ_A[0] +# 7826 : cuOqMZQ_B[0] +# 3123 : cvAsYae_A[0] +# 7124 : cvAsYae_B[0] +# 176 : cvZLYPj_A[0] +# 4177 : cvZLYPj_B[0] +# 2228 : cwhnDKT_A[1] +# 6229 : cwhnDKT_B[1] +# 2899 : cxqRSgR_A[0] +# 6900 : cxqRSgR_B[0] +# 1805 : cyAkwta_A[0] +# 5806 : cyAkwta_B[0] +# 1271 : cyKfCCw_A[1] +# 5272 : cyKfCCw_B[1] +# 2749 : czCUBCx_A[1] +# 6750 : czCUBCx_B[1] +# 2094 : czZpGpR_A[0] +# 6095 : czZpGpR_B[0] +# 491 : czebiMc_A[1] +# 4492 : czebiMc_B[1] +# 91 : dCVXXic_A[0] +# 4092 : dCVXXic_B[0] +# 3580 : dCeKaTy_A[0] +# 7581 : dCeKaTy_B[0] +# 603 : dEPYNMx_A[1] +# 4604 : dEPYNMx_B[1] +# 1490 : dEfsrwG_A[0] +# 5491 : dEfsrwG_B[0] +# 1603 : dEuAkFn_A[0] +# 5604 : dEuAkFn_B[0] +# 416 : dEyrdjr_A[0] +# 4417 : dEyrdjr_B[0] +# 2480 : dGYyqav_A[0] +# 6481 : dGYyqav_B[0] +# 1322 : dGgUgLD_A[0] +# 5323 : dGgUgLD_B[0] +# 2513 : dGjashw_A[1] +# 6514 : dGjashw_B[1] +# 486 : dHEMNai_A[0] +# 4487 : dHEMNai_B[0] +# 3287 : dHwMEJv_A[0] +# 7288 : dHwMEJv_B[0] +# 482 : dJallTO_A[1] +# 4483 : dJallTO_B[1] +# 1624 : dKsfxzz_A[1] +# 5625 : dKsfxzz_B[1] +# 3133 : dLbfSMO_A[0] +# 7134 : dLbfSMO_B[0] +# 659 : dMRsqOG_A[0] +# 4660 : dMRsqOG_B[0] +# 226 : dNgzZAB_A[0] +# 4227 : dNgzZAB_B[0] +# 2902 : dOQQqfX_A[1] +# 6903 : dOQQqfX_B[1] +# 670 : dRgFgRl_A[0] +# 4671 : dRgFgRl_B[0] +# 2618 : dSPNlCF_A[1] +# 6619 : dSPNlCF_B[1] +# 132 : dTziUdt_A[1] +# 4133 : dTziUdt_B[1] +# 3614 : dUccWFi_A[1] +# 7615 : dUccWFi_B[1] +# 570 : dWXFpFt_A[1] +# 4571 : dWXFpFt_B[1] +# 3415 : dYJJZNN_A[0] +# 7416 : dYJJZNN_B[0] +# 1537 : dYKQkLB_A[0] +# 5538 : dYKQkLB_B[0] +# 103 : dYQJoeJ_A[0] +# 4104 : dYQJoeJ_B[0] +# 1286 : dZhMNLl_A[0] +# 5287 : dZhMNLl_B[0] +# 1185 : daDzakb_A[1] +# 5186 : daDzakb_B[1] +# 1607 : dalEnrm_A[0] +# 5608 : dalEnrm_B[0] +# 753 : dbFqRlg_A[1] +# 4754 : dbFqRlg_B[1] +# 2116 : dbqbSfU_A[0] +# 6117 : dbqbSfU_B[0] +# 420 : dcuYuMC_A[1] +# 4421 : dcuYuMC_B[1] +# 3674 : dedFtZZ_A[1] +# 7675 : dedFtZZ_B[1] +# 401 : dfRHQyc_A[1] +# 4402 : dfRHQyc_B[1] +# 1556 : dfUypeW_A[1] +# 5557 : dfUypeW_B[1] +# 1276 : dgFsbhi_A[0] +# 5277 : dgFsbhi_B[0] +# 1633 : dgiPlDy_A[1] +# 5634 : dgiPlDy_B[1] +# 2794 : dgmNFVa_A[1] +# 6795 : dgmNFVa_B[1] +# 736 : dhWxkWK_A[1] +# 4737 : dhWxkWK_B[1] +# 1273 : dhoukPQ_A[0] +# 5274 : dhoukPQ_B[0] +# 1112 : diAtkNv_A[1] +# 5113 : diAtkNv_B[1] +# 3980 : diBkrwr_A[0] +# 7981 : diBkrwr_B[0] +# 3685 : didkYvW_A[1] +# 7686 : didkYvW_B[1] +# 3349 : dikrQgT_A[0] +# 7350 : dikrQgT_B[0] +# 2502 : djparYc_A[0] +# 6503 : djparYc_B[0] +# 1903 : djqCoLf_A[0] +# 5904 : djqCoLf_B[0] +# 2805 : dkaaAPl_A[0] +# 6806 : dkaaAPl_B[0] +# 2852 : dkczhPq_A[1] +# 6853 : dkczhPq_B[1] +# 2764 : dlZzZdp_A[0] +# 6765 : dlZzZdp_B[0] +# 1311 : dljUVfu_A[1] +# 5312 : dljUVfu_B[1] +# 2067 : dmdDekY_A[1] +# 6068 : dmdDekY_B[1] +# 1048 : dnhbWCx_A[1] +# 5049 : dnhbWCx_B[1] +# 3924 : doJQoPM_A[0] +# 7925 : doJQoPM_B[0] +# 913 : doTvfCv_A[1] +# 4914 : doTvfCv_B[1] +# 2851 : dolcoXZ_A[1] +# 6852 : dolcoXZ_B[1] +# 1768 : dpSNPbD_A[1] +# 5769 : dpSNPbD_B[1] +# 598 : dpssJRj_A[0] +# 4599 : dpssJRj_B[0] +# 3877 : drGkjJw_A[1] +# 7878 : drGkjJw_B[1] +# 590 : drOjxoF_A[0] +# 4591 : drOjxoF_B[0] +# 2297 : drqZsIV_A[0] +# 6298 : drqZsIV_B[0] +# 3084 : dtSMpZs_A[1] +# 7085 : dtSMpZs_B[1] +# 3734 : dtoIyim_A[0] +# 7735 : dtoIyim_B[0] +# 1402 : dtooYqm_A[0] +# 5403 : dtooYqm_B[0] +# 1643 : duPCzGd_A[1] +# 5644 : duPCzGd_B[1] +# 337 : dufgDZM_A[0] +# 4338 : dufgDZM_B[0] +# 1 : dummy_A[0] +# 4002 : dummy_B[0] +# 2538 : dvxepBR_A[1] +# 6539 : dvxepBR_B[1] +# 3626 : dvyJVnD_A[0] +# 7627 : dvyJVnD_B[0] +# 2585 : dwweKSn_A[0] +# 6586 : dwweKSn_B[0] +# 2274 : dwzPpww_A[1] +# 6275 : dwzPpww_B[1] +# 1204 : dxTUyWf_A[1] +# 5205 : dxTUyWf_B[1] +# 1245 : dynqNjP_A[1] +# 5246 : dynqNjP_B[1] +# 1975 : eBEbfqv_A[0] +# 5976 : eBEbfqv_B[0] +# 942 : eBhQlIW_A[0] +# 4943 : eBhQlIW_B[0] +# 986 : eDiORNF_A[1] +# 4987 : eDiORNF_B[1] +# 573 : eDqhJXj_A[0] +# 4574 : eDqhJXj_B[0] +# 3544 : eEWydKi_A[1] +# 7545 : eEWydKi_B[1] +# 1089 : eEsCkwf_A[1] +# 5090 : eEsCkwf_B[1] +# 2686 : eFRcQOC_A[0] +# 6687 : eFRcQOC_B[0] +# 3226 : eFeXXrj_A[0] +# 7227 : eFeXXrj_B[0] +# 296 : eFzseah_A[1] +# 4297 : eFzseah_B[1] +# 1435 : eGsBhqr_A[0] +# 5436 : eGsBhqr_B[0] +# 2457 : eGwckHX_A[1] +# 6458 : eGwckHX_B[1] +# 2144 : eHpslXk_A[0] +# 6145 : eHpslXk_B[0] +# 1939 : eKsnHEy_A[0] +# 5940 : eKsnHEy_B[0] +# 1100 : eLgEayO_A[0] +# 5101 : eLgEayO_B[0] +# 1943 : eMkrEKx_A[1] +# 5944 : eMkrEKx_B[1] +# 531 : eORIaKh_A[0] +# 4532 : eORIaKh_B[0] +# 2871 : ePImnYj_A[1] +# 6872 : ePImnYj_B[1] +# 2032 : ePuBaDS_A[0] +# 6033 : ePuBaDS_B[0] +# 2795 : eQCAxTM_A[0] +# 6796 : eQCAxTM_B[0] +# 3817 : eQWbdgJ_A[0] +# 7818 : eQWbdgJ_B[0] +# 1080 : eRtFNaD_A[0] +# 5081 : eRtFNaD_B[0] +# 2903 : eSJtoOb_A[0] +# 6904 : eSJtoOb_B[0] +# 2205 : eTtthHt_A[0] +# 6206 : eTtthHt_B[0] +# 3600 : eUQcFdU_A[1] +# 7601 : eUQcFdU_B[1] +# 2409 : eUhODkG_A[1] +# 6410 : eUhODkG_B[1] +# 3306 : eUhvoBz_A[1] +# 7307 : eUhvoBz_B[1] +# 2738 : eWZyvtk_A[0] +# 6739 : eWZyvtk_B[0] +# 77 : eWdEVKu_A[0] +# 4078 : eWdEVKu_B[0] +# 3732 : eWkrzCE_A[0] +# 7733 : eWkrzCE_B[0] +# 3645 : eXMevHh_A[0] +# 7646 : eXMevHh_B[0] +# 3239 : eXoIXeM_A[0] +# 7240 : eXoIXeM_B[0] +# 1673 : eXpSSae_A[0] +# 5674 : eXpSSae_B[0] +# 560 : eazMRUQ_A[1] +# 4561 : eazMRUQ_B[1] +# 3515 : ecpHXuq_A[1] +# 7516 : ecpHXuq_B[1] +# 606 : edfKTgI_A[1] +# 4607 : edfKTgI_B[1] +# 3055 : efRlfud_A[0] +# 7056 : efRlfud_B[0] +# 3385 : egllHHD_A[0] +# 7386 : egllHHD_B[0] +# 2937 : ehFCWgt_A[1] +# 6938 : ehFCWgt_B[1] +# 452 : ehWSoLO_A[1] +# 4453 : ehWSoLO_B[1] +# 1960 : eiQZqTa_A[0] +# 5961 : eiQZqTa_B[0] +# 3346 : eiiTKWE_A[0] +# 7347 : eiiTKWE_B[0] +# 1950 : eitPspp_A[0] +# 5951 : eitPspp_B[0] +# 2628 : eitdply_A[0] +# 6629 : eitdply_B[0] +# 1117 : eiudpSo_A[1] +# 5118 : eiudpSo_B[1] +# 2407 : ejFufhn_A[1] +# 6408 : ejFufhn_B[1] +# 3744 : ejKMtcY_A[0] +# 7745 : ejKMtcY_B[0] +# 1762 : ejSULDZ_A[1] +# 5763 : ejSULDZ_B[1] +# 2285 : ejnpRpY_A[1] +# 6286 : ejnpRpY_B[1] +# 3312 : ekWOEyg_A[1] +# 7313 : ekWOEyg_B[1] +# 839 : ekeikGW_A[0] +# 4840 : ekeikGW_B[0] +# 1175 : ekkWYGr_A[0] +# 5176 : ekkWYGr_B[0] +# 320 : elCYzAu_A[0] +# 4321 : elCYzAu_B[0] +# 2035 : elVOWzC_A[0] +# 6036 : elVOWzC_B[0] +# 3574 : elXZaVI_A[0] +# 7575 : elXZaVI_B[0] +# 3746 : elxqPxW_A[1] +# 7747 : elxqPxW_B[1] +# 3743 : empLIuF_A[0] +# 7744 : empLIuF_B[0] +# 1740 : enJJTDA_A[0] +# 5741 : enJJTDA_B[0] +# 1009 : enWvCSR_A[0] +# 5010 : enWvCSR_B[0] +# 358 : enauJXK_A[1] +# 4359 : enauJXK_B[1] +# 789 : enkCBSY_A[1] +# 4790 : enkCBSY_B[1] +# 2576 : enpUEAB_A[1] +# 6577 : enpUEAB_B[1] +# 1602 : enryFsl_A[1] +# 5603 : enryFsl_B[1] +# 16 : epLqtpN_A[0] +# 4017 : epLqtpN_B[0] +# 373 : epVXrXx_A[0] +# 4374 : epVXrXx_B[0] +# 72 : epwdrid_A[1] +# 4073 : epwdrid_B[1] +# 2271 : eqJZWHp_A[0] +# 6272 : eqJZWHp_B[0] +# 3666 : esdNJiV_A[1] +# 7667 : esdNJiV_B[1] +# 3592 : etWviLg_A[1] +# 7593 : etWviLg_B[1] +# 2215 : euZqPQt_A[1] +# 6216 : euZqPQt_B[1] +# 2217 : eumOLrt_A[0] +# 6218 : eumOLrt_B[0] +# 2163 : euqGTbm_A[0] +# 6164 : euqGTbm_B[0] +# 1674 : evBcVrr_A[0] +# 5675 : evBcVrr_B[0] +# 3097 : evkdjZk_A[0] +# 7098 : evkdjZk_B[0] +# 2327 : evsHCbv_A[0] +# 6328 : evsHCbv_B[0] +# 516 : evxCCvn_A[0] +# 4517 : evxCCvn_B[0] +# 2681 : ewcqIfW_A[1] +# 6682 : ewcqIfW_B[1] +# 3446 : ewtXefe_A[1] +# 7447 : ewtXefe_B[1] +# 2264 : ewxSmvC_A[0] +# 6265 : ewxSmvC_B[0] +# 1928 : ezLWDRL_A[0] +# 5929 : ezLWDRL_B[0] +# 3428 : fAdFvOz_A[1] +# 7429 : fAdFvOz_B[1] +# 365 : fAnHGhe_A[1] +# 4366 : fAnHGhe_B[1] +# 3868 : fAvPdSN_A[0] +# 7869 : fAvPdSN_B[0] +# 1334 : fBMiOeN_A[1] +# 5335 : fBMiOeN_B[1] +# 2420 : fBRlsZx_A[1] +# 6421 : fBRlsZx_B[1] +# 967 : fCMubKc_A[0] +# 4968 : fCMubKc_B[0] +# 3275 : fCkaLvF_A[0] +# 7276 : fCkaLvF_B[0] +# 3830 : fDIFkaY_A[1] +# 7831 : fDIFkaY_B[1] +# 2792 : fDgxcwj_A[1] +# 6793 : fDgxcwj_B[1] +# 3102 : fDoKVFJ_A[0] +# 7103 : fDoKVFJ_B[0] +# 3220 : fDxyUuJ_A[1] +# 7221 : fDxyUuJ_B[1] +# 3394 : fFFKVEe_A[1] +# 7395 : fFFKVEe_B[1] +# 2212 : fGnCSFb_A[1] +# 6213 : fGnCSFb_B[1] +# 3568 : fHxlaFW_A[1] +# 7569 : fHxlaFW_B[1] +# 3898 : fICscql_A[0] +# 7899 : fICscql_B[0] +# 2359 : fIFbZfF_A[0] +# 6360 : fIFbZfF_B[0] +# 2810 : fIedYMF_A[0] +# 6811 : fIedYMF_B[0] +# 587 : fIylYgK_A[1] +# 4588 : fIylYgK_B[1] +# 1682 : fJoprdS_A[1] +# 5683 : fJoprdS_B[1] +# 1338 : fJxbpIp_A[1] +# 5339 : fJxbpIp_B[1] +# 1159 : fKYltEJ_A[1] +# 5160 : fKYltEJ_B[1] +# 3850 : fLfNXOP_A[1] +# 7851 : fLfNXOP_B[1] +# 1030 : fNqzTcS_A[0] +# 5031 : fNqzTcS_B[0] +# 2822 : fOMAETt_A[1] +# 6823 : fOMAETt_B[1] +# 988 : fOUMLNQ_A[0] +# 4989 : fOUMLNQ_B[0] +# 1333 : fOoOTnD_A[0] +# 5334 : fOoOTnD_B[0] +# 1463 : fPhYjSb_A[0] +# 5464 : fPhYjSb_B[0] +# 1182 : fPtDqhN_A[1] +# 5183 : fPtDqhN_B[1] +# 1474 : fQQIuEd_A[0] +# 5475 : fQQIuEd_B[0] +# 3774 : fRPEZrf_A[1] +# 7775 : fRPEZrf_B[1] +# 2913 : fRfhudz_A[0] +# 6914 : fRfhudz_B[0] +# 3987 : fRwcPVt_A[1] +# 7988 : fRwcPVt_B[1] +# 794 : fSovBsE_A[1] +# 4795 : fSovBsE_B[1] +# 3804 : fSrrLte_A[0] +# 7805 : fSrrLte_B[0] +# 2078 : fTvogqP_A[1] +# 6079 : fTvogqP_B[1] +# 484 : fUKNbbU_A[0] +# 4485 : fUKNbbU_B[0] +# 2548 : fUjKcTB_A[0] +# 6549 : fUjKcTB_B[0] +# 2145 : fUmUCVe_A[1] +# 6146 : fUmUCVe_B[1] +# 2564 : fVGnTSA_A[0] +# 6565 : fVGnTSA_B[0] +# 2489 : fVRigjc_A[1] +# 6490 : fVRigjc_B[1] +# 1571 : fVqwedu_A[1] +# 5572 : fVqwedu_B[1] +# 2055 : fVzWaiW_A[1] +# 6056 : fVzWaiW_B[1] +# 2869 : fWZbyHg_A[1] +# 6870 : fWZbyHg_B[1] +# 32 : fWcPXTj_A[1] +# 4033 : fWcPXTj_B[1] +# 2042 : fWkBniF_A[0] +# 6043 : fWkBniF_B[0] +# 2530 : fXguVpn_A[1] +# 6531 : fXguVpn_B[1] +# 1283 : fYkxYmy_A[0] +# 5284 : fYkxYmy_B[0] +# 299 : fZJgujW_A[1] +# 4300 : fZJgujW_B[1] +# 3011 : fZXWZsd_A[1] +# 7012 : fZXWZsd_B[1] +# 1457 : fadPLny_A[0] +# 5458 : fadPLny_B[0] +# 3114 : fakUoIW_A[1] +# 7115 : fakUoIW_B[1] +# 3673 : fbJbDSY_A[1] +# 7674 : fbJbDSY_B[1] +# 3263 : fbsephB_A[0] +# 7264 : fbsephB_B[0] +# 2896 : fbzaotb_A[1] +# 6897 : fbzaotb_B[1] +# 2047 : fcDfLKH_A[0] +# 6048 : fcDfLKH_B[0] +# 3556 : fceWNgJ_A[1] +# 7557 : fceWNgJ_B[1] +# 271 : ffBfTwf_A[0] +# 4272 : ffBfTwf_B[0] +# 59 : fftcHtA_A[1] +# 4060 : fftcHtA_B[1] +# 325 : fgAykAh_A[1] +# 4326 : fgAykAh_B[1] +# 1070 : fgyuRkH_A[1] +# 5071 : fgyuRkH_B[1] +# 222 : fhlRYry_A[1] +# 4223 : fhlRYry_B[1] +# 2867 : fiAAGbI_A[0] +# 6868 : fiAAGbI_B[0] +# 3966 : fiBoxQi_A[1] +# 7967 : fiBoxQi_B[1] +# 1125 : fkIQtnf_A[0] +# 5126 : fkIQtnf_B[0] +# 3480 : fkPbzXQ_A[1] +# 7481 : fkPbzXQ_B[1] +# 2083 : fkbyPar_A[1] +# 6084 : fkbyPar_B[1] +# 2213 : flAtdJe_A[0] +# 6214 : flAtdJe_B[0] +# 826 : flCFwCr_A[1] +# 4827 : flCFwCr_B[1] +# 3198 : flFCotI_A[1] +# 7199 : flFCotI_B[1] +# 1555 : fnGAleM_A[0] +# 5556 : fnGAleM_B[0] +# 975 : fnTowtj_A[1] +# 4976 : fnTowtj_B[1] +# 2481 : fnhvTrh_A[1] +# 6482 : fnhvTrh_B[1] +# 3176 : fniNbeE_A[0] +# 7177 : fniNbeE_B[0] +# 2534 : fpHgjUm_A[0] +# 6535 : fpHgjUm_B[0] +# 3547 : fsUJXVQ_A[1] +# 7548 : fsUJXVQ_B[1] +# 1737 : fskySdp_A[1] +# 5738 : fskySdp_B[1] +# 2813 : fuZaCtc_A[1] +# 6814 : fuZaCtc_B[1] +# 2389 : fuuEAdd_A[0] +# 6390 : fuuEAdd_B[0] +# 2958 : fvHYBWN_A[1] +# 6959 : fvHYBWN_B[1] +# 1577 : fvaZCju_A[0] +# 5578 : fvaZCju_B[0] +# 169 : fvarSQR_A[1] +# 4170 : fvarSQR_B[1] +# 1581 : fyDQKrW_A[1] +# 5582 : fyDQKrW_B[1] +# 376 : fyHrvjF_A[1] +# 4377 : fyHrvjF_B[1] +# 3037 : fySRVHR_A[1] +# 7038 : fySRVHR_B[1] +# 2010 : fzHrExL_A[0] +# 6011 : fzHrExL_B[0] +# 2011 : fzZUXmV_A[0] +# 6012 : fzZUXmV_B[0] +# 3079 : gAQGWHE_A[0] +# 7080 : gAQGWHE_B[0] +# 1321 : gASoGLQ_A[0] +# 5322 : gASoGLQ_B[0] +# 3281 : gBlJWnM_A[1] +# 7282 : gBlJWnM_B[1] +# 314 : gBuHXJA_A[0] +# 4315 : gBuHXJA_B[0] +# 2106 : gCRVEMN_A[0] +# 6107 : gCRVEMN_B[0] +# 421 : gCyWsAk_A[0] +# 4422 : gCyWsAk_B[0] +# 3103 : gDrBYIR_A[0] +# 7104 : gDrBYIR_B[0] +# 460 : gEGKsnR_A[0] +# 4461 : gEGKsnR_B[0] +# 3719 : gFkPudQ_A[1] +# 7720 : gFkPudQ_B[1] +# 1433 : gHFLUFd_A[1] +# 5434 : gHFLUFd_B[1] +# 3472 : gHhmKpS_A[0] +# 7473 : gHhmKpS_B[0] +# 1267 : gHlZbsV_A[0] +# 5268 : gHlZbsV_B[0] +# 563 : gHnorpd_A[0] +# 4564 : gHnorpd_B[0] +# 909 : gHoXPlG_A[1] +# 4910 : gHoXPlG_B[1] +# 1176 : gIaMVlY_A[0] +# 5177 : gIaMVlY_B[0] +# 1343 : gJYDhnO_A[0] +# 5344 : gJYDhnO_B[0] +# 1165 : gKntdHl_A[1] +# 5166 : gKntdHl_B[1] +# 1888 : gMhGHjL_A[1] +# 5889 : gMhGHjL_B[1] +# 1659 : gMhjhoS_A[1] +# 5660 : gMhjhoS_B[1] +# 1313 : gOWYfyZ_A[1] +# 5314 : gOWYfyZ_B[1] +# 3191 : gOZCQAE_A[0] +# 7192 : gOZCQAE_B[0] +# 1836 : gOeVCHt_A[1] +# 5837 : gOeVCHt_B[1] +# 642 : gQDtbCU_A[0] +# 4643 : gQDtbCU_B[0] +# 2921 : gRTddSb_A[0] +# 6922 : gRTddSb_B[0] +# 2413 : gRoVrVs_A[1] +# 6414 : gRoVrVs_B[1] +# 3607 : gRunPlF_A[1] +# 7608 : gRunPlF_B[1] +# 20 : gSEpvJN_A[1] +# 4021 : gSEpvJN_B[1] +# 2057 : gSePEDX_A[1] +# 6058 : gSePEDX_B[1] +# 2268 : gSzmfyK_A[1] +# 6269 : gSzmfyK_B[1] +# 3266 : gTSJKNO_A[0] +# 7267 : gTSJKNO_B[0] +# 625 : gTsIbii_A[0] +# 4626 : gTsIbii_B[0] +# 2662 : gUhHVEC_A[0] +# 6663 : gUhHVEC_B[0] +# 1545 : gVNKmJq_A[1] +# 5546 : gVNKmJq_B[1] +# 2153 : gVXTASr_A[0] +# 6154 : gVXTASr_B[0] +# 3111 : gVxvJMF_A[1] +# 7112 : gVxvJMF_B[1] +# 208 : gWdEuiS_A[1] +# 4209 : gWdEuiS_B[1] +# 1234 : gZOxnHj_A[0] +# 5235 : gZOxnHj_B[0] +# 3895 : gZRSFap_A[0] +# 7896 : gZRSFap_B[0] +# 521 : gaAOJUi_A[1] +# 4522 : gaAOJUi_B[1] +# 3167 : gbTPQmb_A[1] +# 7168 : gbTPQmb_B[1] +# 433 : geGjxJU_A[0] +# 4434 : geGjxJU_B[0] +# 3836 : gfcvADJ_A[1] +# 7837 : gfcvADJ_B[1] +# 3188 : gfgEIKh_A[1] +# 7189 : gfgEIKh_B[1] +# 1086 : gfigTqL_A[1] +# 5087 : gfigTqL_B[1] +# 205 : ggNwKFD_A[1] +# 4206 : ggNwKFD_B[1] +# 2361 : ggTprcB_A[1] +# 6362 : ggTprcB_B[1] +# 201 : ggcuyna_A[1] +# 4202 : ggcuyna_B[1] +# 471 : ggspODg_A[0] +# 4472 : ggspODg_B[0] +# 3760 : ghEnLoe_A[1] +# 7761 : ghEnLoe_B[1] +# 1575 : ghajxvh_A[0] +# 5576 : ghajxvh_B[0] +# 2147 : ghleWcA_A[1] +# 6148 : ghleWcA_B[1] +# 3745 : gifGYQk_A[1] +# 7746 : gifGYQk_B[1] +# 2945 : gixQmHF_A[1] +# 6946 : gixQmHF_B[1] +# 1955 : gjuuquz_A[0] +# 5956 : gjuuquz_B[0] +# 58 : gjzrCtg_A[1] +# 4059 : gjzrCtg_B[1] +# 1108 : gkbTKVJ_A[0] +# 5109 : gkbTKVJ_B[0] +# 3175 : gknSNJs_A[0] +# 7176 : gknSNJs_B[0] +# 2273 : gkoqpFl_A[1] +# 6274 : gkoqpFl_B[1] +# 215 : glcXWGl_A[0] +# 4216 : glcXWGl_B[0] +# 374 : gmArxvl_A[1] +# 4375 : gmArxvl_B[1] +# 1895 : gnawfJc_A[0] +# 5896 : gnawfJc_B[0] +# 1595 : gncxbTk_A[0] +# 5596 : gncxbTk_B[0] +# 3513 : gniwLct_A[1] +# 7514 : gniwLct_B[1] +# 3963 : goyESWp_A[0] +# 7964 : goyESWp_B[0] +# 153 : gpqUkic_A[0] +# 4154 : gpqUkic_B[0] +# 3534 : gqFOvNR_A[0] +# 7535 : gqFOvNR_B[0] +# 2770 : greliLE_A[1] +# 6771 : greliLE_B[1] +# 2579 : gtdjekj_A[1] +# 6580 : gtdjekj_B[1] +# 3507 : gtinfpe_A[0] +# 7508 : gtinfpe_B[0] +# 1921 : guIitGS_A[1] +# 5922 : guIitGS_B[1] +# 1799 : gvBFdWj_A[0] +# 5800 : gvBFdWj_B[0] +# 1261 : gvDPCMz_A[1] +# 5262 : gvDPCMz_B[1] +# 1901 : gvJZWFg_A[1] +# 5902 : gvJZWFg_B[1] +# 3271 : gvSVcwg_A[1] +# 7272 : gvSVcwg_B[1] +# 2879 : gvfDJOb_A[1] +# 6880 : gvfDJOb_B[1] +# 173 : gwPXPzb_A[1] +# 4174 : gwPXPzb_B[1] +# 406 : gwXlSRh_A[0] +# 4407 : gwXlSRh_B[0] +# 126 : gxpyFLi_A[1] +# 4127 : gxpyFLi_B[1] +# 2125 : gyMlJci_A[1] +# 6126 : gyMlJci_B[1] +# 233 : gyzSntO_A[0] +# 4234 : gyzSntO_B[0] +# 172 : gzlKjEO_A[1] +# 4173 : gzlKjEO_B[1] +# 1525 : hAQqwSe_A[0] +# 5526 : hAQqwSe_B[0] +# 1184 : hAXCNjB_A[1] +# 5185 : hAXCNjB_B[1] +# 771 : hAkeHPE_A[0] +# 4772 : hAkeHPE_B[0] +# 3366 : hAkwhPp_A[0] +# 7367 : hAkwhPp_B[0] +# 3672 : hCiGAoH_A[0] +# 7673 : hCiGAoH_B[0] +# 2063 : hEaEzhR_A[0] +# 6064 : hEaEzhR_B[0] +# 1802 : hHGvnkJ_A[1] +# 5803 : hHGvnkJ_B[1] +# 447 : hHNjxOT_A[1] +# 4448 : hHNjxOT_B[1] +# 375 : hICHOwo_A[0] +# 4376 : hICHOwo_B[0] +# 3957 : hIIvWLR_A[1] +# 7958 : hIIvWLR_B[1] +# 3865 : hIUtEVz_A[0] +# 7866 : hIUtEVz_B[0] +# 3846 : hIhdozg_A[0] +# 7847 : hIhdozg_B[0] +# 3848 : hIwJeJL_A[0] +# 7849 : hIwJeJL_B[0] +# 3494 : hJLUqgt_A[1] +# 7495 : hJLUqgt_B[1] +# 3210 : hJzEewv_A[1] +# 7211 : hJzEewv_B[1] +# 673 : hKUnOLU_A[1] +# 4674 : hKUnOLU_B[1] +# 1250 : hLMKwFe_A[1] +# 5251 : hLMKwFe_B[1] +# 2021 : hLibXuT_A[0] +# 6022 : hLibXuT_B[0] +# 2189 : hMJQcqy_A[0] +# 6190 : hMJQcqy_B[0] +# 3651 : hMdLCeW_A[0] +# 7652 : hMdLCeW_B[0] +# 1533 : hMiXral_A[0] +# 5534 : hMiXral_B[0] +# 2893 : hNqtSRf_A[1] +# 6894 : hNqtSRf_B[1] +# 800 : hNtizEw_A[0] +# 4801 : hNtizEw_B[0] +# 1599 : hOBckiz_A[1] +# 5600 : hOBckiz_B[1] +# 1020 : hOgxyrD_A[1] +# 5021 : hOgxyrD_B[1] +# 1920 : hQxJsqW_A[1] +# 5921 : hQxJsqW_B[1] +# 3393 : hSWTEii_A[0] +# 7394 : hSWTEii_B[0] +# 2925 : hTffnME_A[1] +# 6926 : hTffnME_B[1] +# 727 : hWSFDWL_A[0] +# 4728 : hWSFDWL_B[0] +# 1190 : hWdOBMn_A[1] +# 5191 : hWdOBMn_B[1] +# 3032 : hXXwoyE_A[0] +# 7033 : hXXwoyE_B[0] +# 1565 : hYWdqUr_A[1] +# 5566 : hYWdqUr_B[1] +# 1212 : hYgPITn_A[1] +# 5213 : hYgPITn_B[1] +# 3395 : hZCwYMV_A[1] +# 7396 : hZCwYMV_B[1] +# 1255 : hZkvDmp_A[0] +# 5256 : hZkvDmp_B[0] +# 998 : haqZRIZ_A[0] +# 4999 : haqZRIZ_B[0] +# 2510 : hbJMeQo_A[0] +# 6511 : hbJMeQo_B[0] +# 3659 : hbgKQaB_A[1] +# 7660 : hbgKQaB_B[1] +# 2668 : hbxYcxN_A[0] +# 6669 : hbxYcxN_B[0] +# 2436 : hcObQtM_A[1] +# 6437 : hcObQtM_B[1] +# 1548 : hcysMyL_A[1] +# 5549 : hcysMyL_B[1] +# 3711 : hdNIEdp_A[1] +# 7712 : hdNIEdp_B[1] +# 3452 : hdTJGaf_A[0] +# 7453 : hdTJGaf_B[0] +# 3341 : hdqiPGt_A[0] +# 7342 : hdqiPGt_B[0] +# 3687 : herWUnS_A[0] +# 7688 : herWUnS_B[0] +# 2307 : heriVjw_A[0] +# 6308 : heriVjw_B[0] +# 30 : hfJgwnk_A[0] +# 4031 : hfJgwnk_B[0] +# 1374 : hfqqGAV_A[0] +# 5375 : hfqqGAV_B[0] +# 3866 : hfzGhKG_A[0] +# 7867 : hfzGhKG_B[0] +# 3232 : hgoDmLc_A[1] +# 7233 : hgoDmLc_B[1] +# 1844 : hjgGBla_A[0] +# 5845 : hjgGBla_B[0] +# 2385 : hkeMGMD_A[0] +# 6386 : hkeMGMD_B[0] +# 1745 : hlBRBUy_A[0] +# 5746 : hlBRBUy_B[0] +# 1000 : hlCLFvP_A[0] +# 5001 : hlCLFvP_B[0] +# 122 : hlHBNWP_A[0] +# 4123 : hlHBNWP_B[0] +# 3977 : hoFfsEe_A[1] +# 7978 : hoFfsEe_B[1] +# 70 : hoHcHLf_A[0] +# 4071 : hoHcHLf_B[0] +# 3311 : honlthV_A[1] +# 7312 : honlthV_B[1] +# 2374 : houeHqD_A[1] +# 6375 : houeHqD_B[1] +# 3189 : hpKinrt_A[0] +# 7190 : hpKinrt_B[0] +# 3454 : hpZHIyP_A[0] +# 7455 : hpZHIyP_B[0] +# 1569 : hpoYSHI_A[1] +# 5570 : hpoYSHI_B[1] +# 1107 : hpxXXNb_A[0] +# 5108 : hpxXXNb_B[0] +# 1262 : hqYWtpP_A[1] +# 5263 : hqYWtpP_B[1] +# 779 : hrzWMcg_A[0] +# 4780 : hrzWMcg_B[0] +# 626 : hsYPTOR_A[1] +# 4627 : hsYPTOR_B[1] +# 3829 : htesqBF_A[0] +# 7830 : htesqBF_B[0] +# 3418 : huYwIgE_A[0] +# 7419 : huYwIgE_B[0] +# 2932 : huywibV_A[0] +# 6933 : huywibV_B[0] +# 2154 : hvMBIdW_A[1] +# 6155 : hvMBIdW_B[1] +# 1724 : hvczWuB_A[0] +# 5725 : hvczWuB_B[0] +# 3874 : hyauOtA_A[0] +# 7875 : hyauOtA_B[0] +# 1987 : hzUuQnK_A[0] +# 5988 : hzUuQnK_B[0] +# 1644 : iABaREw_A[1] +# 5645 : iABaREw_B[1] +# 819 : iARQUBY_A[0] +# 4820 : iARQUBY_B[0] +# 2720 : iAfNmNX_A[1] +# 6721 : iAfNmNX_B[1] +# 873 : iBiGrQL_A[1] +# 4874 : iBiGrQL_B[1] +# 950 : iBnXDLw_A[0] +# 4951 : iBnXDLw_B[0] +# 473 : iBnfGPU_A[1] +# 4474 : iBnfGPU_B[1] +# 653 : iCDjfNL_A[1] +# 4654 : iCDjfNL_B[1] +# 194 : iEzNHJR_A[0] +# 4195 : iEzNHJR_B[0] +# 2190 : iGAlqyM_A[1] +# 6191 : iGAlqyM_B[1] +# 282 : iGBTwSr_A[1] +# 4283 : iGBTwSr_B[1] +# 1445 : iGDTrFK_A[0] +# 5446 : iGDTrFK_B[0] +# 29 : iGgWjIq_A[1] +# 4030 : iGgWjIq_B[1] +# 230 : iHAxGGJ_A[0] +# 4231 : iHAxGGJ_B[0] +# 3174 : iHybAPK_A[1] +# 7175 : iHybAPK_B[1] +# 3892 : iIbhhgf_A[0] +# 7893 : iIbhhgf_B[0] +# 2663 : iJDBKWl_A[1] +# 6664 : iJDBKWl_B[1] +# 638 : iJdlDhE_A[0] +# 4639 : iJdlDhE_B[0] +# 2014 : iJrYnvP_A[1] +# 6015 : iJrYnvP_B[1] +# 457 : iKwGLUb_A[0] +# 4458 : iKwGLUb_B[0] +# 2826 : iMaQkVb_A[0] +# 6827 : iMaQkVb_B[0] +# 1109 : iNRnEij_A[0] +# 5110 : iNRnEij_B[0] +# 202 : iNqBmcb_A[0] +# 4203 : iNqBmcb_B[0] +# 2238 : iPcYdXE_A[0] +# 6239 : iPcYdXE_B[0] +# 3213 : iPjxgPQ_A[1] +# 7214 : iPjxgPQ_B[1] +# 1661 : iQpEynO_A[1] +# 5662 : iQpEynO_B[1] +# 2658 : iRDmUen_A[0] +# 6659 : iRDmUen_B[0] +# 1541 : iRPUHdX_A[0] +# 5542 : iRPUHdX_B[0] +# 2752 : iRkiRhx_A[1] +# 6753 : iRkiRhx_B[1] +# 3423 : iTgCcqe_A[0] +# 7424 : iTgCcqe_B[0] +# 326 : iVBYgSB_A[0] +# 4327 : iVBYgSB_B[0] +# 3347 : iVFzZZL_A[0] +# 7348 : iVFzZZL_B[0] +# 1031 : iVGWQex_A[1] +# 5032 : iVGWQex_B[1] +# 22 : iXBeuTA_A[0] +# 4023 : iXBeuTA_B[0] +# 65 : iXQRzms_A[0] +# 4066 : iXQRzms_B[0] +# 1934 : iZBFTNO_A[1] +# 5935 : iZBFTNO_B[1] +# 110 : iZWpDdW_A[1] +# 4111 : iZWpDdW_B[1] +# 2546 : iZtGvCk_A[0] +# 6547 : iZtGvCk_B[0] +# 3121 : iaCCzNC_A[1] +# 7122 : iaCCzNC_B[1] +# 711 : ibWQCkD_A[1] +# 4712 : ibWQCkD_B[1] +# 206 : icURafE_A[1] +# 4207 : icURafE_B[1] +# 2203 : idocFtf_A[1] +# 6204 : idocFtf_B[1] +# 2503 : ifpFjUQ_A[0] +# 6504 : ifpFjUQ_B[0] +# 2624 : igaQpbO_A[0] +# 6625 : igaQpbO_B[0] +# 646 : igjrTfd_A[1] +# 4647 : igjrTfd_B[1] +# 896 : igpbZGa_A[1] +# 4897 : igpbZGa_B[1] +# 2479 : ihTQvMx_A[0] +# 6480 : ihTQvMx_B[0] +# 3474 : iiEeEjr_A[1] +# 7475 : iiEeEjr_B[1] +# 525 : iiIxWtY_A[0] +# 4526 : iiIxWtY_B[0] +# 945 : ijBhlqT_A[1] +# 4946 : ijBhlqT_B[1] +# 630 : ijELFUm_A[0] +# 4631 : ijELFUm_B[0] +# 87 : ijNPduZ_A[0] +# 4088 : ijNPduZ_B[0] +# 2392 : ikJqjvb_A[1] +# 6393 : ikJqjvb_B[1] +# 2377 : ikSsUoN_A[0] +# 6378 : ikSsUoN_B[0] +# 1238 : ikkNNPu_A[0] +# 5239 : ikkNNPu_B[0] +# 1461 : imPHAlz_A[1] +# 5462 : imPHAlz_B[1] +# 3551 : imSXzpH_A[1] +# 7552 : imSXzpH_B[1] +# 1301 : inSuVTf_A[0] +# 5302 : inSuVTf_B[0] +# 720 : inxyPLr_A[0] +# 4721 : inxyPLr_B[0] +# 526 : ioxmaDY_A[0] +# 4527 : ioxmaDY_B[0] +# 1316 : ipFlafe_A[1] +# 5317 : ipFlafe_B[1] +# 427 : ipxVPjo_A[0] +# 4428 : ipxVPjo_B[0] +# 1373 : iqGKurw_A[0] +# 5374 : iqGKurw_B[0] +# 3560 : iqoaVwb_A[0] +# 7561 : iqoaVwb_B[0] +# 2396 : irnZhuj_A[1] +# 6397 : irnZhuj_B[1] +# 724 : isGoBhk_A[1] +# 4725 : isGoBhk_B[1] +# 1259 : isQedzG_A[1] +# 5260 : isQedzG_B[1] +# 1133 : isqpOaH_A[0] +# 5134 : isqpOaH_B[0] +# 2244 : isuUxhV_A[0] +# 6245 : isuUxhV_B[0] +# 2785 : itVrxtD_A[1] +# 6786 : itVrxtD_B[1] +# 292 : iuAVZMa_A[1] +# 4293 : iuAVZMa_B[1] +# 1058 : iulnXIc_A[1] +# 5059 : iulnXIc_B[1] +# 2830 : ivuHORP_A[1] +# 6831 : ivuHORP_B[1] +# 80 : ivwMPsO_A[0] +# 4081 : ivwMPsO_B[0] +# 170 : ixzxmvk_A[0] +# 4171 : ixzxmvk_B[0] +# 2249 : iyExnPT_A[1] +# 6250 : iyExnPT_B[1] +# 2936 : izDAedR_A[1] +# 6937 : izDAedR_B[1] +# 2917 : jAfwtWi_A[1] +# 6918 : jAfwtWi_B[1] +# 2186 : jBjbCUZ_A[1] +# 6187 : jBjbCUZ_B[1] +# 583 : jBpNSTw_A[1] +# 4584 : jBpNSTw_B[1] +# 435 : jBxTCvQ_A[1] +# 4436 : jBxTCvQ_B[1] +# 1495 : jGigJFs_A[0] +# 5496 : jGigJFs_B[0] +# 7 : jHBpLSi_A[0] +# 4008 : jHBpLSi_B[0] +# 2877 : jHHPoBA_A[1] +# 6878 : jHHPoBA_B[1] +# 990 : jHcynvH_A[1] +# 4991 : jHcynvH_B[1] +# 303 : jJXPUzq_A[1] +# 4304 : jJXPUzq_B[1] +# 2694 : jKvOYXM_A[0] +# 6695 : jKvOYXM_B[0] +# 171 : jLAvyAt_A[1] +# 4172 : jLAvyAt_B[1] +# 1139 : jLozjZX_A[0] +# 5140 : jLozjZX_B[0] +# 1736 : jLqbNSy_A[1] +# 5737 : jLqbNSy_B[1] +# 3127 : jMUmrqm_A[0] +# 7128 : jMUmrqm_B[0] +# 3050 : jMiZIOg_A[0] +# 7051 : jMiZIOg_B[0] +# 2326 : jMuvIve_A[1] +# 6327 : jMuvIve_B[1] +# 2706 : jNLIIMx_A[1] +# 6707 : jNLIIMx_B[1] +# 924 : jOUCOWk_A[1] +# 4925 : jOUCOWk_B[1] +# 3986 : jOhPaug_A[0] +# 7987 : jOhPaug_B[0] +# 1511 : jPCwXIS_A[0] +# 5512 : jPCwXIS_B[0] +# 1515 : jPxNDyQ_A[1] +# 5516 : jPxNDyQ_B[1] +# 193 : jQAleXW_A[1] +# 4194 : jQAleXW_B[1] +# 2907 : jQXMjCt_A[0] +# 6908 : jQXMjCt_B[0] +# 399 : jQZemHn_A[0] +# 4400 : jQZemHn_B[0] +# 2680 : jRiHWbx_A[1] +# 6681 : jRiHWbx_B[1] +# 3139 : jSIKWVf_A[0] +# 7140 : jSIKWVf_B[0] +# 2544 : jSOmMwh_A[1] +# 6545 : jSOmMwh_B[1] +# 158 : jTChaqv_A[0] +# 4159 : jTChaqv_B[0] +# 403 : jTUehxD_A[1] +# 4404 : jTUehxD_B[1] +# 174 : jTWltNj_A[1] +# 4175 : jTWltNj_B[1] +# 1778 : jWpMAqZ_A[1] +# 5779 : jWpMAqZ_B[1] +# 1900 : jXHlDSa_A[1] +# 5901 : jXHlDSa_B[1] +# 3223 : jXWpRow_A[1] +# 7224 : jXWpRow_B[1] +# 1054 : jXldnml_A[0] +# 5055 : jXldnml_B[0] +# 567 : jYhrgFo_A[0] +# 4568 : jYhrgFo_B[0] +# 2043 : jZIbJIj_A[1] +# 6044 : jZIbJIj_B[1] +# 511 : jaEFzLo_A[1] +# 4512 : jaEFzLo_B[1] +# 1917 : jatmMFW_A[0] +# 5918 : jatmMFW_B[0] +# 3541 : jcELPlV_A[1] +# 7542 : jcELPlV_B[1] +# 1945 : jcQLiyg_A[0] +# 5946 : jcQLiyg_B[0] +# 2269 : jcmdRZR_A[1] +# 6270 : jcmdRZR_B[1] +# 2086 : jdBEGVS_A[1] +# 6087 : jdBEGVS_B[1] +# 2555 : jebSyBI_A[1] +# 6556 : jebSyBI_B[1] +# 2168 : jekPhXH_A[0] +# 6169 : jekPhXH_B[0] +# 1593 : jeqjnPS_A[1] +# 5594 : jeqjnPS_B[1] +# 3683 : jfonDGx_A[0] +# 7684 : jfonDGx_B[0] +# 3487 : jgFpnmA_A[0] +# 7488 : jgFpnmA_B[0] +# 501 : jgQicgb_A[1] +# 4502 : jgQicgb_B[1] +# 340 : jhWoyRS_A[1] +# 4341 : jhWoyRS_B[1] +# 238 : jhaxutl_A[1] +# 4239 : jhaxutl_B[1] +# 2697 : jiBmugs_A[0] +# 6698 : jiBmugs_B[0] +# 2206 : jiFocfa_A[0] +# 6207 : jiFocfa_B[0] +# 3777 : jiLMzKQ_A[0] +# 7778 : jiLMzKQ_B[0] +# 2279 : jiRiWmx_A[0] +# 6280 : jiRiWmx_B[0] +# 3754 : jiRxNUj_A[1] +# 7755 : jiRxNUj_B[1] +# 2104 : jjEbSsK_A[0] +# 6105 : jjEbSsK_B[0] +# 2807 : jjbWAMO_A[1] +# 6808 : jjbWAMO_B[1] +# 1706 : jlNuFfR_A[1] +# 5707 : jlNuFfR_B[1] +# 1820 : jltBAKZ_A[0] +# 5821 : jltBAKZ_B[0] +# 890 : jnagVrB_A[0] +# 4891 : jnagVrB_B[0] +# 3350 : jnjgwUN_A[0] +# 7351 : jnjgwUN_B[0] +# 2855 : jnzzGyj_A[1] +# 6856 : jnzzGyj_B[1] +# 1889 : joYTvGi_A[1] +# 5890 : joYTvGi_B[1] +# 768 : joxTCxo_A[0] +# 4769 : joxTCxo_B[0] +# 2599 : jpDzYzW_A[0] +# 6600 : jpDzYzW_B[0] +# 1608 : jpmSBVC_A[0] +# 5609 : jpmSBVC_B[0] +# 2929 : jqBSNCc_A[0] +# 6930 : jqBSNCc_B[0] +# 955 : jqKVLbo_A[0] +# 4956 : jqKVLbo_B[0] +# 994 : jrJVDxY_A[0] +# 4995 : jrJVDxY_B[0] +# 425 : jriiYao_A[1] +# 4426 : jriiYao_B[1] +# 2353 : jrxFKlT_A[1] +# 6354 : jrxFKlT_B[1] +# 3124 : juGkQDt_A[1] +# 7125 : juGkQDt_B[1] +# 2669 : juYRgWk_A[1] +# 6670 : juYRgWk_B[1] +# 1623 : jundyAI_A[0] +# 5624 : jundyAI_B[0] +# 3584 : jupDkIC_A[0] +# 7585 : jupDkIC_B[0] +# 1188 : jvsrMgQ_A[0] +# 5189 : jvsrMgQ_B[0] +# 797 : jwaxULB_A[0] +# 4798 : jwaxULB_B[0] +# 2048 : jxVwtGT_A[0] +# 6049 : jxVwtGT_B[0] +# 2636 : jxobQpF_A[1] +# 6637 : jxobQpF_B[1] +# 1887 : jyMJEuR_A[0] +# 5888 : jyMJEuR_B[0] +# 892 : jybCmoi_A[0] +# 4893 : jybCmoi_B[0] +# 1842 : jzlwVrK_A[1] +# 5843 : jzlwVrK_B[1] +# 1860 : jzmXRwr_A[0] +# 5861 : jzmXRwr_B[0] +# 2729 : kAXCsYN_A[0] +# 6730 : kAXCsYN_B[0] +# 2247 : kAgJyeV_A[1] +# 6248 : kAgJyeV_B[1] +# 3286 : kAvDuMh_A[0] +# 7287 : kAvDuMh_B[0] +# 2508 : kBixhIu_A[1] +# 6509 : kBixhIu_B[1] +# 443 : kCBdJAC_A[1] +# 4444 : kCBdJAC_B[1] +# 1735 : kChEprE_A[1] +# 5736 : kChEprE_B[1] +# 729 : kCkNPxX_A[1] +# 4730 : kCkNPxX_B[1] +# 2961 : kCyQLyF_A[1] +# 6962 : kCyQLyF_B[1] +# 3369 : kDfPcjT_A[0] +# 7370 : kDfPcjT_B[0] +# 2683 : kEOUWHh_A[1] +# 6684 : kEOUWHh_B[1] +# 3029 : kEjYqcx_A[0] +# 7030 : kEjYqcx_B[0] +# 3444 : kFUBGNY_A[0] +# 7445 : kFUBGNY_B[0] +# 2692 : kFWAWQo_A[1] +# 6693 : kFWAWQo_B[1] +# 1144 : kGTxZBF_A[1] +# 5145 : kGTxZBF_B[1] +# 3132 : kHOwPsb_A[1] +# 7133 : kHOwPsb_B[1] +# 3730 : kIcKcsS_A[1] +# 7731 : kIcKcsS_B[1] +# 128 : kIxZaYu_A[0] +# 4129 : kIxZaYu_B[0] +# 725 : kJLJJOL_A[0] +# 4726 : kJLJJOL_B[0] +# 824 : kJUgCWg_A[0] +# 4825 : kJUgCWg_B[0] +# 985 : kJYipBA_A[0] +# 4986 : kJYipBA_B[0] +# 3072 : kJsblAu_A[0] +# 7073 : kJsblAu_B[0] +# 445 : kKvfPUR_A[0] +# 4446 : kKvfPUR_B[0] +# 2471 : kLOxntf_A[1] +# 6472 : kLOxntf_B[1] +# 2483 : kLbJNQG_A[0] +# 6484 : kLbJNQG_B[0] +# 1241 : kMuHOwo_A[1] +# 5242 : kMuHOwo_B[1] +# 159 : kNkUdAN_A[1] +# 4160 : kNkUdAN_B[1] +# 3851 : kOBwGXO_A[1] +# 7852 : kOBwGXO_B[1] +# 2338 : kOKADno_A[0] +# 6339 : kOKADno_B[0] +# 2027 : kQAhhpA_A[1] +# 6028 : kQAhhpA_B[1] +# 1266 : kRFqGaX_A[0] +# 5267 : kRFqGaX_B[0] +# 2707 : kSPToCE_A[0] +# 6708 : kSPToCE_B[0] +# 217 : kSwZNeH_A[1] +# 4218 : kSwZNeH_B[1] +# 928 : kSzngeR_A[1] +# 4929 : kSzngeR_B[1] +# 3647 : kTUFtic_A[1] +# 7648 : kTUFtic_B[1] +# 2174 : kTxUorD_A[1] +# 6175 : kTxUorD_B[1] +# 675 : kVPpHyG_A[0] +# 4676 : kVPpHyG_B[0] +# 1446 : kWIgjOR_A[0] +# 5447 : kWIgjOR_B[0] +# 761 : kWNGNTe_A[1] +# 4762 : kWNGNTe_B[1] +# 1252 : kWPGZyt_A[1] +# 5253 : kWPGZyt_B[1] +# 1906 : kYmVJID_A[1] +# 5907 : kYmVJID_B[1] +# 263 : kaCOVxv_A[1] +# 4264 : kaCOVxv_B[1] +# 801 : kacHDGA_A[0] +# 4802 : kacHDGA_B[0] +# 2298 : kaenIKW_A[0] +# 6299 : kaenIKW_B[0] +# 1790 : kasnSMu_A[1] +# 5791 : kasnSMu_B[1] +# 1469 : kbFtWcQ_A[1] +# 5470 : kbFtWcQ_B[1] +# 1022 : kbykAml_A[1] +# 5023 : kbykAml_B[1] +# 3421 : kcvXiNS_A[1] +# 7422 : kcvXiNS_B[1] +# 1756 : kdVHfCS_A[1] +# 5757 : kdVHfCS_B[1] +# 2294 : kdnwwJV_A[1] +# 6295 : kdnwwJV_B[1] +# 3362 : kekodif_A[1] +# 7363 : kekodif_B[1] +# 3379 : kfXsCiF_A[0] +# 7380 : kfXsCiF_B[0] +# 1985 : kfzuPlH_A[1] +# 5986 : kfzuPlH_B[1] +# 1169 : kgFQnAs_A[0] +# 5170 : kgFQnAs_B[0] +# 978 : kiOBQtt_A[1] +# 4979 : kiOBQtt_B[1] +# 1709 : kiiuKYU_A[1] +# 5710 : kiiuKYU_B[1] +# 2277 : kkBbXYT_A[0] +# 6278 : kkBbXYT_B[0] +# 478 : kkDEdyb_A[0] +# 4479 : kkDEdyb_B[0] +# 1476 : knJVqBJ_A[0] +# 5477 : knJVqBJ_B[0] +# 1473 : kncsdEF_A[1] +# 5474 : kncsdEF_B[1] +# 3613 : knrcLuQ_A[0] +# 7614 : knrcLuQ_B[0] +# 2204 : koLPuXm_A[1] +# 6205 : koLPuXm_B[1] +# 3402 : koOeLYG_A[1] +# 7403 : koOeLYG_B[1] +# 1954 : kpHoVKU_A[0] +# 5955 : kpHoVKU_B[0] +# 2972 : kpnFPIk_A[0] +# 6973 : kpnFPIk_B[0] +# 3043 : ktPAJpH_A[0] +# 7044 : ktPAJpH_B[0] +# 1442 : ktliBIh_A[0] +# 5443 : ktliBIh_B[0] +# 2498 : kvEnnEV_A[0] +# 6499 : kvEnnEV_B[0] +# 2984 : kwDAcvd_A[1] +# 6985 : kwDAcvd_B[1] +# 3218 : kwYdofA_A[1] +# 7219 : kwYdofA_B[1] +# 1710 : kxShmZj_A[0] +# 5711 : kxShmZj_B[0] +# 635 : kyhDoJA_A[1] +# 4636 : kyhDoJA_B[1] +# 2282 : kyrkPWC_A[0] +# 6283 : kyrkPWC_B[0] +# 3183 : lAaPgxB_A[1] +# 7184 : lAaPgxB_B[1] +# 3430 : lBIufSI_A[1] +# 7431 : lBIufSI_B[1] +# 3481 : lBebJIz_A[0] +# 7482 : lBebJIz_B[0] +# 2378 : lBnRueM_A[0] +# 6379 : lBnRueM_B[0] +# 3834 : lBqmDBO_A[1] +# 7835 : lBqmDBO_B[1] +# 68 : lCoGTiq_A[1] +# 4069 : lCoGTiq_B[1] +# 3332 : lDWyVnF_A[1] +# 7333 : lDWyVnF_B[1] +# 18 : lDohIVl_A[0] +# 4019 : lDohIVl_B[0] +# 2687 : lEPErLY_A[0] +# 6688 : lEPErLY_B[0] +# 2158 : lICwyDf_A[0] +# 6159 : lICwyDf_B[0] +# 2652 : lIIqpuY_A[1] +# 6653 : lIIqpuY_B[1] +# 687 : lIXMsOu_A[1] +# 4688 : lIXMsOu_B[1] +# 3670 : lIhauqq_A[1] +# 7671 : lIhauqq_B[1] +# 1225 : lJRwjBs_A[0] +# 5226 : lJRwjBs_B[0] +# 1099 : lJfdder_A[1] +# 5100 : lJfdder_B[1] +# 354 : lJmmDjw_A[0] +# 4355 : lJmmDjw_B[0] +# 3054 : lJnXfuP_A[0] +# 7055 : lJnXfuP_B[0] +# 2438 : lKprdsm_A[1] +# 6439 : lKprdsm_B[1] +# 1791 : lKqFZVG_A[1] +# 5792 : lKqFZVG_B[1] +# 48 : lMKYiHT_A[0] +# 4049 : lMKYiHT_B[0] +# 2261 : lNNFHsT_A[0] +# 6262 : lNNFHsT_B[0] +# 336 : lNNdSCB_A[1] +# 4337 : lNNdSCB_B[1] +# 3299 : lOILeqh_A[1] +# 7300 : lOILeqh_B[1] +# 3470 : lOjKLhz_A[1] +# 7471 : lOjKLhz_B[1] +# 2175 : lPUDFGe_A[0] +# 6176 : lPUDFGe_B[0] +# 1178 : lQwXSxy_A[0] +# 5179 : lQwXSxy_B[0] +# 3735 : lRGMJqH_A[1] +# 7736 : lRGMJqH_B[1] +# 3320 : lRSErxv_A[0] +# 7321 : lRSErxv_B[0] +# 3129 : lSWUAAW_A[0] +# 7130 : lSWUAAW_B[0] +# 3398 : lSZXSIU_A[1] +# 7399 : lSZXSIU_B[1] +# 3048 : lTBzVJG_A[1] +# 7049 : lTBzVJG_B[1] +# 3090 : lTugNxP_A[1] +# 7091 : lTugNxP_B[1] +# 64 : lUfprbR_A[0] +# 4065 : lUfprbR_B[0] +# 2432 : lUvsYbX_A[1] +# 6433 : lUvsYbX_B[1] +# 1155 : lVERZIR_A[0] +# 5156 : lVERZIR_B[0] +# 2788 : lWUflHH_A[1] +# 6789 : lWUflHH_B[1] +# 237 : lWbkKtC_A[1] +# 4238 : lWbkKtC_B[1] +# 3790 : lWfLqDt_A[1] +# 7791 : lWfLqDt_B[1] +# 2596 : lWlRnxQ_A[1] +# 6597 : lWlRnxQ_B[1] +# 1077 : lXMjMHL_A[1] +# 5078 : lXMjMHL_B[1] +# 1355 : lXabyzL_A[0] +# 5356 : lXabyzL_B[0] +# 2417 : lXfVPzD_A[1] +# 6418 : lXfVPzD_B[1] +# 701 : lYMhtSi_A[0] +# 4702 : lYMhtSi_B[0] +# 232 : lYmGVfU_A[1] +# 4233 : lYmGVfU_B[1] +# 3250 : lZqxhvR_A[0] +# 7251 : lZqxhvR_B[0] +# 1392 : laWkNww_A[1] +# 5393 : laWkNww_B[1] +# 1919 : laaWguC_A[0] +# 5920 : laaWguC_B[0] +# 246 : lbSDgyf_A[1] +# 4247 : lbSDgyf_B[1] +# 2816 : lbYQIrh_A[1] +# 6817 : lbYQIrh_B[1] +# 1243 : lbpKLDE_A[1] +# 5244 : lbpKLDE_B[1] +# 3948 : lcpxHhp_A[1] +# 7949 : lcpxHhp_B[1] +# 530 : ldGNVTO_A[1] +# 4531 : ldGNVTO_B[1] +# 812 : lePeOfN_A[1] +# 4813 : lePeOfN_B[1] +# 705 : lemDrqA_A[1] +# 4706 : lemDrqA_B[1] +# 44 : letcNrS_A[0] +# 4045 : letcNrS_B[0] +# 3737 : lfOmaGD_A[1] +# 7738 : lfOmaGD_B[1] +# 3611 : lfbNsba_A[1] +# 7612 : lfbNsba_B[1] +# 448 : lgJmeLV_A[0] +# 4449 : lgJmeLV_B[0] +# 629 : lgNxQUo_A[1] +# 4630 : lgNxQUo_B[1] +# 3093 : lgrTceN_A[1] +# 7094 : lgrTceN_B[1] +# 2076 : ljFuhzX_A[0] +# 6077 : ljFuhzX_B[0] +# 3304 : ljOqXTT_A[1] +# 7305 : ljOqXTT_B[1] +# 2875 : lkRXIjS_A[0] +# 6876 : lkRXIjS_B[0] +# 1297 : lkTPexU_A[1] +# 5298 : lkTPexU_B[1] +# 2156 : lkaZQBH_A[1] +# 6157 : lkaZQBH_B[1] +# 637 : lnbYwGS_A[0] +# 4638 : lnbYwGS_B[0] +# 93 : lnwpArm_A[0] +# 4094 : lnwpArm_B[0] +# 3345 : lnxLqFA_A[0] +# 7346 : lnxLqFA_B[0] +# 2787 : loEpTtU_A[0] +# 6788 : loEpTtU_B[0] +# 2529 : lpYryFa_A[1] +# 6530 : lpYryFa_B[1] +# 2842 : lpztCLA_A[0] +# 6843 : lpztCLA_B[0] +# 3557 : lqPYWVB_A[1] +# 7558 : lqPYWVB_B[1] +# 3778 : lrCmqXW_A[1] +# 7779 : lrCmqXW_B[1] +# 732 : lrDCtBI_A[0] +# 4733 : lrDCtBI_B[0] +# 1181 : lrEMmcA_A[0] +# 5182 : lrEMmcA_B[0] +# 2069 : ltSqOgT_A[0] +# 6070 : ltSqOgT_B[0] +# 672 : ltjiJdq_A[1] +# 4673 : ltjiJdq_B[1] +# 2974 : luTxWAL_A[0] +# 6975 : luTxWAL_B[0] +# 1360 : lwFLjcH_A[0] +# 5361 : lwFLjcH_B[0] +# 261 : lwkLGZI_A[0] +# 4262 : lwkLGZI_B[0] +# 166 : lxypZzF_A[1] +# 4167 : lxypZzF_B[1] +# 1071 : lyIjeOS_A[1] +# 5072 : lyIjeOS_B[1] +# 1789 : lyWLnBP_A[0] +# 5790 : lyWLnBP_B[0] +# 3741 : lyxIRHC_A[0] +# 7742 : lyxIRHC_B[0] +# 1110 : lzMyjki_A[1] +# 5111 : lzMyjki_B[1] +# 1949 : mAkhRQk_A[0] +# 5950 : mAkhRQk_B[0] +# 2091 : mDXwUjp_A[0] +# 6092 : mDXwUjp_B[0] +# 2472 : mEQgSGv_A[0] +# 6473 : mEQgSGv_B[0] +# 3533 : mFrTDqd_A[0] +# 7534 : mFrTDqd_B[0] +# 2543 : mGwwsUT_A[1] +# 6544 : mGwwsUT_B[1] +# 3594 : mHEDZQb_A[1] +# 7595 : mHEDZQb_B[1] +# 2248 : mHZyeIP_A[1] +# 6249 : mHZyeIP_B[1] +# 2462 : mHcNJkB_A[1] +# 6463 : mHcNJkB_B[1] +# 2880 : mHoYzGh_A[0] +# 6881 : mHoYzGh_B[0] +# 2497 : mIvDzNr_A[0] +# 6498 : mIvDzNr_B[0] +# 3010 : mJXQvRb_A[1] +# 7011 : mJXQvRb_B[1] +# 1899 : mKFLMfS_A[1] +# 5900 : mKFLMfS_B[1] +# 2184 : mKIREss_A[1] +# 6185 : mKIREss_B[1] +# 810 : mLfBTKW_A[1] +# 4811 : mLfBTKW_B[1] +# 3860 : mMbTNAr_A[0] +# 7861 : mMbTNAr_B[0] +# 2798 : mMcwrOG_A[1] +# 6799 : mMcwrOG_B[1] +# 3960 : mNPsWBn_A[1] +# 7961 : mNPsWBn_B[1] +# 426 : mOHwbne_A[1] +# 4427 : mOHwbne_B[1] +# 1126 : mPEdtoA_A[1] +# 5127 : mPEdtoA_B[1] +# 3219 : mPIISnV_A[0] +# 7220 : mPIISnV_B[0] +# 1725 : mPuvdWU_A[1] +# 5726 : mPuvdWU_B[1] +# 2800 : mPyCVdd_A[0] +# 6801 : mPyCVdd_B[0] +# 1227 : mRAMfJI_A[1] +# 5228 : mRAMfJI_B[1] +# 524 : mRiPHNf_A[0] +# 4525 : mRiPHNf_B[0] +# 1482 : mRzfbip_A[1] +# 5483 : mRzfbip_B[1] +# 483 : mSWNFPL_A[0] +# 4484 : mSWNFPL_B[0] +# 2167 : mTamCtk_A[0] +# 6168 : mTamCtk_B[0] +# 719 : mTjMWVF_A[1] +# 4720 : mTjMWVF_B[1] +# 298 : mTlNFDT_A[0] +# 4299 : mTlNFDT_B[0] +# 999 : mTyvgNm_A[1] +# 5000 : mTyvgNm_B[1] +# 247 : mUFBNrG_A[0] +# 4248 : mUFBNrG_B[0] +# 1493 : mVcuPSr_A[0] +# 5494 : mVcuPSr_B[0] +# 2592 : mWabvXs_A[1] +# 6593 : mWabvXs_B[1] +# 3016 : mWflIAw_A[0] +# 7017 : mWflIAw_B[0] +# 844 : mXAlbhU_A[1] +# 4845 : mXAlbhU_B[1] +# 493 : mXseAkM_A[1] +# 4494 : mXseAkM_B[1] +# 1453 : mYEujOU_A[0] +# 5454 : mYEujOU_B[0] +# 3694 : mYdAlou_A[0] +# 7695 : mYdAlou_B[0] +# 976 : mZMfBDf_A[1] +# 4977 : mZMfBDf_B[1] +# 3621 : mZioZMs_A[1] +# 7622 : mZioZMs_B[1] +# 1132 : mbNilOD_A[1] +# 5133 : mbNilOD_B[1] +# 3002 : mbednJr_A[0] +# 7003 : mbednJr_B[0] +# 102 : mcbwWmk_A[0] +# 4103 : mcbwWmk_B[0] +# 3145 : mdJPsXF_A[0] +# 7146 : mdJPsXF_B[0] +# 3708 : merqFRt_A[0] +# 7709 : merqFRt_B[0] +# 1567 : mfjjvEA_A[0] +# 5568 : mfjjvEA_B[0] +# 3549 : mhGunWI_A[0] +# 7550 : mhGunWI_B[0] +# 2421 : mjQWOCh_A[1] +# 6422 : mjQWOCh_B[1] +# 3570 : mjpdKFC_A[0] +# 7571 : mjpdKFC_B[0] +# 1358 : mkdfqZQ_A[0] +# 5359 : mkdfqZQ_B[0] +# 1897 : mkmfMTg_A[1] +# 5898 : mkmfMTg_B[1] +# 807 : mlZiFJA_A[0] +# 4808 : mlZiFJA_B[0] +# 3527 : mmWaqNt_A[0] +# 7528 : mmWaqNt_B[0] +# 3989 : mmxQABY_A[0] +# 7990 : mmxQABY_B[0] +# 1550 : mnsfAMX_A[1] +# 5551 : mnsfAMX_B[1] +# 366 : moslmIN_A[1] +# 4367 : moslmIN_B[1] +# 965 : motLkGa_A[1] +# 4966 : motLkGa_B[1] +# 3947 : mpHHomT_A[0] +# 7948 : mpHHomT_B[0] +# 1260 : mpHxiha_A[0] +# 5261 : mpHxiha_B[0] +# 3162 : mpPBMOE_A[1] +# 7163 : mpPBMOE_B[1] +# 3478 : mposeku_A[0] +# 7479 : mposeku_B[0] +# 522 : msClmPO_A[0] +# 4523 : msClmPO_B[0] +# 3883 : mutwWey_A[1] +# 7884 : mutwWey_B[1] +# 236 : mwKdSWO_A[1] +# 4237 : mwKdSWO_B[1] +# 2620 : mxBZxuI_A[1] +# 6621 : mxBZxuI_B[1] +# 2089 : myGefbE_A[0] +# 6090 : myGefbE_B[0] +# 458 : myNywms_A[0] +# 4459 : myNywms_B[0] +# 2892 : myumeTK_A[0] +# 6893 : myumeTK_B[0] +# 3855 : nCShntG_A[0] +# 7856 : nCShntG_B[0] +# 124 : nCXsJqw_A[0] +# 4125 : nCXsJqw_B[0] +# 2723 : nCfyRic_A[1] +# 6724 : nCfyRic_B[1] +# 2099 : nCuqhbM_A[0] +# 6100 : nCuqhbM_B[0] +# 3794 : nDUMKSB_A[1] +# 7795 : nDUMKSB_B[1] +# 1237 : nDfGInR_A[0] +# 5238 : nDfGInR_B[0] +# 2492 : nENTmbz_A[1] +# 6493 : nENTmbz_B[1] +# 3493 : nEigsLi_A[1] +# 7494 : nEigsLi_B[1] +# 3282 : nEjJGgq_A[0] +# 7283 : nEjJGgq_B[0] +# 1388 : nEzfIGm_A[0] +# 5389 : nEzfIGm_B[0] +# 453 : nGSfAIc_A[0] +# 4454 : nGSfAIc_B[0] +# 1295 : nGWJqoE_A[0] +# 5296 : nGWJqoE_B[0] +# 98 : nGdVJxU_A[1] +# 4099 : nGdVJxU_B[1] +# 1416 : nHAqreO_A[0] +# 5417 : nHAqreO_B[0] +# 3333 : nHDxVgY_A[0] +# 7334 : nHDxVgY_B[0] +# 3981 : nHYBmxq_A[0] +# 7982 : nHYBmxq_B[0] +# 3535 : nIupSLR_A[1] +# 7536 : nIupSLR_B[1] +# 2621 : nKQCFyB_A[1] +# 6622 : nKQCFyB_B[1] +# 2730 : nLJivVe_A[0] +# 6731 : nLJivVe_B[0] +# 293 : nLPnvDC_A[1] +# 4294 : nLPnvDC_B[1] +# 3827 : nLVuLwP_A[0] +# 7828 : nLVuLwP_B[0] +# 688 : nMJATxO_A[0] +# 4689 : nMJATxO_B[0] +# 3703 : nMqsyyo_A[0] +# 7704 : nMqsyyo_B[0] +# 722 : nNdPFsP_A[0] +# 4723 : nNdPFsP_B[0] +# 2633 : nOJuTyn_A[1] +# 6634 : nOJuTyn_B[1] +# 3783 : nPHZuYY_A[0] +# 7784 : nPHZuYY_B[0] +# 2935 : nPsCLMW_A[1] +# 6936 : nPsCLMW_B[1] +# 509 : nQsoiST_A[0] +# 4510 : nQsoiST_B[0] +# 3789 : nRBjPHA_A[0] +# 7790 : nRBjPHA_B[0] +# 3146 : nRjctZW_A[1] +# 7147 : nRjctZW_B[1] +# 2305 : nSeMVDZ_A[0] +# 6306 : nSeMVDZ_B[0] +# 2834 : nSjfyuZ_A[1] +# 6835 : nSjfyuZ_B[1] +# 3669 : nSmLhbY_A[1] +# 7670 : nSmLhbY_B[1] +# 2448 : nUTuGIm_A[1] +# 6449 : nUTuGIm_B[1] +# 1277 : nWZPyts_A[0] +# 5278 : nWZPyts_B[0] +# 1538 : nWanpHP_A[0] +# 5539 : nWanpHP_B[0] +# 1542 : nWbiDep_A[0] +# 5543 : nWbiDep_B[0] +# 2672 : nYNXwir_A[1] +# 6673 : nYNXwir_B[1] +# 805 : nYUerli_A[0] +# 4806 : nYUerli_B[0] +# 970 : nYtFcOs_A[1] +# 4971 : nYtFcOs_B[1] +# 3101 : nYxoUri_A[1] +# 7102 : nYxoUri_B[1] +# 3968 : naeJLWj_A[0] +# 7969 : naeJLWj_B[0] +# 2071 : napkBpr_A[0] +# 6072 : napkBpr_B[0] +# 1027 : nbmatGs_A[0] +# 5028 : nbmatGs_B[0] +# 1319 : ncUVEBT_A[0] +# 5320 : ncUVEBT_B[0] +# 3476 : ncYtmNO_A[1] +# 7477 : ncYtmNO_B[1] +# 216 : ncZuFZc_A[1] +# 4217 : ncZuFZc_B[1] +# 3467 : ngNlapA_A[0] +# 7468 : ngNlapA_B[0] +# 1028 : ngavrXn_A[1] +# 5029 : ngavrXn_B[1] +# 3546 : ngtCkaP_A[0] +# 7547 : ngtCkaP_B[0] +# 3065 : nhOBtIJ_A[0] +# 7066 : nhOBtIJ_B[0] +# 304 : nhjFaRM_A[0] +# 4305 : nhjFaRM_B[0] +# 2900 : nhklaVv_A[0] +# 6901 : nhklaVv_B[0] +# 856 : njVLSCa_A[1] +# 4857 : njVLSCa_B[1] +# 1833 : nkIuCJu_A[1] +# 5834 : nkIuCJu_B[1] +# 3938 : nkkkVLd_A[1] +# 7939 : nkkkVLd_B[1] +# 3532 : nlDPoPW_A[1] +# 7533 : nlDPoPW_B[1] +# 2891 : nlEszcT_A[1] +# 6892 : nlEszcT_B[1] +# 2486 : nmEZZWP_A[0] +# 6487 : nmEZZWP_B[0] +# 747 : nnnKixo_A[0] +# 4748 : nnnKixo_B[0] +# 3818 : noGWqoT_A[0] +# 7819 : noGWqoT_B[0] +# 1573 : noJcent_A[1] +# 5574 : noJcent_B[1] +# 2725 : nqKVyGQ_A[1] +# 6726 : nqKVyGQ_B[1] +# 2108 : nryPVvl_A[1] +# 6109 : nryPVvl_B[1] +# 250 : ntQNYhA_A[0] +# 4251 : ntQNYhA_B[0] +# 3516 : nthHKfE_A[1] +# 7517 : nthHKfE_B[1] +# 2854 : nuBpYgd_A[1] +# 6855 : nuBpYgd_B[1] +# 1625 : nuMoodi_A[0] +# 5626 : nuMoodi_B[0] +# 2856 : nvWkBlW_A[0] +# 6857 : nvWkBlW_B[0] +# 3435 : nvWyhjh_A[1] +# 7436 : nvWyhjh_B[1] +# 2181 : nvnfTLX_A[1] +# 6182 : nvnfTLX_B[1] +# 624 : nxCDXAo_A[0] +# 4625 : nxCDXAo_B[0] +# 3969 : nxPgqBa_A[1] +# 7970 : nxPgqBa_B[1] +# 1583 : nxguxbf_A[1] +# 5584 : nxguxbf_B[1] +# 1678 : nybSCAe_A[0] +# 5679 : nybSCAe_B[0] +# 69 : nyltYSv_A[0] +# 4070 : nyltYSv_B[0] +# 1510 : oAySjUu_A[1] +# 5511 : oAySjUu_B[1] +# 295 : oBOLIGo_A[0] +# 4296 : oBOLIGo_B[0] +# 2763 : oBRXkcE_A[0] +# 6764 : oBRXkcE_B[0] +# 894 : oBwVQXE_A[1] +# 4895 : oBwVQXE_B[1] +# 717 : oCMhlPU_A[1] +# 4718 : oCMhlPU_B[1] +# 2554 : oCrzcKm_A[1] +# 6555 : oCrzcKm_B[1] +# 1154 : oDEGpwM_A[0] +# 5155 : oDEGpwM_B[0] +# 2470 : oDHzsVK_A[0] +# 6471 : oDHzsVK_B[0] +# 1484 : oDvuoPh_A[1] +# 5485 : oDvuoPh_B[1] +# 3766 : oFZUUtS_A[1] +# 7767 : oFZUUtS_B[1] +# 2806 : oGLxKWi_A[0] +# 6807 : oGLxKWi_B[0] +# 2311 : oGllOgT_A[0] +# 6312 : oGllOgT_B[0] +# 61 : oHGqIRI_A[0] +# 4062 : oHGqIRI_B[0] +# 318 : oHJvEgP_A[0] +# 4319 : oHJvEgP_B[0] +# 1509 : oIgAnFQ_A[1] +# 5510 : oIgAnFQ_B[1] +# 3912 : oJBsUrU_A[1] +# 7913 : oJBsUrU_B[1] +# 922 : oJWUwYI_A[1] +# 4923 : oJWUwYI_B[1] +# 1703 : oKQUXGw_A[1] +# 5704 : oKQUXGw_B[1] +# 564 : oKQvrZJ_A[1] +# 4565 : oKQvrZJ_B[1] +# 1653 : oKYmbjt_A[0] +# 5654 : oKYmbjt_B[0] +# 3590 : oKgOCiW_A[0] +# 7591 : oKgOCiW_B[0] +# 2595 : oLNUYjj_A[1] +# 6596 : oLNUYjj_B[1] +# 2442 : oLOQbjn_A[1] +# 6443 : oLOQbjn_B[1] +# 500 : oLoLdSn_A[1] +# 4501 : oLoLdSn_B[1] +# 2059 : oMitdAt_A[1] +# 6060 : oMitdAt_B[1] +# 3677 : oNVLOyA_A[1] +# 7678 : oNVLOyA_B[1] +# 468 : oNZNEIO_A[1] +# 4469 : oNZNEIO_B[1] +# 1325 : oNvkQDK_A[0] +# 5326 : oNvkQDK_B[0] +# 2441 : oNyqAxY_A[0] +# 6442 : oNyqAxY_B[0] +# 2695 : oOdDPge_A[0] +# 6696 : oOdDPge_B[0] +# 3236 : oPgJKss_A[0] +# 7237 : oPgJKss_B[0] +# 2863 : oPtvRDe_A[0] +# 6864 : oPtvRDe_B[0] +# 2890 : oRBkfMp_A[0] +# 6891 : oRBkfMp_B[0] +# 1588 : oRCejdL_A[1] +# 5589 : oRCejdL_B[1] +# 144 : oRExmUG_A[1] +# 4145 : oRExmUG_B[1] +# 3763 : oRUVffh_A[0] +# 7764 : oRUVffh_B[0] +# 903 : oRyMPKk_A[0] +# 4904 : oRyMPKk_B[0] +# 3119 : oShgrzb_A[0] +# 7120 : oShgrzb_B[0] +# 1957 : oTjZbPk_A[1] +# 5958 : oTjZbPk_B[1] +# 3588 : oToUDcg_A[1] +# 7589 : oToUDcg_B[1] +# 3891 : oUdaPMX_A[0] +# 7892 : oUdaPMX_B[0] +# 827 : oUhlxDE_A[1] +# 4828 : oUhlxDE_B[1] +# 559 : oVZiUqU_A[1] +# 4560 : oVZiUqU_B[1] +# 1868 : oWEjMji_A[1] +# 5869 : oWEjMji_B[1] +# 3875 : oWXpaUf_A[0] +# 7876 : oWXpaUf_B[0] +# 3502 : oWfpSNy_A[1] +# 7503 : oWfpSNy_B[1] +# 1489 : oWnyzjB_A[0] +# 5490 : oWnyzjB_B[0] +# 141 : oXQosGU_A[0] +# 4142 : oXQosGU_B[0] +# 2406 : oYDUXKq_A[0] +# 6407 : oYDUXKq_B[0] +# 2237 : oYNPpkk_A[1] +# 6238 : oYNPpkk_B[1] +# 1830 : oZdZSIa_A[1] +# 5831 : oZdZSIa_B[1] +# 3591 : oZfjJlw_A[1] +# 7592 : oZfjJlw_B[1] +# 1290 : oZwxYLB_A[0] +# 5291 : oZwxYLB_B[0] +# 1292 : oacgEAE_A[1] +# 5293 : oacgEAE_B[1] +# 3463 : oajwSIh_A[1] +# 7464 : oajwSIh_B[1] +# 2313 : oayuRTq_A[1] +# 6314 : oayuRTq_B[1] +# 2074 : obRsbqm_A[0] +# 6075 : obRsbqm_B[0] +# 2058 : obVuhUE_A[0] +# 6059 : obVuhUE_B[0] +# 2835 : obbdxgY_A[0] +# 6836 : obbdxgY_B[0] +# 3773 : ocNARCm_A[0] +# 7774 : ocNARCm_B[0] +# 3964 : ocrmPWP_A[1] +# 7965 : ocrmPWP_B[1] +# 487 : odcVdil_A[0] +# 4488 : odcVdil_B[0] +# 2654 : ofdcLTg_A[0] +# 6655 : ofdcLTg_B[0] +# 3514 : ofklgYW_A[1] +# 7515 : ofklgYW_B[1] +# 843 : ogxCwJq_A[0] +# 4844 : ogxCwJq_B[0] +# 1001 : ojFBOOQ_A[1] +# 5002 : ojFBOOQ_B[1] +# 227 : ojGLVHs_A[1] +# 4228 : ojGLVHs_B[1] +# 2586 : ojRFCgd_A[0] +# 6587 : ojRFCgd_B[0] +# 1400 : ojTkCVg_A[1] +# 5401 : ojTkCVg_B[1] +# 3025 : ojkKTTU_A[1] +# 7026 : ojkKTTU_B[1] +# 2330 : ojmzuAN_A[1] +# 6331 : ojmzuAN_B[1] +# 3525 : okRcPAi_A[1] +# 7526 : okRcPAi_B[1] +# 3823 : olHaZHG_A[1] +# 7824 : olHaZHG_B[1] +# 733 : olWfHcB_A[1] +# 4734 : olWfHcB_B[1] +# 574 : omjxWdZ_A[0] +# 4575 : omjxWdZ_B[0] +# 3864 : onDyEoj_A[0] +# 7865 : onDyEoj_B[0] +# 2192 : onouUSu_A[1] +# 6193 : onouUSu_B[1] +# 3022 : oooNWtU_A[0] +# 7023 : oooNWtU_B[0] +# 517 : opMpAVl_A[0] +# 4518 : opMpAVl_B[0] +# 13 : opfFvBM_A[1] +# 4014 : opfFvBM_B[1] +# 3324 : opkgYLz_A[1] +# 7325 : opkgYLz_B[1] +# 331 : orawkwG_A[0] +# 4332 : orawkwG_B[0] +# 2514 : otJPOkM_A[1] +# 6515 : otJPOkM_B[1] +# 3021 : otsLywy_A[0] +# 7022 : otsLywy_B[0] +# 3635 : ovWcSGB_A[1] +# 7636 : ovWcSGB_B[1] +# 76 : ovbFhJQ_A[1] +# 4077 : ovbFhJQ_B[1] +# 140 : owGoBds_A[1] +# 4141 : owGoBds_B[1] +# 1794 : owgrMLr_A[0] +# 5795 : owgrMLr_B[0] +# 652 : owtckGT_A[1] +# 4653 : owtckGT_B[1] +# 2745 : oxEkeQx_A[1] +# 6746 : oxEkeQx_B[1] +# 2031 : ozMFTnB_A[1] +# 6032 : ozMFTnB_B[1] +# 438 : ozSnYCq_A[1] +# 4439 : ozSnYCq_B[1] +# 1314 : ozkEvNr_A[1] +# 5315 : ozkEvNr_B[1] +# 1604 : pAlPoiG_A[0] +# 5605 : pAlPoiG_B[0] +# 496 : pAoUukO_A[1] +# 4497 : pAoUukO_B[1] +# 419 : pBNVbsT_A[0] +# 4420 : pBNVbsT_B[0] +# 1815 : pBOLGwP_A[1] +# 5816 : pBOLGwP_B[1] +# 2398 : pBrjtDz_A[0] +# 6399 : pBrjtDz_B[0] +# 2080 : pCgwIKm_A[1] +# 6081 : pCgwIKm_B[1] +# 2755 : pDdkKHI_A[0] +# 6756 : pDdkKHI_B[0] +# 1924 : pDrTHlz_A[0] +# 5925 : pDrTHlz_B[0] +# 1069 : pDxQoWY_A[0] +# 5070 : pDxQoWY_B[0] +# 3990 : pEHsXSY_A[1] +# 7991 : pEHsXSY_B[1] +# 3020 : pEHtlbV_A[1] +# 7021 : pEHtlbV_B[1] +# 1375 : pHIBmpj_A[0] +# 5376 : pHIBmpj_B[0] +# 707 : pHXqsPP_A[0] +# 4708 : pHXqsPP_B[0] +# 411 : pHZnsKG_A[0] +# 4412 : pHZnsKG_B[0] +# 2549 : pHxHANz_A[0] +# 6550 : pHxHANz_B[0] +# 2963 : pIEkXID_A[1] +# 6964 : pIEkXID_B[1] +# 1034 : pJkFBVI_A[0] +# 5035 : pJkFBVI_B[0] +# 2370 : pLXYRlH_A[0] +# 6371 : pLXYRlH_B[0] +# 1352 : pLoVNqS_A[0] +# 5353 : pLoVNqS_B[0] +# 3231 : pMyaOal_A[0] +# 7232 : pMyaOal_B[0] +# 904 : pNCVCME_A[0] +# 4905 : pNCVCME_B[0] +# 243 : pNVBzno_A[0] +# 4244 : pNVBzno_B[0] +# 3767 : pOUAOeO_A[0] +# 7768 : pOUAOeO_B[0] +# 382 : pPJvrEB_A[0] +# 4383 : pPJvrEB_B[0] +# 2522 : pPdXgVD_A[0] +# 6523 : pPdXgVD_B[0] +# 2250 : pPpGVLU_A[0] +# 6251 : pPpGVLU_B[0] +# 2613 : pQghFMK_A[0] +# 6614 : pQghFMK_B[0] +# 387 : pRGerlD_A[0] +# 4388 : pRGerlD_B[0] +# 2356 : pSeQEuJ_A[1] +# 6357 : pSeQEuJ_B[1] +# 1002 : pTWanLo_A[1] +# 5003 : pTWanLo_B[1] +# 3451 : pTkUOtc_A[1] +# 7452 : pTkUOtc_B[1] +# 1658 : pWDvdgA_A[1] +# 5659 : pWDvdgA_B[1] +# 3087 : pWOjIHo_A[0] +# 7088 : pWOjIHo_B[0] +# 2114 : pWTBgYN_A[0] +# 6115 : pWTBgYN_B[0] +# 2501 : pXxfAAO_A[1] +# 6502 : pXxfAAO_B[1] +# 3464 : pYbRXln_A[0] +# 7465 : pYbRXln_B[0] +# 2134 : pZCkMts_A[1] +# 6135 : pZCkMts_B[1] +# 3522 : pZJesro_A[0] +# 7523 : pZJesro_B[0] +# 2016 : pZosfPb_A[1] +# 6017 : pZosfPb_B[1] +# 2640 : pZvCjpc_A[1] +# 6641 : pZvCjpc_B[1] +# 2691 : paciVwS_A[0] +# 6692 : paciVwS_B[0] +# 152 : pbIWkWK_A[1] +# 4153 : pbIWkWK_B[1] +# 2825 : pcEThst_A[1] +# 6826 : pcEThst_B[1] +# 3652 : pcJoMTT_A[0] +# 7653 : pcJoMTT_B[0] +# 3007 : pcpnvcZ_A[0] +# 7008 : pcpnvcZ_B[0] +# 2306 : pdSOvsL_A[0] +# 6307 : pdSOvsL_B[0] +# 469 : pdtcDNo_A[1] +# 4470 : pdtcDNo_B[1] +# 3372 : pedqJDw_A[1] +# 7373 : pedqJDw_B[1] +# 1456 : pgdLofs_A[0] +# 5457 : pgdLofs_B[0] +# 853 : pgnCAQr_A[0] +# 4854 : pgnCAQr_B[0] +# 2535 : pheAbCo_A[1] +# 6536 : pheAbCo_B[1] +# 2820 : phwdtPd_A[0] +# 6821 : phwdtPd_B[0] +# 1336 : pipUXwR_A[0] +# 5337 : pipUXwR_B[0] +# 3177 : pjLbKxu_A[1] +# 7178 : pjLbKxu_B[1] +# 1205 : pkAzTnX_A[0] +# 5206 : pkAzTnX_B[0] +# 1792 : pkrQLGd_A[1] +# 5793 : pkrQLGd_B[1] +# 1788 : plCMoBE_A[1] +# 5789 : plCMoBE_B[1] +# 1073 : plitYlu_A[1] +# 5074 : plitYlu_B[1] +# 1587 : pmlmCqH_A[0] +# 5588 : pmlmCqH_B[0] +# 3217 : pnUYBSh_A[0] +# 7218 : pnUYBSh_B[0] +# 94 : prGgEmX_A[1] +# 4095 : prGgEmX_B[1] +# 3974 : prwIZgY_A[0] +# 7975 : prwIZgY_B[0] +# 3813 : psAsAmz_A[1] +# 7814 : psAsAmz_B[1] +# 3399 : psiMppB_A[1] +# 7400 : psiMppB_B[1] +# 2329 : pskwyqK_A[1] +# 6330 : pskwyqK_B[1] +# 130 : ptwSXRO_A[0] +# 4131 : ptwSXRO_B[0] +# 1005 : puDZqAc_A[0] +# 5006 : puDZqAc_B[0] +# 893 : pumrjZH_A[1] +# 4894 : pumrjZH_B[1] +# 1769 : pvyRhke_A[0] +# 5770 : pvyRhke_B[0] +# 693 : pwHEBYQ_A[1] +# 4694 : pwHEBYQ_B[1] +# 3424 : pwaTkQI_A[1] +# 7425 : pwaTkQI_B[1] +# 1209 : pxIQAxK_A[0] +# 5210 : pxIQAxK_B[0] +# 1447 : pxQneDr_A[1] +# 5448 : pxQneDr_B[1] +# 1462 : pygrzvO_A[0] +# 5463 : pygrzvO_B[0] +# 2782 : pzVaWiS_A[1] +# 6783 : pzVaWiS_B[1] +# 708 : qAHXrLb_A[0] +# 4709 : qAHXrLb_B[0] +# 3229 : qANfcwK_A[0] +# 7230 : qANfcwK_B[0] +# 1114 : qATWUEf_A[1] +# 5115 : qATWUEf_B[1] +# 1309 : qBIhtmy_A[0] +# 5310 : qBIhtmy_B[0] +# 3449 : qBNITMo_A[0] +# 7450 : qBNITMo_B[0] +# 154 : qCBhPBS_A[1] +# 4155 : qCBhPBS_B[1] +# 221 : qCHOsGO_A[1] +# 4222 : qCHOsGO_B[1] +# 2657 : qCHwmzU_A[0] +# 6658 : qCHwmzU_B[0] +# 631 : qCgxQKJ_A[0] +# 4632 : qCgxQKJ_B[0] +# 1800 : qDMiBaQ_A[0] +# 5801 : qDMiBaQ_B[0] +# 1072 : qEJZHTu_A[1] +# 5073 : qEJZHTu_B[1] +# 743 : qEitIYp_A[0] +# 4744 : qEitIYp_B[0] +# 1233 : qEjEeDl_A[0] +# 5234 : qEjEeDl_B[0] +# 3363 : qFGToNR_A[1] +# 7364 : qFGToNR_B[1] +# 1248 : qFKPFZP_A[1] +# 5249 : qFKPFZP_B[1] +# 1136 : qFbJyem_A[0] +# 5137 : qFbJyem_B[0] +# 1739 : qGWtCSJ_A[0] +# 5740 : qGWtCSJ_B[0] +# 3158 : qGXDfBJ_A[1] +# 7159 : qGXDfBJ_B[1] +# 3995 : qGyUPmd_A[1] +# 7996 : qGyUPmd_B[1] +# 1639 : qHBlwaF_A[1] +# 5640 : qHBlwaF_B[1] +# 1969 : qHkaEgx_A[0] +# 5970 : qHkaEgx_B[0] +# 499 : qHyhZSh_A[1] +# 4500 : qHyhZSh_B[1] +# 3723 : qIBgUjM_A[0] +# 7724 : qIBgUjM_B[0] +# 700 : qIOWKXY_A[0] +# 4701 : qIOWKXY_B[0] +# 3780 : qJNbOrq_A[1] +# 7781 : qJNbOrq_B[1] +# 3593 : qJTGBlj_A[0] +# 7594 : qJTGBlj_B[0] +# 2355 : qKkilVw_A[1] +# 6356 : qKkilVw_B[1] +# 3294 : qKlBoeo_A[1] +# 7295 : qKlBoeo_B[1] +# 119 : qLAhDqy_A[1] +# 4120 : qLAhDqy_B[1] +# 2832 : qMxczLf_A[0] +# 6833 : qMxczLf_B[0] +# 1043 : qOnocnw_A[0] +# 5044 : qOnocnw_B[0] +# 1738 : qOxCRTX_A[1] +# 5739 : qOxCRTX_B[1] +# 3420 : qPEVeTP_A[1] +# 7421 : qPEVeTP_B[1] +# 2927 : qPHmGnr_A[0] +# 6928 : qPHmGnr_B[0] +# 3165 : qQLgokV_A[1] +# 7166 : qQLgokV_B[1] +# 2970 : qSOOTRe_A[0] +# 6971 : qSOOTRe_B[0] +# 3573 : qSYWUTz_A[1] +# 7574 : qSYWUTz_B[1] +# 1589 : qSZZZCP_A[0] +# 5590 : qSZZZCP_B[0] +# 553 : qSpBnRW_A[1] +# 4554 : qSpBnRW_B[1] +# 1777 : qTUhkgL_A[0] +# 5778 : qTUhkgL_B[0] +# 2601 : qUTtaSX_A[0] +# 6602 : qUTtaSX_B[0] +# 3485 : qUjTdcB_A[1] +# 7486 : qUjTdcB_B[1] +# 1886 : qVSgLbw_A[1] +# 5887 : qVSgLbw_B[1] +# 408 : qXPhrYz_A[0] +# 4409 : qXPhrYz_B[0] +# 2229 : qXaUogU_A[1] +# 6230 : qXaUogU_B[1] +# 3707 : qXuiuOy_A[1] +# 7708 : qXuiuOy_B[1] +# 1646 : qYdaQdN_A[1] +# 5647 : qYdaQdN_B[1] +# 2275 : qZBGfAk_A[1] +# 6276 : qZBGfAk_B[1] +# 2889 : qZdBWLy_A[0] +# 6890 : qZdBWLy_B[0] +# 778 : qaOzjgN_A[0] +# 4779 : qaOzjgN_B[0] +# 1615 : qasquLl_A[0] +# 5616 : qasquLl_B[0] +# 3272 : qazGNAq_A[0] +# 7273 : qazGNAq_B[0] +# 3542 : qcGFpoC_A[1] +# 7543 : qcGFpoC_B[1] +# 1339 : qcIlNao_A[1] +# 5340 : qcIlNao_B[1] +# 2239 : qcbCXql_A[1] +# 6240 : qcbCXql_B[1] +# 1146 : qcdgpPX_A[0] +# 5147 : qcdgpPX_B[0] +# 728 : qdvnFso_A[0] +# 4729 : qdvnFso_B[0] +# 1197 : qeKEXtD_A[0] +# 5198 : qeKEXtD_B[0] +# 321 : qecOJSK_A[1] +# 4322 : qecOJSK_B[1] +# 3323 : qefPnuH_A[1] +# 7324 : qefPnuH_B[1] +# 429 : qfDUtHW_A[1] +# 4430 : qfDUtHW_B[1] +# 3543 : qfYEMPS_A[1] +# 7544 : qfYEMPS_B[1] +# 334 : qfeJFFZ_A[1] +# 4335 : qfeJFFZ_B[1] +# 579 : qgMwcTr_A[1] +# 4580 : qgMwcTr_B[1] +# 2085 : qiJETmG_A[0] +# 6086 : qiJETmG_B[0] +# 1003 : qixVLuH_A[1] +# 5004 : qixVLuH_B[1] +# 1367 : qkRyBJw_A[1] +# 5368 : qkRyBJw_B[1] +# 1318 : qljKNDD_A[0] +# 5319 : qljKNDD_B[0] +# 3234 : qnggkft_A[1] +# 7235 : qnggkft_B[1] +# 3404 : qqLKslS_A[0] +# 7405 : qqLKslS_B[0] +# 3205 : qqQVqAs_A[1] +# 7206 : qqQVqAs_B[1] +# 668 : qraSpMU_A[1] +# 4669 : qraSpMU_B[1] +# 407 : qrcYGqy_A[1] +# 4408 : qrcYGqy_B[1] +# 258 : qriqqFu_A[0] +# 4259 : qriqqFu_B[0] +# 3298 : qsWZyDV_A[1] +# 7299 : qsWZyDV_B[1] +# 961 : quCFpec_A[1] +# 4962 : quCFpec_B[1] +# 1812 : qwELGSb_A[1] +# 5813 : qwELGSb_B[1] +# 1364 : qxjWMtW_A[1] +# 5365 : qxjWMtW_B[1] +# 1936 : qyYhzot_A[0] +# 5937 : qyYhzot_B[0] +# 677 : qzSAVKW_A[1] +# 4678 : qzSAVKW_B[1] +# 2460 : qzVDrBs_A[1] +# 6461 : qzVDrBs_B[1] +# 1967 : rACkbVr_A[0] +# 5968 : rACkbVr_B[0] +# 3712 : rALWyUq_A[0] +# 7713 : rALWyUq_B[0] +# 3426 : rAQLYmq_A[0] +# 7427 : rAQLYmq_B[0] +# 1757 : rCDVOai_A[0] +# 5758 : rCDVOai_B[0] +# 2971 : rDBKRed_A[0] +# 6972 : rDBKRed_B[0] +# 835 : rDDLLlM_A[0] +# 4836 : rDDLLlM_B[0] +# 2444 : rDlYDWb_A[0] +# 6445 : rDlYDWb_B[0] +# 2113 : rECCIXs_A[0] +# 6114 : rECCIXs_B[0] +# 1817 : rEFWtVd_A[0] +# 5818 : rEFWtVd_B[0] +# 1676 : rEHHdHZ_A[1] +# 5677 : rEHHdHZ_B[1] +# 1748 : rELitKP_A[0] +# 5749 : rELitKP_B[0] +# 348 : rEbDqki_A[0] +# 4349 : rEbDqki_B[0] +# 1263 : rFQXimB_A[1] +# 5264 : rFQXimB_B[1] +# 2724 : rFpFpXP_A[0] +# 6725 : rFpFpXP_B[0] +# 1148 : rFwWPXf_A[0] +# 5149 : rFwWPXf_B[0] +# 361 : rGBnZyg_A[1] +# 4362 : rGBnZyg_B[1] +# 974 : rGCtkiB_A[0] +# 4975 : rGCtkiB_B[0] +# 1104 : rGDmCoP_A[0] +# 5105 : rGDmCoP_B[0] +# 400 : rHHfVoF_A[1] +# 4401 : rHHfVoF_B[1] +# 3381 : rHHkMFV_A[1] +# 7382 : rHHkMFV_B[1] +# 3473 : rISYImo_A[1] +# 7474 : rISYImo_B[1] +# 2068 : rIWLqBf_A[1] +# 6069 : rIWLqBf_B[1] +# 2803 : rIbQDLB_A[0] +# 6804 : rIbQDLB_B[0] +# 3035 : rJHZria_A[0] +# 7036 : rJHZria_B[0] +# 3360 : rKWgSZe_A[0] +# 7361 : rKWgSZe_B[0] +# 1549 : rMCeYFP_A[0] +# 5550 : rMCeYFP_B[0] +# 3714 : rMqHjXh_A[1] +# 7715 : rMqHjXh_B[1] +# 3215 : rMuZVcP_A[1] +# 7216 : rMuZVcP_B[1] +# 2939 : rMyHRLc_A[1] +# 6940 : rMyHRLc_B[1] +# 3539 : rPDDbLu_A[0] +# 7540 : rPDDbLu_B[0] +# 3757 : rPpmeud_A[1] +# 7758 : rPpmeud_B[1] +# 2760 : rPtLAii_A[0] +# 6761 : rPtLAii_B[0] +# 1265 : rQpsPRd_A[0] +# 5266 : rQpsPRd_B[0] +# 898 : rRbIaQT_A[0] +# 4899 : rRbIaQT_B[0] +# 2358 : rTRRPqH_A[0] +# 6359 : rTRRPqH_B[0] +# 2743 : rTrFKol_A[0] +# 6744 : rTrFKol_B[0] +# 1256 : rWvsLaS_A[1] +# 5257 : rWvsLaS_B[1] +# 1765 : rXCTztf_A[0] +# 5766 : rXCTztf_B[0] +# 706 : rXXlerL_A[0] +# 4707 : rXXlerL_B[0] +# 897 : rXkrmLR_A[0] +# 4898 : rXkrmLR_B[0] +# 1201 : rYqjMjS_A[0] +# 5202 : rYqjMjS_B[0] +# 772 : rZQZEbQ_A[0] +# 4773 : rZQZEbQ_B[0] +# 867 : rZqiYkk_A[0] +# 4868 : rZqiYkk_B[0] +# 751 : racjGJy_A[1] +# 4752 : racjGJy_B[1] +# 654 : raphUFp_A[0] +# 4655 : raphUFp_B[0] +# 3910 : raqAXgf_A[1] +# 7911 : raqAXgf_B[1] +# 3192 : rawrBtZ_A[1] +# 7193 : rawrBtZ_B[1] +# 1206 : rbCzUHC_A[0] +# 5207 : rbCzUHC_B[0] +# 562 : rbDaDTK_A[1] +# 4563 : rbDaDTK_B[1] +# 1045 : rbDrdRd_A[0] +# 5046 : rbDrdRd_B[0] +# 2476 : rbFICuy_A[1] +# 6477 : rbFICuy_B[1] +# 1861 : rbRwhRp_A[0] +# 5862 : rbRwhRp_B[0] +# 495 : rcCxvcN_A[1] +# 4496 : rcCxvcN_B[1] +# 440 : regFEGO_A[1] +# 4441 : regFEGO_B[1] +# 572 : rfAqMXk_A[1] +# 4573 : rfAqMXk_B[1] +# 1727 : rfkAGVg_A[0] +# 5728 : rfkAGVg_B[0] +# 412 : rfzDgyO_A[0] +# 4413 : rfzDgyO_B[0] +# 3383 : rgIIBUs_A[1] +# 7384 : rgIIBUs_B[1] +# 2401 : rghHotz_A[1] +# 6402 : rghHotz_B[1] +# 2368 : rhMWgtw_A[1] +# 6369 : rhMWgtw_B[1] +# 2716 : rhodIyQ_A[1] +# 6717 : rhodIyQ_B[1] +# 876 : risYGHh_A[0] +# 4877 : risYGHh_B[0] +# 3455 : rjJhCRL_A[0] +# 7456 : rjJhCRL_B[0] +# 3919 : rlcMVeh_A[0] +# 7920 : rlcMVeh_B[0] +# 946 : rlsHsSL_A[1] +# 4947 : rlsHsSL_B[1] +# 1649 : rmyOUkE_A[0] +# 5650 : rmyOUkE_B[0] +# 118 : rnyCrVa_A[0] +# 4119 : rnyCrVa_B[0] +# 1781 : roolnbJ_A[0] +# 5782 : roolnbJ_B[0] +# 1733 : rpKVUqk_A[0] +# 5734 : rpKVUqk_B[0] +# 3641 : rseUoIg_A[1] +# 7642 : rseUoIg_B[1] +# 1956 : rstupNV_A[1] +# 5957 : rstupNV_B[1] +# 1026 : rtOdsBy_A[0] +# 5027 : rtOdsBy_B[0] +# 3173 : rthGebm_A[0] +# 7174 : rthGebm_B[0] +# 1893 : rtzMqjG_A[1] +# 5894 : rtzMqjG_B[1] +# 391 : rvvgitw_A[0] +# 4392 : rvvgitw_B[0] +# 3705 : rwOatck_A[1] +# 7706 : rwOatck_B[1] +# 2768 : rySSHLq_A[0] +# 6769 : rySSHLq_B[0] +# 2463 : rzRWfpL_A[1] +# 6464 : rzRWfpL_B[1] +# 3540 : sAgDqZB_A[0] +# 7541 : sAgDqZB_B[0] +# 1932 : sBErsPq_A[1] +# 5933 : sBErsPq_B[1] +# 1660 : sBbbDxV_A[0] +# 5661 : sBbbDxV_B[0] +# 2542 : sCXmiRf_A[1] +# 6543 : sCXmiRf_B[1] +# 2095 : sEtcHyx_A[0] +# 6096 : sEtcHyx_B[0] +# 1075 : sEuVonE_A[1] +# 5076 : sEuVonE_B[1] +# 513 : sFHMYND_A[1] +# 4514 : sFHMYND_B[1] +# 1211 : sFMFIyH_A[0] +# 5212 : sFMFIyH_B[0] +# 357 : sFMiTTA_A[0] +# 4358 : sFMiTTA_B[0] +# 3984 : sFqzTYE_A[0] +# 7985 : sFqzTYE_B[0] +# 3024 : sGESMZj_A[1] +# 7025 : sGESMZj_B[1] +# 2627 : sGFLQgG_A[0] +# 6628 : sGFLQgG_B[0] +# 1766 : sGWXnWe_A[1] +# 5767 : sGWXnWe_B[1] +# 1414 : sIzcrWT_A[0] +# 5415 : sIzcrWT_B[0] +# 1841 : sJPALHE_A[1] +# 5842 : sJPALHE_B[1] +# 2008 : sKfGYKo_A[1] +# 6009 : sKfGYKo_B[1] +# 1066 : sKuVtzL_A[1] +# 5067 : sKuVtzL_B[1] +# 932 : sNJuutq_A[0] +# 4933 : sNJuutq_B[0] +# 131 : sNNzoJi_A[1] +# 4132 : sNNzoJi_B[1] +# 1189 : sOVYHms_A[1] +# 5190 : sOVYHms_B[1] +# 273 : sOugrAd_A[1] +# 4274 : sOugrAd_B[1] +# 2092 : sPnnKNi_A[1] +# 6093 : sPnnKNi_B[1] +# 2976 : sPwdImo_A[0] +# 6977 : sPwdImo_B[0] +# 944 : sQAUvxR_A[0] +# 4945 : sQAUvxR_B[0] +# 40 : sRLczcd_A[0] +# 4041 : sRLczcd_B[0] +# 1579 : sSJzlgc_A[0] +# 5580 : sSJzlgc_B[0] +# 1218 : sSRXoWb_A[0] +# 5219 : sSRXoWb_B[0] +# 1496 : sSiGfRu_A[1] +# 5497 : sSiGfRu_B[1] +# 2257 : sSzQqxy_A[1] +# 6258 : sSzQqxy_B[1] +# 754 : sUMcQFB_A[0] +# 4755 : sUMcQFB_B[0] +# 3407 : sVWBWQC_A[0] +# 7408 : sVWBWQC_B[0] +# 3295 : sWEOxCU_A[1] +# 7296 : sWEOxCU_B[1] +# 3301 : sYJhhID_A[0] +# 7302 : sYJhhID_B[0] +# 2416 : sYVUmEY_A[0] +# 6417 : sYVUmEY_B[0] +# 1761 : sbMJAyY_A[1] +# 5762 : sbMJAyY_B[1] +# 2908 : sbaNBzG_A[1] +# 6909 : sbaNBzG_B[1] +# 738 : sbhdYPM_A[0] +# 4739 : sbhdYPM_B[0] +# 168 : scPPCuB_A[1] +# 4169 : scPPCuB_B[1] +# 1598 : scpZwsG_A[0] +# 5599 : scpZwsG_B[0] +# 3853 : sfCanzj_A[0] +# 7854 : sfCanzj_B[0] +# 2160 : sfIPBnD_A[1] +# 6161 : sfIPBnD_B[1] +# 2357 : sgokOgF_A[1] +# 6358 : sgokOgF_B[1] +# 2469 : shdnNjB_A[1] +# 6470 : shdnNjB_B[1] +# 2616 : shqbswJ_A[0] +# 6617 : shqbswJ_B[0] +# 1910 : shrjTca_A[1] +# 5911 : shrjTca_B[1] +# 2422 : sinrYxk_A[1] +# 6423 : sinrYxk_B[1] +# 1450 : sivhQya_A[1] +# 5451 : sivhQya_B[1] +# 2046 : sjsoxIx_A[0] +# 6047 : sjsoxIx_B[0] +# 712 : skZaeqC_A[1] +# 4713 : skZaeqC_B[1] +# 1383 : skujzKf_A[1] +# 5384 : skujzKf_B[1] +# 424 : slDmGDv_A[0] +# 4425 : slDmGDv_B[0] +# 558 : slOFRJc_A[1] +# 4559 : slOFRJc_B[1] +# 2171 : slxyuwc_A[0] +# 6172 : slxyuwc_B[0] +# 1679 : snkKAPu_A[0] +# 5680 : snkKAPu_B[0] +# 2188 : soFRpTJ_A[0] +# 6189 : soFRpTJ_B[0] +# 2846 : spMDgFe_A[0] +# 6847 : spMDgFe_B[0] +# 3120 : sqFILjr_A[0] +# 7121 : sqFILjr_B[0] +# 1704 : sqhAITJ_A[0] +# 5705 : sqhAITJ_B[0] +# 417 : sqlpQtX_A[1] +# 4418 : sqlpQtX_B[1] +# 311 : sqoHovv_A[1] +# 4312 : sqoHovv_B[1] +# 2565 : srAHHPb_A[0] +# 6566 : srAHHPb_B[0] +# 1421 : srkypbY_A[0] +# 5422 : srkypbY_B[0] +# 792 : ssRJlev_A[0] +# 4793 : ssRJlev_B[0] +# 2015 : stUXDzG_A[1] +# 6016 : stUXDzG_B[1] +# 3656 : stdeHhO_A[1] +# 7657 : stdeHhO_B[1] +# 143 : suvOKav_A[1] +# 4144 : suvOKav_B[1] +# 851 : suzmFJC_A[1] +# 4852 : suzmFJC_B[1] +# 2375 : svLLaqf_A[0] +# 6376 : svLLaqf_B[0] +# 1179 : svsLjNP_A[1] +# 5180 : svsLjNP_B[1] +# 1046 : swhlMAt_A[1] +# 5047 : swhlMAt_B[1] +# 2824 : swnonRW_A[0] +# 6825 : swnonRW_B[0] +# 1879 : sxKnIcr_A[0] +# 5880 : sxKnIcr_B[0] +# 1270 : sysEsmk_A[1] +# 5271 : sysEsmk_B[1] +# 1279 : szBTUTb_A[0] +# 5280 : szBTUTb_B[0] +# 1428 : szYOgAr_A[1] +# 5429 : szYOgAr_B[1] +# 139 : tAIzWlL_A[1] +# 4140 : tAIzWlL_B[1] +# 2474 : tCNpuWq_A[1] +# 6475 : tCNpuWq_B[1] +# 134 : tCTwxTL_A[0] +# 4135 : tCTwxTL_B[0] +# 3797 : tCZXtTR_A[0] +# 7798 : tCZXtTR_B[0] +# 2335 : tCeTITR_A[1] +# 6336 : tCeTITR_B[1] +# 2223 : tEInXla_A[0] +# 6224 : tEInXla_B[0] +# 1853 : tEUSldr_A[1] +# 5854 : tEUSldr_B[1] +# 838 : tFcnHly_A[1] +# 4839 : tFcnHly_B[1] +# 1582 : tGubzfE_A[1] +# 5583 : tGubzfE_B[1] +# 1553 : tHUfbOM_A[1] +# 5554 : tHUfbOM_B[1] +# 2360 : tIHvYsk_A[0] +# 6361 : tIHvYsk_B[0] +# 319 : tKDBWpQ_A[1] +# 4320 : tKDBWpQ_B[1] +# 3918 : tLQdWmG_A[1] +# 7919 : tLQdWmG_B[1] +# 2827 : tLrEpou_A[0] +# 6828 : tLrEpou_B[0] +# 3887 : tMxjeZJ_A[1] +# 7888 : tMxjeZJ_B[1] +# 1129 : tNJQfSm_A[0] +# 5130 : tNJQfSm_B[0] +# 370 : tNPUYla_A[0] +# 4371 : tNPUYla_B[0] +# 2815 : tNXDvmm_A[1] +# 6816 : tNXDvmm_B[1] +# 3019 : tOIXQtS_A[1] +# 7020 : tOIXQtS_B[1] +# 685 : tObLGqI_A[0] +# 4686 : tObLGqI_B[0] +# 3005 : tPRuovi_A[0] +# 7006 : tPRuovi_B[0] +# 1326 : tPUSVLM_A[1] +# 5327 : tPUSVLM_B[1] +# 3921 : tQHVnKN_A[1] +# 7922 : tQHVnKN_B[1] +# 1513 : tQcXQXm_A[1] +# 5514 : tQcXQXm_B[1] +# 1092 : tRrBffe_A[1] +# 5093 : tRrBffe_B[1] +# 2151 : tSGrIrR_A[0] +# 6152 : tSGrIrR_B[0] +# 3468 : tUKHuFw_A[0] +# 7469 : tUKHuFw_B[0] +# 467 : tVjylMO_A[0] +# 4468 : tVjylMO_B[0] +# 3280 : tWAdidC_A[0] +# 7281 : tWAdidC_B[0] +# 1448 : tWcYZmz_A[0] +# 5449 : tWcYZmz_B[0] +# 224 : tWhDbxz_A[0] +# 4225 : tWhDbxz_B[0] +# 163 : tYFdXxG_A[1] +# 4164 : tYFdXxG_B[1] +# 2693 : tYXxSxk_A[0] +# 6694 : tYXxSxk_B[0] +# 82 : tYpRYOp_A[1] +# 4083 : tYpRYOp_B[1] +# 1244 : tZGdufx_A[1] +# 5245 : tZGdufx_B[1] +# 2866 : tZgtFYg_A[0] +# 6867 : tZgtFYg_B[0] +# 3193 : tcDrnsN_A[0] +# 7194 : tcDrnsN_B[0] +# 1560 : tcRDKUQ_A[1] +# 5561 : tcRDKUQ_B[1] +# 2606 : tcqejbI_A[1] +# 6607 : tcqejbI_B[1] +# 2475 : teKJZAQ_A[1] +# 6476 : teKJZAQ_B[1] +# 1918 : teLyHoM_A[0] +# 5919 : teLyHoM_B[0] +# 1472 : tedbryf_A[0] +# 5473 : tedbryf_B[0] +# 3577 : tepodvD_A[0] +# 7578 : tepodvD_B[0] +# 592 : tfERnQd_A[1] +# 4593 : tfERnQd_B[1] +# 1304 : tgDvaDm_A[0] +# 5305 : tgDvaDm_B[0] +# 2007 : tgJzPcy_A[0] +# 6008 : tgJzPcy_B[0] +# 3036 : tgYilhy_A[1] +# 7037 : tgYilhy_B[1] +# 703 : tgeqgLz_A[0] +# 4704 : tgeqgLz_B[0] +# 3917 : tiZNpRY_A[1] +# 7918 : tiZNpRY_B[1] +# 461 : tiihEmr_A[1] +# 4462 : tiihEmr_B[1] +# 936 : tivdJbL_A[1] +# 4937 : tivdJbL_B[1] +# 1479 : tjtxONk_A[1] +# 5480 : tjtxONk_B[1] +# 1011 : tkSdOlA_A[1] +# 5012 : tkSdOlA_B[1] +# 552 : tkZZlQp_A[1] +# 4553 : tkZZlQp_B[1] +# 1672 : tlRNNLy_A[1] +# 5673 : tlRNNLy_B[1] +# 2450 : tlRPADK_A[1] +# 6451 : tlRPADK_B[1] +# 1406 : tlRSMtV_A[1] +# 5407 : tlRSMtV_B[1] +# 3248 : tmRmtMH_A[1] +# 7249 : tmRmtMH_B[1] +# 1528 : tngMUcD_A[1] +# 5529 : tngMUcD_B[1] +# 3758 : tnlJTWe_A[1] +# 7759 : tnlJTWe_B[1] +# 1914 : tnpFILP_A[1] +# 5915 : tnpFILP_B[1] +# 214 : toQtfxr_A[1] +# 4215 : toQtfxr_B[1] +# 62 : tpwPxcn_A[0] +# 4063 : tpwPxcn_B[0] +# 1390 : tqEKKuR_A[0] +# 5391 : tqEKKuR_B[0] +# 3438 : tqTWJId_A[1] +# 7439 : tqTWJId_B[1] +# 1829 : trgrnKx_A[1] +# 5830 : trgrnKx_B[1] +# 1345 : trxdqMm_A[0] +# 5346 : trxdqMm_B[0] +# 3911 : tsCpKKK_A[1] +# 7912 : tsCpKKK_B[1] +# 3682 : tsNZFZJ_A[1] +# 7683 : tsNZFZJ_B[1] +# 148 : tsivUdy_A[1] +# 4149 : tsivUdy_B[1] +# 3906 : tveGbFl_A[1] +# 7907 : tveGbFl_B[1] +# 2324 : twaHTLc_A[0] +# 6325 : twaHTLc_B[0] +# 392 : twvCyZE_A[1] +# 4393 : twvCyZE_B[1] +# 594 : twxIwpz_A[1] +# 4595 : twxIwpz_B[1] +# 181 : txXsaau_A[1] +# 4182 : txXsaau_B[1] +# 276 : txiwnjL_A[1] +# 4277 : txiwnjL_B[1] +# 1033 : tyNcMok_A[0] +# 5034 : tyNcMok_B[0] +# 3920 : tzhVBqV_A[0] +# 7921 : tzhVBqV_B[0] +# 2588 : uAqKWZw_A[0] +# 6589 : uAqKWZw_B[0] +# 3629 : uAsZlia_A[0] +# 7630 : uAsZlia_B[0] +# 1963 : uBGdoQT_A[1] +# 5964 : uBGdoQT_B[1] +# 418 : uBanWIB_A[1] +# 4419 : uBanWIB_B[1] +# 413 : uCOrSKL_A[1] +# 4414 : uCOrSKL_B[1] +# 3993 : uCbpkdZ_A[1] +# 7994 : uCbpkdZ_B[1] +# 431 : uCvPDOH_A[1] +# 4432 : uCvPDOH_B[1] +# 1870 : uDXCzro_A[0] +# 5871 : uDXCzro_B[0] +# 3565 : uDyuUTm_A[1] +# 7566 : uDyuUTm_B[1] +# 1399 : uExUCjG_A[1] +# 5400 : uExUCjG_B[1] +# 1278 : uFWoVCM_A[1] +# 5279 : uFWoVCM_B[1] +# 1749 : uGamlUl_A[1] +# 5750 : uGamlUl_B[1] +# 1974 : uGwyQuO_A[0] +# 5975 : uGwyQuO_B[0] +# 459 : uHSJMVy_A[0] +# 4460 : uHSJMVy_B[0] +# 3802 : uHZlkzi_A[0] +# 7803 : uHZlkzi_B[0] +# 2179 : uJFBhGl_A[1] +# 6180 : uJFBhGl_B[1] +# 3548 : uJNLPGu_A[1] +# 7549 : uJNLPGu_B[1] +# 2025 : uJRcaHL_A[0] +# 6026 : uJRcaHL_B[0] +# 2559 : uJYBzYv_A[0] +# 6560 : uJYBzYv_B[0] +# 2427 : uLTrNrM_A[0] +# 6428 : uLTrNrM_B[0] +# 3197 : uLxlpVl_A[0] +# 7198 : uLxlpVl_B[0] +# 3044 : uMYOTjX_A[1] +# 7045 : uMYOTjX_B[1] +# 585 : uMsjdFv_A[1] +# 4586 : uMsjdFv_B[1] +# 953 : uNHpHvn_A[0] +# 4954 : uNHpHvn_B[0] +# 300 : uNhmQVk_A[1] +# 4301 : uNhmQVk_B[1] +# 813 : uPQuDmd_A[1] +# 4814 : uPQuDmd_B[1] +# 834 : uPVpsBv_A[1] +# 4835 : uPVpsBv_B[1] +# 3368 : uRqFMZS_A[1] +# 7369 : uRqFMZS_B[1] +# 3374 : uSKnguf_A[1] +# 7375 : uSKnguf_B[1] +# 2084 : uSaMbDF_A[0] +# 6085 : uSaMbDF_B[0] +# 737 : uTldHoK_A[0] +# 4738 : uTldHoK_B[0] +# 108 : uUCSWtV_A[1] +# 4109 : uUCSWtV_B[1] +# 3373 : uUGjgRC_A[1] +# 7374 : uUGjgRC_B[1] +# 1199 : uUTRXRA_A[1] +# 5200 : uUTRXRA_B[1] +# 3750 : uVoJJDA_A[0] +# 7751 : uVoJJDA_B[0] +# 3785 : uWkkXCk_A[0] +# 7786 : uWkkXCk_B[0] +# 3724 : uXhKRby_A[1] +# 7725 : uXhKRby_B[1] +# 1613 : uXtlfZd_A[1] +# 5614 : uXtlfZd_B[1] +# 2102 : uYxxRHt_A[0] +# 6103 : uYxxRHt_B[0] +# 2256 : uZFwYOe_A[0] +# 6257 : uZFwYOe_B[0] +# 742 : uZXGeLy_A[0] +# 4743 : uZXGeLy_B[0] +# 2402 : uZcovBV_A[1] +# 6403 : uZcovBV_B[1] +# 3211 : uZisjsP_A[0] +# 7212 : uZisjsP_B[0] +# 2309 : uZzmOpU_A[0] +# 6310 : uZzmOpU_B[0] +# 815 : uaaloru_A[0] +# 4816 : uaaloru_B[0] +# 3880 : ubVMegF_A[0] +# 7881 : ubVMegF_B[0] +# 3230 : ubdttDh_A[0] +# 7231 : ubdttDh_B[0] +# 1222 : ucKddZd_A[1] +# 5223 : ucKddZd_B[1] +# 315 : udQzTeK_A[0] +# 4316 : udQzTeK_B[0] +# 2689 : udgRBUq_A[0] +# 6690 : udgRBUq_B[0] +# 2655 : ueEBYfF_A[1] +# 6656 : ueEBYfF_B[1] +# 390 : ueKhdaR_A[1] +# 4391 : ueKhdaR_B[1] +# 1822 : ueXPvPr_A[1] +# 5823 : ueXPvPr_B[1] +# 1291 : ufOCsVL_A[0] +# 5292 : ufOCsVL_B[0] +# 3965 : ufPfAjy_A[0] +# 7966 : ufPfAjy_B[0] +# 691 : ufdOMQT_A[1] +# 4692 : ufdOMQT_B[1] +# 3321 : ufuPXQP_A[1] +# 7322 : ufuPXQP_B[1] +# 2911 : ugqlxfE_A[0] +# 6912 : ugqlxfE_B[0] +# 2267 : uhBGNxh_A[0] +# 6268 : uhBGNxh_B[0] +# 502 : uiLNsPO_A[0] +# 4503 : uiLNsPO_B[0] +# 2590 : uiTsVra_A[0] +# 6591 : uiTsVra_B[0] +# 972 : uidgGUH_A[1] +# 4973 : uidgGUH_B[1] +# 213 : ukFBLCf_A[1] +# 4214 : ukFBLCf_B[1] +# 1198 : ukFhTKX_A[1] +# 5199 : ukFhTKX_B[1] +# 3784 : ukTeJnV_A[1] +# 7785 : ukTeJnV_B[1] +# 1409 : ukrtQGJ_A[1] +# 5410 : ukrtQGJ_B[1] +# 1444 : ulZArsG_A[1] +# 5445 : ulZArsG_B[1] +# 1940 : umcnkTo_A[0] +# 5941 : umcnkTo_B[0] +# 958 : unCSdoa_A[1] +# 4959 : unCSdoa_B[1] +# 914 : unfhKxf_A[0] +# 4915 : unfhKxf_B[0] +# 2622 : unhqaRL_A[0] +# 6623 : unhqaRL_B[0] +# 2717 : uoXgxVb_A[0] +# 6718 : uoXgxVb_B[0] +# 1254 : upriQtR_A[0] +# 5255 : upriQtR_B[0] +# 1035 : uqrZgAo_A[1] +# 5036 : uqrZgAo_B[1] +# 2030 : urBWUmb_A[1] +# 6031 : urBWUmb_B[1] +# 2371 : uswwDny_A[0] +# 6372 : uswwDny_B[0] +# 1760 : utdJYUi_A[1] +# 5761 : utdJYUi_B[1] +# 870 : utfOieG_A[0] +# 4871 : utfOieG_B[0] +# 3405 : utqfaqm_A[1] +# 7406 : utqfaqm_B[1] +# 622 : uuMWsCp_A[1] +# 4623 : uuMWsCp_B[1] +# 3844 : uuykGsp_A[0] +# 7845 : uuykGsp_B[0] +# 1797 : uvOTAup_A[1] +# 5798 : uvOTAup_B[1] +# 1997 : uvYxqJi_A[1] +# 5998 : uvYxqJi_B[1] +# 1032 : uwNgwWk_A[1] +# 5033 : uwNgwWk_B[1] +# 2345 : uwhhuFy_A[1] +# 6346 : uwhhuFy_B[1] +# 2512 : uyCpESk_A[1] +# 6513 : uyCpESk_B[1] +# 2423 : uyMZciT_A[0] +# 6424 : uyMZciT_B[0] +# 577 : uzHomBT_A[1] +# 4578 : uzHomBT_B[1] +# 3255 : uzNLwmK_A[0] +# 7256 : uzNLwmK_B[0] +# 2540 : uzTVsUw_A[0] +# 6541 : uzTVsUw_B[0] +# 3755 : vAXRkeE_A[0] +# 7756 : vAXRkeE_B[0] +# 1332 : vBBDtqS_A[1] +# 5333 : vBBDtqS_B[1] +# 327 : vBCyTXo_A[0] +# 4328 : vBCyTXo_B[0] +# 1570 : vBwVZMe_A[0] +# 5571 : vBwVZMe_B[0] +# 1995 : vCDmKsw_A[1] +# 5996 : vCDmKsw_B[1] +# 2198 : vFogGoT_A[1] +# 6199 : vFogGoT_B[1] +# 773 : vGLOuaI_A[0] +# 4774 : vGLOuaI_B[0] +# 2082 : vIXPDPh_A[1] +# 6083 : vIXPDPh_B[1] +# 423 : vIYhuQg_A[0] +# 4424 : vIYhuQg_B[0] +# 1134 : vJQBefi_A[1] +# 5135 : vJQBefi_B[1] +# 1989 : vJmbhHg_A[0] +# 5990 : vJmbhHg_B[0] +# 3934 : vKASjZg_A[0] +# 7935 : vKASjZg_B[0] +# 430 : vKcdLWJ_A[0] +# 4431 : vKcdLWJ_B[0] +# 2938 : vLHhKwO_A[1] +# 6939 : vLHhKwO_B[1] +# 2608 : vNZQHKQ_A[1] +# 6609 : vNZQHKQ_B[1] +# 268 : vOhuxmZ_A[0] +# 4269 : vOhuxmZ_B[0] +# 640 : vQIcPRP_A[0] +# 4641 : vQIcPRP_B[0] +# 3289 : vQWryZG_A[0] +# 7290 : vQWryZG_B[0] +# 39 : vRCyMtC_A[0] +# 4040 : vRCyMtC_B[0] +# 2659 : vSdxLPc_A[1] +# 6660 : vSdxLPc_B[1] +# 3567 : vSqknrl_A[0] +# 7568 : vSqknrl_B[0] +# 1098 : vTkDogw_A[1] +# 5099 : vTkDogw_B[1] +# 2736 : vUOkcOH_A[0] +# 6737 : vUOkcOH_B[0] +# 644 : vUSPlch_A[0] +# 4645 : vUSPlch_B[0] +# 449 : vXHAeCI_A[1] +# 4450 : vXHAeCI_B[1] +# 1057 : vXYmaVM_A[1] +# 5058 : vXYmaVM_B[1] +# 757 : vYRSTwl_A[1] +# 4758 : vYRSTwl_B[1] +# 882 : vZtBszM_A[1] +# 4883 : vZtBszM_B[1] +# 2278 : vaLrEKl_A[0] +# 6279 : vaLrEKl_B[0] +# 415 : vawvhjm_A[1] +# 4416 : vawvhjm_B[1] +# 235 : vbGBBGW_A[1] +# 4236 : vbGBBGW_B[1] +# 364 : vbKXoqt_A[1] +# 4365 : vbKXoqt_B[1] +# 3488 : vbrmnnN_A[1] +# 7489 : vbrmnnN_B[1] +# 2771 : vbsCpwe_A[0] +# 6772 : vbsCpwe_B[0] +# 2993 : vcmFslt_A[0] +# 6994 : vcmFslt_B[0] +# 1586 : vdlWhzw_A[1] +# 5587 : vdlWhzw_B[1] +# 3387 : vevsaUR_A[0] +# 7388 : vevsaUR_B[0] +# 3510 : vgUEEiR_A[0] +# 7511 : vgUEEiR_B[0] +# 3163 : vguDZMk_A[0] +# 7164 : vguDZMk_B[0] +# 663 : vhpWdcQ_A[0] +# 4664 : vhpWdcQ_B[0] +# 3605 : vibqwWE_A[0] +# 7606 : vibqwWE_B[0] +# 1163 : vjhuDUC_A[1] +# 5164 : vjhuDUC_B[1] +# 3901 : vjqwowo_A[1] +# 7902 : vjqwowo_B[1] +# 1962 : vkczmiA_A[1] +# 5963 : vkczmiA_B[1] +# 2698 : vkpVduW_A[1] +# 6699 : vkpVduW_B[1] +# 503 : vlcrHvD_A[1] +# 4504 : vlcrHvD_B[1] +# 1174 : vmNqaNX_A[1] +# 5175 : vmNqaNX_B[1] +# 3954 : vmTQWTv_A[0] +# 7955 : vmTQWTv_B[0] +# 2641 : vndjbxX_A[1] +# 6642 : vndjbxX_B[1] +# 1729 : vnrTvDJ_A[0] +# 5730 : vnrTvDJ_B[0] +# 439 : vpsRfxi_A[1] +# 4440 : vpsRfxi_B[1] +# 3558 : vqIRJZM_A[1] +# 7559 : vqIRJZM_B[1] +# 3465 : vqrQjbM_A[0] +# 7466 : vqrQjbM_B[0] +# 2648 : vrhPHiD_A[0] +# 6649 : vrhPHiD_B[0] +# 186 : vsFBTtO_A[1] +# 4187 : vsFBTtO_B[1] +# 1455 : vsgbJIf_A[0] +# 5456 : vsgbJIf_B[0] +# 1813 : vsslSyC_A[1] +# 5814 : vsslSyC_B[1] +# 167 : vuwhlDU_A[0] +# 4168 : vuwhlDU_B[0] +# 3277 : vvEnvzZ_A[1] +# 7278 : vvEnvzZ_B[1] +# 2776 : vwrnqLf_A[1] +# 6777 : vwrnqLf_B[1] +# 2164 : vxbdPnH_A[1] +# 6165 : vxbdPnH_B[1] +# 3517 : vyfvKTl_A[1] +# 7518 : vyfvKTl_B[1] +# 2431 : vyimxHS_A[0] +# 6432 : vyimxHS_B[0] +# 2426 : vzqBEhi_A[1] +# 6427 : vzqBEhi_B[1] +# 1629 : vzsILBg_A[1] +# 5630 : vzsILBg_B[1] +# 1858 : vzwadge_A[0] +# 5859 : vzwadge_B[0] +# 360 : wBtWBLJ_A[1] +# 4361 : wBtWBLJ_B[1] +# 3292 : wCqeswC_A[1] +# 7293 : wCqeswC_B[1] +# 3061 : wDVwcpi_A[0] +# 7062 : wDVwcpi_B[0] +# 785 : wDvZlkx_A[1] +# 4786 : wDvZlkx_B[1] +# 989 : wDzFfTh_A[1] +# 4990 : wDzFfTh_B[1] +# 3859 : wFYhApT_A[1] +# 7860 : wFYhApT_B[1] +# 3401 : wGJlIkx_A[0] +# 7402 : wGJlIkx_B[0] +# 2761 : wHPYeJa_A[0] +# 6762 : wHPYeJa_B[0] +# 3619 : wHYIlqZ_A[0] +# 7620 : wHYIlqZ_B[0] +# 3663 : wHadfNe_A[0] +# 7664 : wHadfNe_B[0] +# 1521 : wIwfkDH_A[1] +# 5522 : wIwfkDH_B[1] +# 389 : wJGNGqK_A[1] +# 4390 : wJGNGqK_B[1] +# 1527 : wJUZgxk_A[1] +# 5528 : wJUZgxk_B[1] +# 3153 : wJVkdbL_A[0] +# 7154 : wJVkdbL_B[0] +# 3328 : wKQsBun_A[1] +# 7329 : wKQsBun_B[1] +# 2978 : wKqEkjr_A[1] +# 6979 : wKqEkjr_B[1] +# 966 : wMfidZx_A[0] +# 4967 : wMfidZx_B[0] +# 1296 : wOCZvsr_A[1] +# 5297 : wOCZvsr_B[1] +# 1614 : wPCIMWs_A[1] +# 5615 : wPCIMWs_B[1] +# 2405 : wQOBLUL_A[1] +# 6406 : wQOBLUL_B[1] +# 309 : wSOMCGZ_A[1] +# 4310 : wSOMCGZ_B[1] +# 2461 : wSZUOzi_A[1] +# 6462 : wSZUOzi_B[1] +# 1193 : wSqbqpO_A[0] +# 5194 : wSqbqpO_B[0] +# 3940 : wTpaYch_A[0] +# 7941 : wTpaYch_B[0] +# 1377 : wURNiLE_A[0] +# 5378 : wURNiLE_B[0] +# 1384 : wVGXwMC_A[0] +# 5385 : wVGXwMC_B[0] +# 3057 : wXMArCa_A[0] +# 7058 : wXMArCa_B[0] +# 1810 : wXOeYse_A[1] +# 5811 : wXOeYse_B[1] +# 3196 : wXfybNa_A[1] +# 7197 : wXfybNa_B[1] +# 2232 : wYhrVjD_A[0] +# 6233 : wYhrVjD_B[0] +# 3013 : wYxzIbM_A[0] +# 7014 : wYxzIbM_B[0] +# 2131 : wZBcQUo_A[1] +# 6132 : wZBcQUo_B[1] +# 1323 : waebNhi_A[0] +# 5324 : waebNhi_B[0] +# 2354 : wayGuJy_A[0] +# 6355 : wayGuJy_B[0] +# 991 : wdJTBri_A[0] +# 4992 : wdJTBri_B[0] +# 3118 : wfjHCxe_A[1] +# 7119 : wfjHCxe_B[1] +# 1396 : wftUlmd_A[0] +# 5397 : wftUlmd_B[0] +# 2915 : wiMIOZU_A[1] +# 6916 : wiMIOZU_B[1] +# 369 : wiRoSpb_A[1] +# 4370 : wiRoSpb_B[1] +# 2180 : wiyyIoH_A[0] +# 6181 : wiyyIoH_B[0] +# 67 : wkpsMMA_A[0] +# 4068 : wkpsMMA_B[0] +# 2587 : wmcaTLe_A[0] +# 6588 : wmcaTLe_B[0] +# 588 : wnWggWD_A[1] +# 4589 : wnWggWD_B[1] +# 2496 : woHIlnW_A[0] +# 6497 : woHIlnW_B[0] +# 115 : woKYhAC_A[0] +# 4116 : woKYhAC_B[0] +# 674 : woYKwVR_A[0] +# 4675 : woYKwVR_B[0] +# 3985 : womyGCc_A[0] +# 7986 : womyGCc_B[0] +# 2793 : wpArzZk_A[1] +# 6794 : wpArzZk_B[1] +# 2490 : wpBoUGA_A[1] +# 6491 : wpBoUGA_B[1] +# 3609 : wpFqxma_A[0] +# 7610 : wpFqxma_B[0] +# 2075 : wpjbsPE_A[1] +# 6076 : wpjbsPE_B[1] +# 2567 : wqFPpGH_A[0] +# 6568 : wqFPpGH_B[0] +# 74 : wqylyxZ_A[1] +# 4075 : wqylyxZ_B[1] +# 848 : wqzTpvm_A[1] +# 4849 : wqzTpvm_B[1] +# 2066 : wrHEcGK_A[0] +# 6067 : wrHEcGK_B[0] +# 204 : wrYGeBG_A[0] +# 4205 : wrYGeBG_B[0] +# 1926 : wrjlGTZ_A[1] +# 5927 : wrjlGTZ_B[1] +# 795 : wtlOZMe_A[0] +# 4796 : wtlOZMe_B[0] +# 2251 : wvBIvCc_A[1] +# 6252 : wvBIvCc_B[1] +# 3104 : wvQLhBo_A[1] +# 7105 : wvQLhBo_B[1] +# 748 : wwWjpsn_A[0] +# 4749 : wwWjpsn_B[0] +# 1207 : wxrzNeH_A[1] +# 5208 : wxrzNeH_B[1] +# 514 : wxwlXii_A[1] +# 4515 : wxwlXii_B[1] +# 3909 : wyazVlQ_A[1] +# 7910 : wyazVlQ_B[1] +# 3241 : wyxcbMi_A[1] +# 7242 : wyxcbMi_B[1] +# 3060 : xAajZfa_A[1] +# 7061 : xAajZfa_B[1] +# 2028 : xCEYgyV_A[1] +# 6029 : xCEYgyV_B[1] +# 3045 : xCTyKsw_A[1] +# 7046 : xCTyKsw_B[1] +# 2923 : xEcHTlz_A[0] +# 6924 : xEcHTlz_B[0] +# 3417 : xFCsqKG_A[0] +# 7418 : xFCsqKG_B[0] +# 3765 : xGoysiN_A[1] +# 7766 : xGoysiN_B[1] +# 2583 : xHOWJmz_A[0] +# 6584 : xHOWJmz_B[0] +# 3523 : xIDIgxu_A[0] +# 7524 : xIDIgxu_B[0] +# 3278 : xIJWOlX_A[1] +# 7279 : xIJWOlX_B[1] +# 586 : xJTTAsI_A[1] +# 4587 : xJTTAsI_B[1] +# 901 : xJxCbFc_A[0] +# 4902 : xJxCbFc_B[0] +# 710 : xLIzJmJ_A[0] +# 4711 : xLIzJmJ_B[0] +# 2127 : xLhyZow_A[1] +# 6128 : xLhyZow_B[1] +# 2741 : xNgruuS_A[1] +# 6742 : xNgruuS_B[1] +# 2458 : xOLcFBI_A[0] +# 6459 : xOLcFBI_B[0] +# 2037 : xOeckyA_A[1] +# 6038 : xOeckyA_B[1] +# 3436 : xOtDtVL_A[0] +# 7437 : xOtDtVL_B[0] +# 185 : xPWVmxQ_A[1] +# 4186 : xPWVmxQ_B[1] +# 1894 : xPcqBbF_A[0] +# 5895 : xPcqBbF_B[0] +# 3325 : xQJcuDz_A[0] +# 7326 : xQJcuDz_B[0] +# 1717 : xQmjPUL_A[0] +# 5718 : xQmjPUL_B[0] +# 2934 : xQwyTfW_A[1] +# 6935 : xQwyTfW_B[1] +# 2263 : xQyyexB_A[0] +# 6264 : xQyyexB_B[0] +# 3081 : xRwhoWv_A[1] +# 7082 : xRwhoWv_B[1] +# 3348 : xRzXzVW_A[0] +# 7349 : xRzXzVW_B[0] +# 3996 : xSYFQIt_A[1] +# 7997 : xSYFQIt_B[1] +# 2882 : xUyBlxV_A[1] +# 6883 : xUyBlxV_B[1] +# 83 : xVIZAYO_A[0] +# 4084 : xVIZAYO_B[0] +# 1361 : xVIezJV_A[1] +# 5362 : xVIezJV_B[1] +# 455 : xVQnnYG_A[1] +# 4456 : xVQnnYG_B[1] +# 669 : xVdFBqg_A[0] +# 4670 : xVdFBqg_B[0] +# 1116 : xVdyswy_A[0] +# 5117 : xVdyswy_B[0] +# 1519 : xVfGyUS_A[1] +# 5520 : xVfGyUS_B[1] +# 3807 : xVhwowt_A[1] +# 7808 : xVhwowt_B[1] +# 291 : xWeGteS_A[1] +# 4292 : xWeGteS_B[1] +# 1272 : xXZHCoN_A[0] +# 5273 : xXZHCoN_B[0] +# 3260 : xYHSNNT_A[1] +# 7261 : xYHSNNT_B[1] +# 3631 : xZNeqXK_A[1] +# 7632 : xZNeqXK_B[1] +# 1612 : xbAxLWo_A[1] +# 5613 : xbAxLWo_B[1] +# 3276 : xbLGiLp_A[0] +# 7277 : xbLGiLp_B[0] +# 463 : xcAmrYn_A[0] +# 4464 : xcAmrYn_B[0] +# 1916 : xcbzhcE_A[1] +# 5917 : xcbzhcE_B[1] +# 388 : xcfPSNb_A[0] +# 4389 : xcfPSNb_B[0] +# 344 : xcvYzmR_A[0] +# 4345 : xcvYzmR_B[0] +# 2894 : xdVPZEl_A[1] +# 6895 : xdVPZEl_B[1] +# 2859 : xdnFGgJ_A[1] +# 6860 : xdnFGgJ_B[1] +# 1093 : xfuIaJV_A[0] +# 5094 : xfuIaJV_B[0] +# 1344 : xhdbONh_A[1] +# 5345 : xhdbONh_B[1] +# 231 : xiCjXdz_A[1] +# 4232 : xiCjXdz_B[1] +# 2920 : xiRmbst_A[0] +# 6921 : xiRmbst_B[0] +# 709 : xivDnWG_A[0] +# 4710 : xivDnWG_B[0] +# 1938 : xjVPhBd_A[1] +# 5939 : xjVPhBd_B[1] +# 368 : xjbvTlX_A[0] +# 4369 : xjbvTlX_B[0] +# 3471 : xkWkQFt_A[1] +# 7472 : xkWkQFt_B[1] +# 3361 : xmETMxk_A[1] +# 7362 : xmETMxk_B[1] +# 107 : xmvArCj_A[0] +# 4108 : xmvArCj_B[0] +# 1937 : xnIZbFG_A[1] +# 5938 : xnIZbFG_B[1] +# 825 : xoKkIop_A[1] +# 4826 : xoKkIop_B[1] +# 2721 : xonYzEi_A[0] +# 6722 : xonYzEi_B[0] +# 3824 : xpFTgyR_A[1] +# 7825 : xpFTgyR_B[1] +# 3460 : xpSPoTa_A[1] +# 7461 : xpSPoTa_B[1] +# 1025 : xrFMZRV_A[0] +# 5026 : xrFMZRV_B[0] +# 3227 : xrThzsM_A[0] +# 7228 : xrThzsM_B[0] +# 3300 : xrlZbWf_A[1] +# 7301 : xrlZbWf_B[1] +# 3861 : xsUbBWC_A[0] +# 7862 : xsUbBWC_B[0] +# 627 : xsaOiGb_A[1] +# 4628 : xsaOiGb_B[1] +# 906 : xtLECJf_A[0] +# 4907 : xtLECJf_B[0] +# 714 : xuEmAjF_A[0] +# 4715 : xuEmAjF_B[0] +# 10 : xuSIFCt_A[0] +# 4011 : xuSIFCt_B[0] +# 3680 : xvHceQK_A[1] +# 7681 : xvHceQK_B[1] +# 841 : xvSXZtg_A[1] +# 4842 : xvSXZtg_B[1] +# 3414 : xvUkvjG_A[0] +# 7415 : xvUkvjG_B[0] +# 3992 : xveHglA_A[0] +# 7993 : xveHglA_B[0] +# 995 : xwEkmKI_A[0] +# 4996 : xwEkmKI_B[0] +# 199 : xwQyvHB_A[0] +# 4200 : xwQyvHB_B[0] +# 1524 : xwRHRLC_A[0] +# 5525 : xwRHRLC_B[0] +# 380 : xxLJomb_A[0] +# 4381 : xxLJomb_B[0] +# 1953 : xxfHWSL_A[0] +# 5954 : xxfHWSL_B[0] +# 3336 : xyQDNfI_A[1] +# 7337 : xyQDNfI_B[1] +# 565 : yCVXFcL_A[0] +# 4566 : yCVXFcL_B[0] +# 2715 : yCokOyP_A[1] +# 6716 : yCokOyP_B[1] +# 2577 : yCxFpRU_A[1] +# 6578 : yCxFpRU_B[1] +# 2044 : yDIDJdg_A[0] +# 6045 : yDIDJdg_B[0] +# 784 : yDNscWl_A[0] +# 4785 : yDNscWl_B[0] +# 1401 : yEkrRnf_A[1] +# 5402 : yEkrRnf_B[1] +# 3775 : yGTmJeF_A[0] +# 7776 : yGTmJeF_B[0] +# 1758 : yGbujvV_A[1] +# 5759 : yGbujvV_B[1] +# 2983 : yInnHby_A[0] +# 6984 : yInnHby_B[0] +# 1959 : yIsFqAu_A[0] +# 5960 : yIsFqAu_B[0] +# 2346 : yJSkLaf_A[0] +# 6347 : yJSkLaf_B[0] +# 2034 : yJZRJYo_A[1] +# 6035 : yJZRJYo_B[1] +# 2064 : yJfKjnb_A[0] +# 6065 : yJfKjnb_B[0] +# 2819 : yLGGLHT_A[1] +# 6820 : yLGGLHT_B[1] +# 3339 : yLdgdcH_A[0] +# 7340 : yLdgdcH_B[0] +# 3078 : yLtWmnw_A[1] +# 7079 : yLtWmnw_B[1] +# 2878 : yMNjxrM_A[0] +# 6879 : yMNjxrM_B[0] +# 1552 : yMYoADV_A[1] +# 5553 : yMYoADV_B[1] +# 1221 : yOADFWa_A[0] +# 5222 : yOADFWa_B[0] +# 3795 : yOMTYJs_A[1] +# 7796 : yOMTYJs_B[1] +# 386 : yPHJiyU_A[0] +# 4387 : yPHJiyU_B[0] +# 3297 : yPIxudd_A[0] +# 7298 : yPIxudd_B[0] +# 1368 : yPaCMVC_A[0] +# 5369 : yPaCMVC_B[0] +# 2225 : yPeVghP_A[0] +# 6226 : yPeVghP_B[0] +# 3555 : yQApEoG_A[1] +# 7556 : yQApEoG_B[1] +# 2006 : yQGpelB_A[0] +# 6007 : yQGpelB_B[0] +# 551 : yRrFHvp_A[1] +# 4552 : yRrFHvp_B[1] +# 3756 : ySGapbo_A[0] +# 7757 : ySGapbo_B[0] +# 2316 : ySsAwhb_A[1] +# 6317 : ySsAwhb_B[1] +# 937 : yUuWvby_A[1] +# 4938 : yUuWvby_B[1] +# 1616 : yUzFzrH_A[0] +# 5617 : yUzFzrH_B[0] +# 2849 : yVHSeLV_A[1] +# 6850 : yVHSeLV_B[1] +# 2288 : yVQynbj_A[1] +# 6289 : yVQynbj_B[1] +# 410 : yVXdldi_A[1] +# 4411 : yVXdldi_B[1] +# 1128 : yWMypIB_A[0] +# 5129 : yWMypIB_B[0] +# 1359 : yWpIrpF_A[1] +# 5360 : yWpIrpF_B[1] +# 865 : yXRNOti_A[1] +# 4866 : yXRNOti_B[1] +# 3244 : yXXtAUQ_A[0] +# 7245 : yXXtAUQ_B[0] +# 1711 : yXyEahK_A[1] +# 5712 : yXyEahK_B[1] +# 1716 : yYvRacv_A[0] +# 5717 : yYvRacv_B[0] +# 290 : yZEWGUz_A[0] +# 4291 : yZEWGUz_B[0] +# 3442 : yaGDIVd_A[0] +# 7443 : yaGDIVd_B[0] +# 359 : yaMQQco_A[1] +# 4360 : yaMQQco_B[1] +# 2366 : yarakkU_A[0] +# 6367 : yarakkU_B[0] +# 3224 : yauGddJ_A[1] +# 7225 : yauGddJ_B[1] +# 385 : ybVHoJJ_A[1] +# 4386 : ybVHoJJ_B[1] +# 820 : ybiEsmz_A[1] +# 4821 : ybiEsmz_B[1] +# 933 : ybkcDPG_A[0] +# 4934 : ybkcDPG_B[0] +# 1282 : ycdXrJr_A[0] +# 5283 : ycdXrJr_B[0] +# 983 : yfvNjoQ_A[1] +# 4984 : yfvNjoQ_B[1] +# 2176 : yiyxQkx_A[1] +# 6177 : yiyxQkx_B[1] +# 1838 : yjJRvhx_A[0] +# 5839 : yjJRvhx_B[0] +# 2709 : yjRwAwn_A[0] +# 6710 : yjRwAwn_B[0] +# 786 : yjZDwcU_A[1] +# 4787 : yjZDwcU_B[1] +# 2988 : ylwehug_A[1] +# 6989 : ylwehug_B[1] +# 2602 : ympDHFk_A[0] +# 6603 : ympDHFk_B[0] +# 2872 : ynuEokc_A[1] +# 6873 : ynuEokc_B[1] +# 51 : yoUneHp_A[0] +# 4052 : yoUneHp_B[0] +# 2966 : yoZrtbP_A[1] +# 6967 : yoZrtbP_B[1] +# 3608 : ypvrBEc_A[0] +# 7609 : ypvrBEc_B[0] +# 3330 : ypxAHcr_A[1] +# 7331 : ypxAHcr_B[1] +# 3862 : yrLcmnZ_A[1] +# 7863 : yrLcmnZ_B[1] +# 790 : ysbUVAi_A[1] +# 4791 : ysbUVAi_B[1] +# 92 : ysdwHoc_A[0] +# 4093 : ysdwHoc_B[0] +# 934 : ytGcqKZ_A[1] +# 4935 : ytGcqKZ_B[1] +# 1430 : ytnjxAk_A[1] +# 5431 : ytnjxAk_B[1] +# 3579 : ytvBCUh_A[1] +# 7580 : ytvBCUh_B[1] +# 3810 : yuTCEyP_A[0] +# 7811 : yuTCEyP_B[0] +# 3204 : yvDRNwx_A[1] +# 7205 : yvDRNwx_B[1] +# 3303 : yvhVxiY_A[1] +# 7304 : yvhVxiY_B[1] +# 3073 : yyAPlZh_A[1] +# 7074 : yyAPlZh_B[1] +# 3615 : yzeSdtW_A[1] +# 7616 : yzeSdtW_B[1] +# 479 : zAiuthM_A[0] +# 4480 : zAiuthM_B[0] +# 3639 : zBiZhop_A[0] +# 7640 : zBiZhop_B[0] +# 776 : zDGFSwc_A[0] +# 4777 : zDGFSwc_B[0] +# 351 : zEHZmOk_A[0] +# 4352 : zEHZmOk_B[0] +# 984 : zEdLZlt_A[1] +# 4985 : zEdLZlt_B[1] +# 1696 : zFOdJrs_A[1] +# 5697 : zFOdJrs_B[1] +# 874 : zFVVQik_A[0] +# 4875 : zFVVQik_B[0] +# 1520 : zGcGYoq_A[1] +# 5521 : zGcGYoq_B[1] +# 3316 : zGjeUyw_A[0] +# 7317 : zGjeUyw_B[0] +# 2231 : zHEcOdJ_A[1] +# 6232 : zHEcOdJ_B[1] +# 3521 : zHIQvYL_A[0] +# 7522 : zHIQvYL_B[0] +# 1896 : zHKcqSj_A[0] +# 5897 : zHKcqSj_B[0] +# 2380 : zHvUeEU_A[1] +# 6381 : zHvUeEU_B[1] +# 2841 : zIGEEok_A[0] +# 6842 : zIGEEok_B[0] +# 1942 : zIXMnHA_A[1] +# 5943 : zIXMnHA_B[1] +# 539 : zIhpcMn_A[1] +# 4540 : zIhpcMn_B[1] +# 1302 : zItCUBs_A[1] +# 5303 : zItCUBs_B[1] +# 3307 : zKcWwoM_A[1] +# 7308 : zKcWwoM_B[1] +# 1667 : zLixSxp_A[1] +# 5668 : zLixSxp_B[1] +# 1743 : zMcDfve_A[0] +# 5744 : zMcDfve_B[0] +# 2696 : zMnebqs_A[0] +# 6697 : zMnebqs_B[0] +# 1123 : zMpynCz_A[0] +# 5124 : zMpynCz_B[0] +# 209 : zOZXXAF_A[0] +# 4210 : zOZXXAF_B[0] +# 846 : zOdtGTW_A[1] +# 4847 : zOdtGTW_B[1] +# 1004 : zOfPuir_A[1] +# 5005 : zOfPuir_B[1] +# 2425 : zPEkYAt_A[0] +# 6426 : zPEkYAt_B[0] +# 1459 : zPXStZh_A[1] +# 5460 : zPXStZh_B[1] +# 3422 : zQGvbXw_A[1] +# 7423 : zQGvbXw_B[1] +# 2701 : zQbeCRb_A[1] +# 6702 : zQbeCRb_B[1] +# 1628 : zQhILSZ_A[1] +# 5629 : zQhILSZ_B[1] +# 3800 : zRPPrlr_A[0] +# 7801 : zRPPrlr_B[0] +# 533 : zSkIqMN_A[0] +# 4534 : zSkIqMN_B[0] +# 3106 : zTczvuE_A[0] +# 7107 : zTczvuE_B[0] +# 915 : zTkJdjA_A[0] +# 4916 : zTkJdjA_B[0] +# 3342 : zTwPcFT_A[1] +# 7343 : zTwPcFT_B[1] +# 2557 : zUMVxxw_A[0] +# 6558 : zUMVxxw_B[0] +# 1269 : zUmslWl_A[0] +# 5270 : zUmslWl_B[0] +# 3482 : zVGtnaD_A[1] +# 7483 : zVGtnaD_B[1] +# 2162 : zVrxbLR_A[1] +# 6163 : zVrxbLR_B[1] +# 2454 : zWgTsTr_A[1] +# 6455 : zWgTsTr_B[1] +# 1229 : zWpJemh_A[0] +# 5230 : zWpJemh_B[0] +# 3261 : zZEeIls_A[1] +# 7262 : zZEeIls_B[1] +# 3566 : zZGmJJF_A[1] +# 7567 : zZGmJJF_B[1] +# 599 : zZXdDWX_A[0] +# 4600 : zZXdDWX_B[0] +# 858 : zZqhtZM_A[1] +# 4859 : zZqhtZM_B[1] +# 3439 : zaQxZPF_A[0] +# 7440 : zaQxZPF_B[0] +# 2119 : zbFLGcT_A[0] +# 6120 : zbFLGcT_B[0] +# 1059 : zbKxAaQ_A[0] +# 5060 : zbKxAaQ_B[0] +# 190 : zcwVEZb_A[1] +# 4191 : zcwVEZb_B[1] +# 2797 : zdPgvZn_A[0] +# 6798 : zdPgvZn_B[0] +# 2182 : zdQEriP_A[1] +# 6183 : zdQEriP_B[1] +# 12 : zdqEFak_A[1] +# 4013 : zdqEFak_B[1] +# 837 : zeLKBYx_A[1] +# 4838 : zeLKBYx_B[1] +# 1580 : zebVwVs_A[0] +# 5581 : zebVwVs_B[0] +# 3841 : zfSRBsE_A[0] +# 7842 : zfSRBsE_B[0] +# 929 : zfsAjJY_A[0] +# 4930 : zfsAjJY_B[0] +# 541 : zgmXHxF_A[1] +# 4542 : zgmXHxF_B[1] +# 1846 : zhERAIp_A[1] +# 5847 : zhERAIp_B[1] +# 195 : zhWtLAU_A[1] +# 4196 : zhWtLAU_B[1] +# 1305 : zhvQVJA_A[1] +# 5306 : zhvQVJA_B[1] +# 3545 : ziIkdDL_A[0] +# 7546 : ziIkdDL_B[0] +# 1693 : ziTOdrx_A[1] +# 5694 : ziTOdrx_B[1] +# 3761 : ziWEBPK_A[1] +# 7762 : ziWEBPK_B[1] +# 1596 : zjGMjGy_A[0] +# 5597 : zjGMjGy_B[0] +# 249 : zjaAfhf_A[0] +# 4250 : zjaAfhf_B[0] +# 95 : zkSSdcR_A[1] +# 4096 : zkSSdcR_B[1] +# 3717 : zlaSkAS_A[1] +# 7718 : zlaSkAS_B[1] +# 3831 : znMzeNA_A[1] +# 7832 : znMzeNA_B[1] +# 3561 : znjDcUd_A[0] +# 7562 : znjDcUd_B[0] +# 3047 : zocGWkB_A[0] +# 7048 : zocGWkB_B[0] +# 1576 : zomhGCP_A[0] +# 5577 : zomhGCP_B[0] +# 1470 : zrnjAri_A[0] +# 5471 : zrnjAri_B[0] +# 3179 : zsGCedh_A[1] +# 7180 : zsGCedh_B[1] +# 3156 : zsOUAlh_A[1] +# 7157 : zsOUAlh_B[1] +# 1410 : ztOgJbq_A[0] +# 5411 : ztOgJbq_B[0] +# 2200 : ztqtpfO_A[0] +# 6201 : ztqtpfO_B[0] +# 3902 : ztutrid_A[0] +# 7903 : ztutrid_B[0] +# 3849 : zuldplz_A[0] +# 7850 : zuldplz_B[0] +# 1878 : zuuHcOo_A[0] +# 5879 : zuuHcOo_B[0] +# 3154 : zxGYfau_A[1] +# 7155 : zxGYfau_B[1] +# 3856 : zxzwFJJ_A[0] +# 7857 : zxzwFJJ_B[0] +# 2100 : zyOEkDu_A[1] +# 6101 : zyOEkDu_B[1] +# 1993 : zyzJCKg_A[1] +# 5994 : zyzJCKg_B[1] +# 2930 : zzFoMLf_A[1] +# 6931 : zzFoMLf_B[1] +# 907 : zzcMJak_A[0] +# 4908 : zzcMJak_B[0] +# 3319 : zzfNBFA_A[1] +# 7320 : zzfNBFA_B[1] diff --git a/test/I.bool b/test/I.bool new file mode 100644 index 00000000..421376db --- /dev/null +++ b/test/I.bool @@ -0,0 +1 @@ +dummy diff --git a/test/P.hq b/test/P.hq new file mode 100644 index 00000000..b91288e4 --- /dev/null +++ b/test/P.hq @@ -0,0 +1 @@ +F (dummy_A) diff --git a/test/R.bool b/test/R.bool new file mode 100644 index 00000000..2bbe32a1 --- /dev/null +++ b/test/R.bool @@ -0,0 +1 @@ +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((dummy /\ ~FYwbLts' ) \/ cBPPrQy' ) -> GAXHFKO' ) \/ ~OyqFcfz' ) \/ ~JLfKWLv' ) /\ ~jHBpLSi ) -> MdGViNK ) \/ ~JSvJmEj' ) \/ xuSIFCt ) -> ISTpNZB ) /\ ~zdqEFak' ) \/ ~opfFvBM' ) \/ BkBNWBw ) -> ~cuAwNss ) /\ epLqtpN ) \/ ZdJoSZG ) -> ~lDohIVl ) -> WfXLnjU ) -> gSEpvJN' ) \/ AMuEPiG' ) -> ~iXBeuTA ) -> HNfWugM ) -> GOcilaY ) /\ ~WQejAzP' ) /\ OyFJbsY ) /\ ~AqxRgDB' ) /\ ~UbqjZRM ) \/ ~iGgWjIq' ) \/ ~hfJgwnk ) /\ JgsgwHS ) \/ ~fWcPXTj' ) -> ~DxnGgUp ) /\ ~BzZbNYp ) \/ ~IhougRa ) -> ~VqJaLnn ) \/ ~VPkzpqf ) -> ~IiuaWCN ) -> ~vRCyMtC ) -> ~sRLczcd ) -> ~JncqXUl' ) -> cnZPYqp ) /\ GTgTqHi ) \/ ~letcNrS ) \/ ~BYscRiz ) /\ NnGbzMm ) -> WPXYulg ) /\ ~lMKYiHT ) -> ~OOMwoWT ) /\ ~Uqizrsc' ) /\ yoUneHp ) -> ~CxMwyUL ) /\ ~GrMHRBu ) \/ NNPbSIX ) -> XalXuTu ) /\ ~WPKPZiK' ) /\ ~byUTlmD' ) -> ~gjzrCtg' ) -> ~fftcHtA' ) \/ ~FepjkmA' ) /\ ~oHGqIRI ) \/ ~tpwPxcn ) \/ AIKaEXT' ) -> ~lUfprbR ) \/ iXQRzms ) \/ ~CJbExvd' ) /\ wkpsMMA ) /\ ~lCoGTiq' ) /\ nyltYSv ) \/ hoHcHLf ) /\ NBrsyfm ) /\ ~epwdrid' ) -> ~QAamCWY' ) -> ~wqylyxZ' ) \/ aLTwDzd ) \/ ovbFhJQ' ) \/ eWdEVKu ) -> ZzMJQOz' ) /\ SVqNhpz' ) \/ ~ivwMPsO ) -> HhbvDtg ) /\ tYpRYOp' ) \/ ~xVIZAYO ) /\ ExKfgRt ) /\ SKpYbHR' ) -> ~IIRBaei ) /\ ijNPduZ ) \/ ~JCxEmNs ) /\ LJhJhvY' ) \/ ~PZAVzAt' ) -> dCVXXic ) \/ ~ysdwHoc ) -> ~lnwpArm ) \/ ~prGgEmX' ) -> ~zkSSdcR' ) -> ~VCbhsCd ) \/ GTAXejM' ) -> nGdVJxU' ) /\ ~AKPmLqi' ) /\ IiClAPA ) \/ ~BwTIFav ) -> mcbwWmk ) /\ dYQJoeJ ) -> FviuMwX ) \/ ~PVVRrBi ) \/ DatTFBu' ) /\ ~xmvArCj ) /\ uUCSWtV' ) /\ FVISReD ) -> iZWpDdW' ) \/ ~ATPvEtg ) -> ~ZIMSksA' ) /\ ~TYrKnMn' ) \/ ~UjMUqGx ) -> woKYhAC ) \/ QOIBFHp ) -> auAwLIy' ) -> rnyCrVa ) /\ ~qLAhDqy' ) -> ~IOHguJU ) /\ ~PEyDTXz' ) \/ hlHBNWP ) -> ~LTeMZVK ) \/ ~nCXsJqw ) /\ OXsfOMv' ) \/ gxpyFLi' ) -> ~ETFgBdd ) /\ ~kIxZaYu ) \/ NppBmmJ' ) \/ ptwSXRO ) /\ sNNzoJi' ) \/ ~dTziUdt' ) -> IZPxNrJ ) \/ tCTwxTL ) -> ~YEjiFpJ' ) \/ ~GsxggRe' ) /\ RJBOfxw ) -> IZrPUHR ) \/ tAIzWlL' ) -> ~owGoBds' ) /\ oXQosGU ) -> ~JdMBDPO ) -> suvOKav' ) /\ oRExmUG' ) \/ ~REcUXoO' ) \/ MossVbB' ) /\ ~ZaMaZnI' ) \/ tsivUdy' ) -> ~FelNakS' ) \/ ~OCUkCmk' ) \/ ~XPjwoED ) \/ ~pbIWkWK' ) \/ gpqUkic ) \/ ~qCBhPBS' ) -> BNCjmGy' ) -> ~OwAgwgh' ) /\ FFDmBvh ) \/ jTChaqv ) -> kNkUdAN' ) /\ IFDperb ) -> PQkoXVN ) -> EXotOUr' ) -> tYFdXxG' ) /\ RoEUrxB ) /\ ~IMxdTha' ) \/ ~lxypZzF' ) -> ~vuwhlDU ) -> ~scPPCuB' ) \/ ~fvarSQR' ) \/ ixzxmvk ) /\ ~jLAvyAt' ) /\ ~gzlKjEO' ) /\ gwPXPzb' ) -> ~jTWltNj' ) /\ ~LxDHaUV' ) /\ ~cvZLYPj ) /\ ~YKmshAi ) -> ~DQxxPIo' ) /\ YVQcgAq' ) \/ QWqdlYS' ) \/ txXsaau' ) -> ~YrISMMp ) \/ HaNNFKo' ) /\ SsZNgby' ) \/ ~xPWVmxQ' ) -> vsFBTtO' ) -> ~OSTWcqE ) /\ ~PUMLpaf' ) \/ ~RvmbCMF' ) -> zcwVEZb' ) \/ ~HpfZPwQ ) \/ UyVhueU ) \/ ~jQAleXW' ) -> ~iEzNHJR ) /\ ~zhWtLAU' ) \/ IQZaqwE ) \/ EiMizMU' ) -> WcOsSiV ) /\ ~xwQyvHB ) \/ OIhkJHN' ) /\ ~ggcuyna' ) \/ ~iNqBmcb ) -> QtPVpci' ) \/ wrYGeBG ) /\ ~ggNwKFD' ) -> icURafE' ) /\ EHsYZpt ) -> ~gWdEuiS' ) \/ zOZXXAF ) \/ ~PTtrCDF ) /\ XtVvaGG ) /\ MOIxvyP ) /\ ukFBLCf' ) /\ toQtfxr' ) /\ ~glcXWGl ) -> ~ncZuFZc' ) -> kSwZNeH' ) \/ ~JbHVBDc ) /\ IkxQRXJ' ) \/ ~ZSJSLyp' ) /\ ~qCHOsGO' ) \/ fhlRYry' ) -> UTplhaP ) /\ tWhDbxz ) -> ~BMIduPB ) -> dNgzZAB ) \/ ~ojGLVHs' ) -> RlLBAMX' ) /\ DfNqtQt ) \/ iHAxGGJ ) \/ ~xiCjXdz' ) /\ lYmGVfU' ) /\ ~gyzSntO ) -> ~KJwqfAy' ) \/ vbGBBGW' ) -> ~mwKdSWO' ) -> ~lWbkKtC' ) /\ ~jhaxutl' ) /\ ~Tmlfhfh ) /\ ~XzCVEhP' ) /\ QZpJdat ) -> ~RESxiXa' ) /\ ~pNVBzno ) /\ GmxNrWv' ) \/ ~VvPdAHh' ) -> lbSDgyf' ) \/ mUFBNrG ) -> ~aLWgDoi ) \/ ~zjaAfhf ) /\ ~ntQNYhA ) /\ ~DRFkbzC ) -> AMIbIUg' ) \/ KKsCswj ) /\ ZPqQRQf ) -> GSBlDlz ) /\ DzyWfMw' ) \/ ~DTMaynU' ) /\ qriqqFu ) \/ ~YWbYmUI' ) \/ ZfOeMJM ) -> ~lwkLGZI ) /\ ~MuYhOGN ) /\ kaCOVxv' ) \/ IIKnKHt' ) \/ YgENHal' ) /\ FuMxQPJ ) -> AZzLjJg ) \/ vOhuxmZ ) -> QaiPSMy ) \/ ~BxqBGof' ) /\ ffBfTwf ) /\ CHGlGpZ ) /\ ~sOugrAd' ) \/ ZwiOGIO ) -> ~IOywike' ) \/ ~txiwnjL' ) /\ SVTNNTY' ) /\ ~ByVxhrg ) -> ~TXLPuNG ) -> RDDTOgd' ) /\ ~KaGMMEK ) /\ ~iGBTwSr' ) /\ VKfqbeN' ) -> GTIJsZR' ) -> XlNmhwG ) -> ~PZrckJj' ) \/ MpmYpyC' ) \/ ~IZYQVhN' ) \/ ~XcqNGdC ) \/ ~yZEWGUz ) -> ~xWeGteS' ) \/ ~iuAVZMa' ) -> nLPnvDC' ) \/ ~SKuUZYH' ) -> oBOLIGo ) /\ eFzseah' ) /\ AIxeqZU ) \/ mTlNFDT ) -> ~fZJgujW' ) \/ uNhmQVk' ) \/ ~bkxVzRj' ) -> ~FneIVni ) -> ~jJXPUzq' ) /\ ~nhjFaRM ) -> ~EJXWSne' ) -> ~BffKLxR' ) \/ ~DqnZLyR' ) \/ ~OfyXZKl' ) /\ ~wSOMCGZ' ) /\ JzNrOeJ ) \/ sqoHovv' ) -> ~MeLCCbj' ) \/ cCefFdt ) -> gBuHXJA ) /\ ~udQzTeK ) /\ cWEcKub' ) /\ ~LPexngi ) /\ oHJvEgP ) /\ tKDBWpQ' ) \/ ~elCYzAu ) /\ qecOJSK' ) /\ XnhXHrV ) \/ ~YxNcFSC ) \/ ~PIyBAkL' ) \/ fgAykAh' ) /\ iVBYgSB ) -> ~vBCyTXo ) \/ ~EVcQAKI' ) \/ ~GCtLdeP ) -> Wjyytue' ) /\ orawkwG ) /\ ~AMknBpN' ) \/ ~bOtftvD' ) \/ ~qfeJFFZ' ) \/ ~cJVuKqb ) /\ lNNdSCB' ) -> dufgDZM ) /\ QzzbKxo ) \/ KRVVEWX ) -> jhWoyRS' ) /\ ~JkHDBVs ) /\ ~QSZZtmW ) /\ QyoHYhc ) \/ xcvYzmR ) \/ ZDIKVvH' ) -> ~KULOuOV' ) \/ ~LQoiJPk' ) \/ ~rEbDqki ) \/ ~JkzsDIH ) -> ~PVBWFVs' ) /\ zEHZmOk ) \/ CLtmDlz' ) /\ afXbWDk ) -> ~lJmmDjw ) \/ ~MGCATzu' ) /\ bdOkpsK' ) \/ ~sFMiTTA ) \/ ~enauJXK' ) /\ yaMQQco' ) -> wBtWBLJ' ) /\ ~rGBnZyg' ) -> NSuoikY ) -> BUlbYYE ) /\ ~vbKXoqt' ) -> fAnHGhe' ) \/ ~moslmIN' ) /\ cGjoZSQ ) /\ xjbvTlX ) -> wiRoSpb' ) /\ ~tNPUYla ) -> ~ZqYYcIt' ) /\ ~JdBmtqB ) -> ~epVXrXx ) \/ gmArxvl' ) -> hICHOwo ) -> fyHrvjF' ) \/ ~IUyzPiw' ) \/ DGojjWU' ) \/ OTKLEmS ) -> xxLJomb ) -> IZuLcAf ) \/ ~pPJvrEB ) \/ ~OmLyNIP ) /\ GuYTubV' ) /\ ~ybVHoJJ' ) \/ ~yPHJiyU ) \/ ~pRGerlD ) -> xcfPSNb ) -> wJGNGqK' ) /\ ueKhdaR' ) /\ rvvgitw ) \/ ~twvCyZE' ) -> ~QuCRPxP' ) \/ ~JDoOCjf' ) \/ ~NcpJjcJ' ) /\ ~UIrowmE' ) -> EGWwnTk ) -> ckAVTph' ) /\ ~jQZemHn ) /\ rHHfVoF' ) -> ~dfRHQyc' ) -> DmEEkbE ) /\ jTUehxD' ) -> XRvBaQW ) -> SWJiXwz ) \/ ~gwXlSRh ) \/ qrcYGqy' ) -> ~qXPhrYz ) -> RpFnYDo ) /\ yVXdldi' ) \/ ~pHZnsKG ) /\ ~rfzDgyO ) /\ uCOrSKL' ) -> ~FKkXfpe' ) /\ ~vawvhjm' ) \/ ~dEyrdjr ) -> ~sqlpQtX' ) -> ~uBanWIB' ) -> ~pBNVbsT ) -> ~dcuYuMC' ) /\ ~gCyWsAk ) /\ ~ZLKtwyE' ) /\ vIYhuQg ) /\ slDmGDv ) /\ jriiYao' ) -> ~mOHwbne' ) \/ ~ipxVPjo ) /\ XrSNmBw ) \/ qfDUtHW' ) -> ~vKcdLWJ ) -> ~uCvPDOH' ) \/ ~DWwRIIX' ) \/ geGjxJU ) -> ~Pcikzqr ) -> jBxTCvQ' ) -> ~SZsBzZE ) \/ CoYahuI ) -> ozSnYCq' ) /\ ~vpsRfxi' ) -> ~regFEGO' ) /\ ~CUZzJDE ) -> ~MMvyNQC ) -> kCBdJAC' ) \/ ~XgbqROO ) /\ kKvfPUR ) -> DRnVmnc ) -> hHNjxOT' ) -> lgJmeLV ) -> vXHAeCI' ) \/ WUGPWLa' ) -> EypFuDg' ) -> ehWSoLO' ) -> ~nGSfAIc ) /\ ~AZcIUxa' ) \/ xVQnnYG' ) \/ LmUyZZy ) /\ iKwGLUb ) /\ ~myNywms ) \/ ~uHSJMVy ) /\ ~gEGKsnR ) -> ~tiihEmr' ) -> ~UCnvnxj ) \/ xcAmrYn ) -> ~WfvWiXT' ) -> ~VBoQAhE' ) /\ ~FUAXCFU ) -> tVjylMO ) \/ ~oNZNEIO' ) /\ ~pdtcDNo' ) /\ EAslhAm ) \/ ~ggspODg ) /\ HIbDXrX ) -> ~iBnfGPU' ) \/ RQHlgGm ) /\ ~ZLDcrdm' ) /\ ~XkbzMBA ) /\ ~NvcCtaG' ) /\ kkDEdyb ) \/ ~zAiuthM ) /\ ~QbYsnDH' ) /\ ~MlLToKR ) /\ dJallTO' ) /\ mSWNFPL ) -> ~fUKNbbU ) \/ aNzscCX ) \/ ~dHEMNai ) \/ odcVdil ) \/ VCUrjPy ) /\ BmfYbuz ) \/ ~DvCLAHm' ) /\ ~czebiMc' ) /\ ~EofmrTj' ) \/ ~mXseAkM' ) \/ ~NCfjIRN ) /\ rcCxvcN' ) -> ~pAoUukO' ) \/ ~QrobNkn' ) -> ~ZcYvnzb' ) \/ qHyhZSh' ) \/ ~oLoLdSn' ) /\ jgQicgb' ) -> uiLNsPO ) -> vlcrHvD' ) /\ ~MFKxnyQ' ) /\ FochxCd ) -> RuCHhPv ) \/ ~OQXoVeX ) \/ DpNHxoT' ) /\ nQsoiST ) /\ RczehvO' ) -> ~jaEFzLo' ) -> ~IqpEKVv' ) -> ~sFHMYND' ) /\ ~wxwlXii' ) -> axxIABK ) /\ evxCCvn ) \/ ~opMpAVl ) \/ OEqVHCX ) \/ ~ZHXscUr ) -> IsQwFVW ) -> ~gaAOJUi' ) /\ ~msClmPO ) \/ ~ALMouNO' ) /\ mRiPHNf ) \/ ~iiIxWtY ) \/ ioxmaDY ) -> ~VuMfNjG' ) -> LvVDctn' ) -> HFEVLUQ ) \/ ldGNVTO' ) -> ~eORIaKh ) \/ ~XSHypum' ) \/ ~zSkIqMN ) /\ ~APScOGK' ) -> WJHgpOg ) -> WWNgMCm ) \/ RRZsqOA' ) /\ ~CIKHDST ) -> zIhpcMn' ) \/ ~MCBTEZn ) \/ ~zgmXHxF' ) /\ ~MxLBJFd ) /\ JupnqFO' ) -> ~aJMThfj ) -> ~TBHwutu' ) \/ bfSEEXm ) \/ ~ZvuOmfI' ) /\ ~QaWYUKN ) \/ RsAmmGy' ) \/ ~WMoWZFI' ) \/ ~yRrFHvp' ) \/ ~tkZZlQp' ) /\ ~qSpBnRW' ) \/ ~bVEmnLC' ) \/ MaXxAYt ) /\ AsBYCjN ) -> GKekShn' ) -> slOFRJc' ) -> oVZiUqU' ) \/ eazMRUQ' ) \/ LlsbMbA ) /\ ~rbDaDTK' ) -> gHnorpd ) /\ oKQvrZJ' ) \/ yCVXFcL ) /\ ~KTjcPSA ) /\ ~jYhrgFo ) \/ ~UPPoAcJ' ) -> ~aVllIQT' ) -> ~dWXFpFt' ) -> ~CwFxkKC ) -> ~rfAqMXk' ) \/ ~eDqhJXj ) /\ omjxWdZ ) \/ ~IhseHmp ) /\ ~SAucWGp' ) \/ ~uzHomBT' ) /\ ~LQfBaMw ) -> qgMwcTr' ) /\ aGQDFEg' ) /\ ~EJZdYmq ) /\ aZoFcMk ) \/ ~jBpNSTw' ) -> BLNzOSi' ) /\ uMsjdFv' ) \/ xJTTAsI' ) /\ ~fIylYgK' ) \/ wnWggWD' ) -> ~UgfKefH ) /\ drOjxoF ) /\ ~NFKvfEn ) -> tfERnQd' ) /\ ~EkxLWzT ) -> twxIwpz' ) \/ LDCOass' ) /\ ~GJIoQes ) \/ ~ATiEkbO ) \/ ~dpssJRj ) -> ~zZXdDWX ) -> ~KjEaNcF' ) /\ ~AsYlUQd' ) /\ RALGxAs ) -> ~dEPYNMx' ) -> WBtMdQF' ) \/ JzZQUav ) /\ ~edfKTgI' ) /\ ~QveePav ) -> ~CKnZxsk' ) /\ atpSdkV ) /\ LVsBYQd' ) \/ cMhFCkZ' ) \/ crwvmvk' ) /\ HtKMzjd ) -> EiZFYdF' ) \/ ~bKzzAWn' ) \/ ~GSiwHld' ) \/ OdBMjrH ) \/ TOMeHOJ ) -> bemWqes ) -> PuNTuaC' ) /\ AkbrYgB ) \/ ~uuMWsCp' ) /\ ~LWBinYC' ) -> ~nxCDXAo ) \/ ~gTsIbii ) /\ hsYPTOR' ) \/ xsaOiGb' ) -> IbEIPmu ) \/ ~lgNxQUo' ) /\ ijELFUm ) -> qCgxQKJ ) \/ ~RycqsRE ) /\ ~ZGHNOWs' ) /\ JepJYji ) /\ ~kyhDoJA' ) \/ ~EVmJSHH ) -> ~lnbYwGS ) /\ ~iJdlDhE ) -> GmCCWSc' ) \/ vQIcPRP ) /\ DOCxYSY ) -> gQDtbCU ) -> ~GepkTkr' ) \/ ~vUSPlch ) \/ TksIaFq ) \/ igjrTfd' ) -> YdQTlPo' ) /\ ~PsiTnxY ) \/ NZjXxWq ) /\ ~JMEJspD ) /\ ~LYZXGWU' ) \/ ~owtckGT' ) /\ ~iCDjfNL' ) /\ raphUFp ) -> IZsxagg ) \/ ~AnHqacf' ) \/ ~JChsHtC ) \/ KTjtXxU' ) \/ ~dMRsqOG ) /\ bunZtsC ) \/ WkTsQPN' ) \/ WicHQiv ) \/ ~vhpWdcQ ) /\ AMqrkug ) -> ~LXndfXb ) \/ TMbkVpq ) \/ KtMKKWU' ) -> ~qraSpMU' ) \/ ~xVdFBqg ) /\ ~dRgFgRl ) \/ ~DPrZOHU ) -> ~ltjiJdq' ) \/ hKUnOLU' ) \/ ~woYKwVR ) \/ ~kVPpHyG ) \/ FaVlMeT' ) /\ ~qzSAVKW' ) -> ~KyqqcoC ) \/ XrbFbhL ) /\ ~OyNDEPh ) -> Xebfwzo ) /\ ~cCmsDLi' ) \/ azApXEh' ) -> ~FIpskOE' ) -> tObLGqI ) /\ MvTNSSK ) \/ ~lIXMsOu' ) -> nMJATxO ) -> ~FaKOREG' ) /\ ~UKhAOOi' ) -> ufdOMQT' ) -> ~afDqEFT ) /\ ~pwHEBYQ' ) -> XEctpJF ) \/ UclchtC ) \/ ~UIbKorh' ) \/ ~LzJAYfu ) -> YyCIXhu' ) \/ BmUdCnd ) -> ~qIOWKXY ) -> lYMhtSi ) -> ~NdJxGxo' ) /\ tgeqgLz ) /\ ~FxSpHuF ) -> lemDrqA' ) -> ~rXXlerL ) /\ pHXqsPP ) /\ ~qAHXrLb ) \/ ~xivDnWG ) -> xLIzJmJ ) /\ ~ibWQCkD' ) -> ~skZaeqC' ) \/ ~LJwxcBV ) -> xuEmAjF ) \/ CUfBvcy ) -> cBicmDP ) \/ oCMhlPU' ) \/ LxYDMKE' ) -> mTjMWVF' ) /\ inxyPLr ) /\ ~CBkdtRe' ) /\ nNdPFsP ) -> ~McaqHbN' ) /\ isGoBhk' ) \/ kJLJJOL ) /\ ~QYBljwp' ) /\ ~hWSFDWL ) -> ~qdvnFso ) -> ~kCkNPxX' ) \/ ZcqZIDY ) \/ QIzykOS' ) -> ~lrDCtBI ) -> olWfHcB' ) -> ~GzBeNOb ) /\ AbUcdqg' ) /\ dhWxkWK' ) -> ~uTldHoK ) /\ sbhdYPM ) -> GrwdKWT' ) /\ ~IXdoLpr ) /\ BiLrZko' ) /\ ~uZXGeLy ) -> ~qEitIYp ) -> XsKqbdS ) /\ ZLuJwQL ) /\ WwHZfvc' ) -> nnnKixo ) \/ wwWjpsn ) \/ RJLReTz' ) /\ ~ApvNKaQ' ) -> racjGJy' ) /\ ~IzPHIYm' ) \/ ~dbFqRlg' ) -> sUMcQFB ) -> ~UxspSMe ) -> ~UFcVumq ) -> ~vYRSTwl' ) \/ ~KtgViuS ) \/ ~SNsWgbV ) /\ ~beVvHnk ) /\ kWNGNTe' ) -> FcTMaIa ) /\ EhqYHFS' ) \/ CYdiaEW' ) \/ bARteyG' ) \/ YSjZSSd' ) -> ZYAUwrj' ) \/ ~joxTCxo ) /\ WmLAXun' ) -> MBLeVDl ) -> ~hAkeHPE ) \/ rZQZEbQ ) \/ vGLOuaI ) -> ~JdYOZjK' ) /\ ~OMRVuDX ) \/ zDGFSwc ) -> ~ENhWwNr ) -> qaOzjgN ) -> ~hrzWMcg ) /\ RBwMpdz' ) -> ~SpzKvje' ) /\ ~HDeMNyt' ) /\ ~EYbWjoZ ) /\ yDNscWl ) \/ ~wDvZlkx' ) \/ yjZDwcU' ) -> ~POevkky ) -> ~FZwDYvP' ) \/ enkCBSY' ) \/ ysbUVAi' ) -> ~JjRbznL' ) -> ssRJlev ) /\ ~REIFJzN ) -> fSovBsE' ) \/ wtlOZMe ) /\ CWsYoeS ) /\ jwaxULB ) -> DuaQrhJ ) \/ ~bCOZYOQ' ) /\ hNtizEw ) /\ kacHDGA ) -> Ljtoddn' ) /\ DAaLAzZ' ) /\ JraDUvD' ) -> ~nYUerli ) /\ ~GxcoKWo' ) /\ mlZiFJA ) \/ ~Zxysjwr ) \/ VcnRmtg' ) /\ mLfBTKW' ) /\ Mafepgx' ) -> lePeOfN' ) /\ ~uPQuDmd' ) -> cLMgwhU ) -> ~uaaloru ) \/ ~bemgFFE ) /\ ~DzxfqNa ) /\ JeeAsOC ) -> iARQUBY ) /\ ~ybiEsmz' ) \/ ~cNscuBD ) /\ KZllalk' ) \/ aqyXkcN ) -> ~kJUgCWg ) \/ xoKkIop' ) /\ ~flCFwCr' ) \/ oUhlxDE' ) -> XzzdaYl ) \/ aibEjOq ) -> SSOLCoP' ) \/ ~cdCnjfE' ) /\ KSIIzJO' ) \/ EiLSQus' ) -> ~uPVpsBv' ) /\ rDDLLlM ) -> DLtUEnp' ) \/ ~zeLKBYx' ) \/ tFcnHly' ) \/ ekeikGW ) /\ ~DrgaIOc' ) -> ~xvSXZtg' ) \/ YcvAaSc' ) -> ~ogxCwJq ) -> ~mXAlbhU' ) -> ~aJHtzaP ) \/ ~zOdtGTW' ) -> ~IobwEVi' ) /\ ~wqzTpvm' ) /\ ~PJbFiHQ' ) \/ ~YoTNUHV ) -> suzmFJC' ) /\ ~GXLZoCj' ) -> ~pgnCAQr ) \/ ~BdQykcD ) \/ YHmWaOv ) -> ~njVLSCa' ) -> ~DJBcAIl' ) /\ zZqhtZM' ) -> ~EjsjSIB ) -> ~UHaqZyM' ) \/ ~JnbkBpa ) /\ ~LZrmuAc' ) -> ~cUDRBvu' ) /\ ~OfQDLxn' ) /\ ~yXRNOti' ) -> ~LypqiGo' ) /\ ~rZqiYkk ) \/ JxDcaRQ ) \/ ~GJqbEBP' ) /\ utfOieG ) \/ VmVPjfh ) -> aeCBKrv ) -> iBiGrQL' ) \/ zFVVQik ) \/ ~PYdbsED ) \/ risYGHh ) /\ ~ZAdsPyy ) /\ STOPrBt ) -> ~SPMNNuA ) \/ MZyDnVj ) \/ PSOCjOY' ) /\ ~vZtBszM' ) -> ~CXMByqi' ) -> ~AhbQgqh' ) -> ~SoAIkBl ) -> KDfDhea' ) \/ ~HtkxYCS' ) \/ LcDSrkR' ) /\ ~XjJstbf' ) -> ~jnagVrB ) -> GIjsBNc' ) -> ~jybCmoi ) \/ ~pumrjZH' ) \/ ~oBwVQXE' ) -> ~BmgIfiz ) -> igpbZGa' ) /\ rXkrmLR ) \/ rRbIaQT ) -> IkVuDSx ) /\ PqWqeUJ' ) /\ ~xJxCbFc ) /\ ~cISthTa ) \/ ~oRyMPKk ) /\ ~pNCVCME ) \/ ~FKTBPro' ) \/ xtLECJf ) \/ zzcMJak ) /\ GSxOPSg ) /\ ~gHoXPlG' ) -> ~FbtGMEm' ) -> bVYSCeX ) /\ ~ISqdmJE' ) /\ doTvfCv' ) \/ unfhKxf ) -> ~zTkJdjA ) \/ ~cHPHUMi ) \/ ~bYIXYrX ) /\ ~YcXlrTL' ) \/ GVgQNHZ' ) \/ AiikbyS' ) /\ PhJsPap ) \/ ~oJWUwYI' ) -> KhoQvBC ) \/ jOUCOWk' ) \/ HJnNqOT ) \/ XpanTIx' ) -> UNPjTlC ) -> kSzngeR' ) -> zfsAjJY ) -> ~HxTMhpA' ) \/ SWWrRzB ) -> sNJuutq ) /\ ybkcDPG ) \/ ~ytGcqKZ' ) /\ RoCDSQZ' ) -> tivdJbL' ) -> ~yUuWvby' ) -> NImnIYM' ) /\ ~EdfNmdg ) -> ~FKhkNgw ) -> NyUCtfk ) /\ eBhQlIW ) -> ~UzRCkgs' ) -> sQAUvxR ) /\ ~ijBhlqT' ) /\ ~rlsHsSL' ) \/ ~YdWyEvt' ) /\ HEycTyq ) -> aMIzTim ) /\ ~iBnXDLw ) /\ CzpWnvZ' ) \/ ~BnSgiES' ) \/ uNHpHvn ) -> UrnFkWT' ) /\ jqKVLbo ) -> ~aqQBDMn ) -> ~PANbHzB' ) /\ unCSdoa' ) /\ XjgyMvs' ) -> FzTNNrf ) /\ quCFpec' ) -> ~EFfoEfV' ) /\ ~ZFxPWZF ) /\ AwEgsJo ) /\ ~motLkGa' ) -> ~wMfidZx ) -> fCMubKc ) \/ MkwobrA' ) /\ ~cljIwrC' ) \/ nYtFcOs' ) \/ ~LzpJAmd ) -> ~uidgGUH' ) /\ HIMywzj' ) /\ ~rGCtkiB ) \/ fnTowtj' ) \/ mZMfBDf' ) /\ ICyGDLw' ) /\ ~kiOBQtt' ) \/ KvVHVqx' ) \/ EIEyBPA ) \/ ~EDrCQpC' ) /\ AlfEIRB' ) -> ~yfvNjoQ' ) \/ zEdLZlt' ) \/ kJYipBA ) /\ eDiORNF' ) /\ ~SrFXIaa ) /\ ~fOUMLNQ ) \/ wDzFfTh' ) /\ ~jHcynvH' ) \/ ~wdJTBri ) -> QzGHJJC ) \/ ~KfCjtwU ) \/ jrJVDxY ) \/ xwEkmKI ) \/ ~BGJPWAR ) /\ JzmgYiE ) \/ ~haqZRIZ ) /\ mTyvgNm' ) -> ~hlCLFvP ) /\ ojFBOOQ' ) \/ ~pTWanLo' ) -> qixVLuH' ) /\ zOfPuir' ) -> puDZqAc ) -> cbZHDgk' ) -> SxCcKCm' ) -> FZAIzpq' ) /\ enWvCSR ) \/ LuNCjjX' ) \/ ~tkSdOlA' ) \/ JicTqnk ) /\ DurjKcu' ) \/ ~TiajNeb ) \/ CZQekbp ) \/ ~YxjxYsj ) -> YNHEqBv ) \/ ~KVsiJzK' ) /\ UMFTdta' ) \/ ~hOgxyrD' ) /\ RlTPIJC' ) -> kbykAml' ) \/ ~Zncwvmu' ) \/ ~SkYlxDN' ) \/ ~xrFMZRV ) -> ~rtOdsBy ) -> ~nbmatGs ) /\ ngavrXn' ) \/ UoXxjKY' ) \/ ~fNqzTcS ) /\ ~iVGWQex' ) \/ ~uwNgwWk' ) -> tyNcMok ) -> ~pJkFBVI ) \/ ~uqrZgAo' ) /\ ESxwNfl' ) /\ ~TxCmtwz' ) \/ ~PTiHCQq' ) -> ZBJhGfi ) \/ ~WcpvsRn' ) /\ VJhsktq ) /\ ~CftsmPE' ) \/ ~qOnocnw ) /\ ~YsByAVR ) -> rbDrdRd ) \/ swhlMAt' ) \/ ~NqKZMcN ) /\ ~dnhbWCx' ) -> ~FkdLRqM' ) -> ~IeOJRnA ) -> ~HkhDUZg ) /\ ~AqIFWYb ) /\ ~EVGPLnj' ) -> ~jXldnml ) /\ ~JgHkVdR ) /\ TeIbMMt' ) \/ ~vXYmaVM' ) \/ iulnXIc' ) \/ ~zbKxAaQ ) \/ ~VfUABtE' ) -> ~IfcAfIM ) -> ~XNLvOon' ) -> SOytJFO ) \/ aUPSYkD ) \/ YgvMvnL' ) /\ ~sKuVtzL' ) -> ~DLxKwMA ) -> ~CYaNggQ' ) \/ pDxQoWY ) \/ ~fgyuRkH' ) \/ lyIjeOS' ) -> qEJZHTu' ) /\ plitYlu' ) /\ BDszrhJ ) \/ ~sEuVonE' ) /\ ~BEeCbhx' ) /\ ~lXMjMHL' ) \/ CzlGFAc ) -> ~TNEPuXq ) /\ ~eRtFNaD ) \/ ~UgQQDwg' ) -> ~Rekwnlj ) \/ HWoFwEH ) /\ ~YkQvRGc ) /\ ~LKXWrUQ ) \/ gfigTqL' ) \/ ~IkBDLXb' ) -> VANFljY ) /\ ~eEsCkwf' ) \/ TghcGdw' ) \/ NXOFYYe' ) -> tRrBffe' ) /\ xfuIaJV ) \/ YCOZDUM ) \/ KOdeZtm' ) -> FLJkScw' ) /\ ~GjHFlVV ) \/ vTkDogw' ) \/ ~lJfdder' ) \/ eLgEayO ) -> ~SDxikkx' ) \/ ~SSEuFtw ) /\ ReFXBqQ' ) -> ~rGDmCoP ) -> EczVDbX' ) \/ ~WUHZsLR ) /\ ~hpxXXNb ) \/ gkbTKVJ ) /\ ~iNRnEij ) /\ ~lzMyjki' ) /\ ~HoHUZbC' ) /\ diAtkNv' ) \/ PpXSHKQ' ) /\ ~qATWUEf' ) -> aHOsTij ) /\ xVdyswy ) \/ ~eiudpSo' ) \/ ~cUvHOiv' ) /\ LpWHUOy' ) -> ILmeQFk' ) /\ ~NzEvrTJ' ) /\ ~TkXVPQm ) \/ zMpynCz ) \/ OxFXjyR' ) /\ fkIQtnf ) \/ ~mPEdtoA' ) \/ SQvGAdM' ) \/ yWMypIB ) \/ ~tNJQfSm ) \/ ~QdCdYpM' ) \/ IUtHAgF ) \/ mbNilOD' ) \/ isqpOaH ) /\ ~vJQBefi' ) -> ~NaUQrLx' ) -> qFbJyem ) /\ EHdXZzI ) -> ZAteTxP ) /\ jLozjZX ) -> ~QAvwffY' ) \/ ~EtXxzKi' ) -> YehBXIO' ) -> IyADHCh ) \/ ~kGTxZBF' ) /\ ~HYTWqMI ) \/ ~qcdgpPX ) -> BKCeavs' ) /\ rFwWPXf ) \/ CqmlKen ) /\ BKcEbdS ) \/ FKWtkTi' ) \/ ~ZYuJPni ) -> ~UplTJGY ) /\ ~oDEGpwM ) \/ ~lVERZIR ) \/ SwdCPzb' ) -> SzxvDDd' ) \/ ~XtfMqNZ ) -> fKYltEJ' ) /\ LdHhvat ) -> AcGLGBT ) -> FuMyiIZ' ) \/ ~vjhuDUC' ) /\ NOlqMZm' ) \/ ~gKntdHl' ) -> ~HxNYeCz ) \/ OTHKuVt' ) -> CKRzbgc ) /\ ~kgFQnAs ) \/ LpaMelW' ) \/ ~XWtzHwC' ) /\ ~XpcMggw ) -> ZFbtQXZ ) \/ ~vmNqaNX' ) /\ ekkWYGr ) /\ ~gIaMVlY ) /\ UToXrDm' ) /\ ~lQwXSxy ) -> ~svsLjNP' ) -> IMuNiKg ) \/ lrEMmcA ) -> fPtDqhN' ) /\ ~VuAWSGH' ) \/ hAXCNjB' ) \/ daDzakb' ) \/ caRlpnn ) -> aJWGHwn' ) \/ jvsrMgQ ) -> ~sOVYHms' ) /\ hWdOBMn' ) -> ~BCkmYSi ) -> NdkhgSI' ) -> wSqbqpO ) /\ IUvaAmT' ) /\ ~LpaMUVF ) /\ bOkHAms ) -> ~qeKEXtD ) /\ ~ukFhTKX' ) \/ uUTRXRA' ) /\ ~GsqHMiu' ) -> ~rYqjMjS ) -> ~BkBHUJL ) /\ ALgFsvK ) /\ dxTUyWf' ) -> pkAzTnX ) -> rbCzUHC ) /\ wxrzNeH' ) -> SSVfNYK ) /\ pxIQAxK ) /\ ~bkQhLiB' ) -> sFMFIyH ) /\ hYgPITn' ) \/ ~NMsBfAO ) \/ CnfBnZN ) -> CPLijyO' ) -> ~EliEyEc' ) /\ ~FJVVbZR' ) \/ ~sSRXoWb ) \/ VzWAsWa ) \/ GUzmYFt' ) -> ~yOADFWa ) \/ ucKddZd' ) /\ RbXunLT' ) -> ~ZPXVszh' ) -> ~lJRwjBs ) -> PWMfIRb ) \/ mRAMfJI' ) \/ ~ZqZiHMf' ) \/ zWpJemh ) /\ ~UEhNMVh' ) -> ~CBBlRnQ' ) /\ ~JHWByox ) -> qEjEeDl ) /\ gZOxnHj ) /\ ~QsLrwNk ) -> SvimFkH' ) \/ nDfGInR ) -> ikkNNPu ) \/ ~JQwhFKT' ) /\ ~PdPJfTk ) /\ kMuHOwo' ) /\ GdNVRRU ) -> lbpKLDE' ) -> ~tZGdufx' ) /\ dynqNjP' ) -> PFKAtQV' ) -> ~VqSWPZY ) \/ qFKPFZP' ) -> IfsRonh' ) /\ hLMKwFe' ) -> LViyHHF' ) -> ~kWPGZyt' ) \/ Pwaamws' ) -> upriQtR ) /\ ~hZkvDmp ) /\ rWvsLaS' ) -> JCFFwLH ) /\ LXANhUk' ) \/ ~isQedzG' ) -> ~mpHxiha ) -> gvDPCMz' ) /\ ~hqYWtpP' ) -> ~rFQXimB' ) /\ ~VHtVFFp' ) -> rQpsPRd ) \/ ~kRFqGaX ) /\ gHlZbsV ) -> XZRMiNg ) /\ ~zUmslWl ) \/ ~sysEsmk' ) -> ~cyKfCCw' ) -> xXZHCoN ) -> ~dhoukPQ ) -> YGnettD ) -> HsLKxXx ) /\ ~dgFsbhi ) \/ nWZPyts ) /\ uFWoVCM' ) \/ szBTUTb ) -> VtlRyXp ) -> OilFlRU ) \/ ~ycdXrJr ) -> fYkxYmy ) \/ JBzLtCU ) \/ LprRgcC ) /\ ~dZhMNLl ) \/ ~bLeyJNe ) /\ ~AqyFCeA' ) \/ HRbCEVc' ) -> ~oZwxYLB ) -> ufOCsVL ) \/ oacgEAE' ) /\ BGAbqAD' ) /\ ~SXBzEsh' ) /\ nGWJqoE ) \/ ~wOCZvsr' ) \/ lkTPexU' ) -> ~bbcHKPN ) /\ ~OGEzynK' ) -> GnHsZDY ) /\ inSuVTf ) -> ~zItCUBs' ) /\ BlqpHPc' ) \/ ~tgDvaDm ) \/ ~zhvQVJA' ) /\ RnCZphr' ) \/ YpERWvW ) /\ ZYNcLZO ) /\ qBIhtmy ) -> ~MFnmFsO' ) -> ~dljUVfu' ) /\ Ccaietl' ) -> gOWYfyZ' ) -> ozkEvNr' ) \/ FPJefvH ) /\ ~ipFlafe' ) /\ ~HsskFII' ) \/ ~qljKNDD ) /\ ncUVEBT ) /\ ~LEqYhBP' ) \/ gASoGLQ ) /\ ~dGgUgLD ) -> ~waebNhi ) /\ XyJnoHW' ) -> oNvkQDK ) -> tPUSVLM' ) \/ ~YieWPON ) /\ ~AgOpuYL' ) \/ DgnhfZH' ) /\ ZnTfBqu ) /\ ~RsfJyHH ) /\ vBBDtqS' ) /\ ~fOoOTnD ) /\ fBMiOeN' ) /\ BvIsLpU ) -> ~pipUXwR ) -> ~bBmSdRn ) -> fJxbpIp' ) \/ ~qcIlNao' ) \/ KJTZbTR' ) -> EJRDtKz ) -> cBbXEUq' ) /\ gJYDhnO ) \/ ~xhdbONh' ) -> trxdqMm ) /\ ~KATKeXA' ) \/ ~XdZbNjo ) \/ ~JGSTJTy ) -> GxdPvyI ) \/ ~DBaQqjp' ) -> SdznULP ) -> ~pLoVNqS ) -> ~RwZMLLA' ) \/ ~LgRJiNh' ) \/ lXabyzL ) -> ~OfWIWCn ) \/ NBqjuRp ) -> ~mkdfqZQ ) \/ yWpIrpF' ) \/ ~lwFLjcH ) /\ ~xVIezJV' ) \/ ~BHNRBRo' ) \/ EjNwzSP ) \/ qxjWMtW' ) /\ KkvsYEI' ) \/ OCNkajL' ) -> qkRyBJw' ) \/ yPaCMVC ) /\ ZIIEILH' ) \/ IBbyhwj ) /\ ~RzaEkIP' ) \/ KJFuUUy' ) -> ~iqGKurw ) \/ hfqqGAV ) -> pHIBmpj ) \/ RDmzRvb ) -> ~wURNiLE ) -> ~bokYZTt ) \/ ~YdfVJjX ) \/ KeQNaMJ' ) -> Pnwgqdc' ) /\ PZPsPYA' ) \/ ~skujzKf' ) -> ~wVGXwMC ) \/ CNsxWUy ) \/ LkEiYAs ) \/ FleMOwa ) /\ nEzfIGm ) /\ ~IFPpirX ) -> ~tqEKKuR ) /\ YRJYUAk ) -> ~laWkNww' ) /\ bYbwhlN ) -> ~OBfriES' ) \/ ~ZHfPPCq' ) \/ wftUlmd ) -> EWUpWif ) \/ HkzjaOa' ) /\ uExUCjG' ) -> ~ojTkCVg' ) \/ yEkrRnf' ) -> ~dtooYqm ) /\ ~RsFTTTS' ) -> ~FWwXaJe ) -> ~QKDaOZk' ) -> ~tlRSMtV' ) /\ ~LaDQshK ) \/ ~DYQremX' ) /\ ukrtQGJ' ) /\ ztOgJbq ) /\ CNbuexw' ) \/ LhhvZZz' ) /\ AYhHHfq ) /\ ~sIzcrWT ) /\ MabaECP ) \/ nHAqreO ) -> JddqknU ) \/ ~GCZMBUs ) \/ ~PTGlizP ) -> ~IikuvYh ) /\ ~srkypbY ) /\ XQddGiq ) /\ ~PwaFjln ) -> ~DBNVpSX' ) \/ BWPcdzc' ) /\ ~ZCjtNIT ) /\ ~OKtwTiA ) \/ ~szYOgAr' ) /\ STZoVyp ) \/ ~ytnjxAk' ) -> ~OXCoSNE' ) /\ ~YPepubI' ) -> gHFLUFd' ) /\ ~akRxvKI' ) /\ eGsBhqr ) -> ~UcqtKxH ) \/ NvVsmJt ) -> ~MxCIxEW' ) -> WKNXkvp' ) -> HOEqqfU ) \/ ~XhsZHdi ) \/ ktliBIh ) -> NWqGTgc' ) -> ulZArsG' ) /\ ~iGDTrFK ) \/ ~kWIgjOR ) -> ~pxQneDr' ) \/ tWcYZmz ) /\ SgLmMJy ) -> sivhQya' ) -> ~SFpyVsg ) /\ ~LyaZXkm' ) -> mYEujOU ) /\ FCnqMnw ) -> vsgbJIf ) \/ pgdLofs ) /\ fadPLny ) \/ LnfpHeO' ) -> ~zPXStZh' ) \/ USLWhCm' ) -> ~imPHAlz' ) \/ ~pygrzvO ) -> ~fPhYjSb ) -> QxHhxwW ) -> ~QVGhdsC' ) /\ ~RayquTX' ) /\ JQZEnMp' ) -> BrlfNQH' ) \/ ~kbFtWcQ' ) -> ~zrnjAri ) /\ NgGQvyH ) -> tedbryf ) \/ kncsdEF' ) \/ fQQIuEd ) -> ~PeHsHfW' ) /\ ~knJVqBJ ) /\ ~UPpayqM' ) -> ~SIxxgfy ) -> tjtxONk' ) -> ~LCwzuQd' ) \/ LoUgmKG' ) /\ ~mRzfbip' ) \/ HDUcUjH' ) /\ oDvuoPh' ) \/ ~MTLVOFQ ) -> CqzjLKD' ) -> ~CZqeLFZ' ) -> ~VVIdllo' ) /\ ~oWnyzjB ) \/ ~dEfsrwG ) \/ ~aCmHIsU' ) /\ ~HmkmQpA' ) /\ mVcuPSr ) -> ~BeGGFAQ ) /\ ~jGigJFs ) -> sSiGfRu' ) -> ~CczDOft ) \/ SeEucuO ) -> FYyOewj ) /\ HzdkknV ) /\ HZcIlZV ) -> WfJxHvU ) -> ~IilJeAM' ) \/ XwoRcRy' ) -> ~HBVnZaH ) /\ ~YVUFVej ) /\ PcDDAEY ) -> ~CYRooqS ) -> ~oIgAnFQ' ) /\ oAySjUu' ) /\ jPCwXIS ) -> ~YvlZWbX ) -> tQcXQXm' ) -> ~BWdcfOe ) /\ jPxNDyQ' ) -> ~YSQlTrc ) \/ ~PtQmwRv' ) /\ ~Mfuiepb ) /\ ~xVfGyUS' ) /\ zGcGYoq' ) \/ wIwfkDH' ) /\ YfjNqHO ) -> ~DiIZSQj ) /\ ~xwRHRLC ) \/ hAQqwSe ) \/ ZZfZSZx' ) /\ ~wJUZgxk' ) /\ tngMUcD' ) /\ ~MBbjnZx' ) -> ONylRDS ) /\ ~QGEDemU ) \/ ~SjEGtKM ) /\ hMiXral ) -> ~LQAwepj ) -> ~XoEbOdL' ) -> UtPoVzt' ) \/ dYKQkLB ) -> ~nWanpHP ) /\ ~HlSMXeV ) -> WYryYYz' ) \/ iRPUHdX ) \/ ~nWbiDep ) \/ DUFnUvb ) /\ MCBSekf ) /\ gVNKmJq' ) /\ ~PhIZdhd' ) /\ APuBaBC' ) -> hcysMyL' ) -> ~rMCeYFP ) \/ mnsfAMX' ) -> BtHjHjj' ) \/ yMYoADV' ) \/ ~tHUfbOM' ) /\ VNkZckE' ) -> fnGAleM ) -> dfUypeW' ) /\ JZVUNjr' ) -> ~RMczARe ) -> LBYmfFU' ) \/ tcRDKUQ' ) /\ TFEDLNR' ) \/ ~aFfaKZl ) /\ AZDblbv' ) -> ~EzNOxrW ) \/ ~hYWdqUr' ) -> ~SvstrOK' ) \/ mfjjvEA ) /\ ~JOgIyyP ) -> ~hpoYSHI' ) /\ ~vBwVZMe ) -> fVqwedu' ) -> ~UKeDwid' ) \/ noJcent' ) \/ ~NDYUNWy' ) /\ ~ghajxvh ) /\ zomhGCP ) -> fvaZCju ) \/ ~HmmJDtE' ) \/ ~sSJzlgc ) /\ zebVwVs ) -> ~fyDQKrW' ) \/ tGubzfE' ) -> ~nxguxbf' ) \/ ~SOmCcQs ) /\ ~Xwmzkqx ) -> ~vdlWhzw' ) /\ ~pmlmCqH ) -> oRCejdL' ) \/ qSZZZCP ) /\ ~DMljetu' ) \/ ~MIIxEnI' ) /\ TvZXHeD ) \/ ~jeqjnPS' ) \/ ~JbKzpSs ) \/ ~gncxbTk ) /\ zjGMjGy ) \/ ~EfidzKl' ) -> ~scpZwsG ) \/ hOBckiz' ) -> LtxKgAl' ) \/ OUwlols' ) /\ ~enryFsl' ) -> ~dEuAkFn ) \/ ~pAlPoiG ) \/ KvLySBu' ) /\ ~PSqGoRK ) \/ dalEnrm ) \/ jpmSBVC ) \/ ~QZoRsrk ) -> ~SYqNiyt' ) \/ ~DnHDKcZ ) /\ xbAxLWo' ) \/ ~uXtlfZd' ) -> wPCIMWs' ) \/ ~qasquLl ) \/ yUzFzrH ) -> ~ZtezqsP ) /\ ZBfiSzi' ) -> ~NPzPXZo' ) /\ ~WghOQlb' ) /\ SyVbBsL' ) /\ PdDTMqw' ) /\ ~jundyAI ) -> ~dKsfxzz' ) -> ~nuMoodi ) \/ YUSRZQq ) -> ~DbarkbS ) /\ zQhILSZ' ) /\ vzsILBg' ) \/ CFeVzVa ) \/ ~RfzvdXw' ) \/ PYxQdty' ) \/ dgiPlDy' ) \/ AGTSlYJ' ) -> ~LRPwsjc ) \/ YoYMews' ) /\ ~aHVApoB ) -> ~BeXCtxA' ) \/ qHBlwaF' ) -> ~bCrRIMk ) -> ~EFrsRmx ) -> ImUYTzD' ) /\ duPCzGd' ) /\ ~iABaREw' ) -> WbFRvKO' ) \/ ~qYdaQdN' ) \/ NLtgZgo' ) /\ aGDxKXs' ) -> ~rmyOUkE ) /\ OqaCLGE' ) \/ RvzYOhm ) \/ ~AwHIbMx' ) -> oKYmbjt ) /\ ~ayDbLzU ) \/ KUDuYum ) -> ~NNyLVey ) /\ ~POQECdw ) /\ ~pWDvdgA' ) /\ ~gMhjhoS' ) \/ sBbbDxV ) -> iQpEynO' ) /\ ~LCFUjGe ) \/ SrrhiMp' ) /\ YNQqQBI' ) /\ ~AvGlZKf' ) /\ ~cYeGHKA' ) \/ zLixSxp' ) /\ TRlmgrG ) \/ ~cQdvydI ) \/ ~DmaamAo' ) -> ~ESVHsNB ) /\ tlRNNLy' ) /\ eXpSSae ) /\ ~evBcVrr ) /\ bRMlgfb' ) -> ~rEHHdHZ' ) /\ ~RUHkiPF' ) \/ nybSCAe ) /\ ~snkKAPu ) -> AfpEDgW' ) \/ DUxEviu ) \/ ~fJoprdS' ) \/ ~WkhPkdN' ) \/ ~QoLOlKl ) /\ ~SOZeXOC ) /\ ZqhPCZn' ) \/ ~RwszXnf' ) \/ PwmKXSf ) -> ZuJzWnK ) /\ NMieQCn ) -> ~NUHwVbk ) -> ~DAHiWLT' ) \/ ~ziTOdrx' ) -> ~WPslPIf ) \/ KtkPWpv ) \/ ~zFOdJrs' ) \/ ~ZjZLWZd' ) -> EaKOiAc ) -> QqiVVAM ) /\ DlgilgZ ) -> ~EyHwkeX ) -> ~OYVtKgJ' ) /\ ~oKQUXGw' ) \/ sqhAITJ ) /\ ~WPKcAFD' ) /\ ~jlNuFfR' ) /\ ~LhTndUb ) /\ ~bgcjrhC' ) \/ kiiuKYU' ) \/ kxShmZj ) -> yXyEahK' ) \/ ~cNKOzwu ) -> ~BBnQTgf' ) /\ LVWlaCk ) \/ GkTIfXt ) -> ~yYvRacv ) /\ xQmjPUL ) -> ~EcqEVTm ) -> ZgviTnZ ) /\ ~cYxkiRx ) -> ~GpBzBcR ) \/ ~AEHghrP ) /\ CmaefQD ) \/ ~hvczWuB ) -> ~mPuvdWU' ) \/ ~PpZEzHJ ) /\ ~rfkAGVg ) \/ ~CQyPRhD' ) -> vnrTvDJ ) -> IcfrAiQ' ) \/ OTwBcuu ) /\ IJIUrky ) \/ ~rpKVUqk ) -> ~MuRvDIj' ) \/ kChEprE' ) -> jLqbNSy' ) -> ~fskySdp' ) -> ~qOxCRTX' ) -> qGWtCSJ ) \/ ~enJJTDA ) -> LZohdCT ) -> ~MZgCPoQ' ) \/ zMcDfve ) /\ ~NPIrVxx' ) -> hlBRBUy ) /\ ~AYgxDzv ) \/ ~TufEWYT ) -> rELitKP ) \/ uGamlUl' ) -> CqaZjKg' ) \/ ~KMSrslC' ) \/ PRltRyM' ) -> ~OsDICHX' ) \/ CCtzmoF' ) -> ~Slcslbt ) /\ ~kdVHfCS' ) /\ ~rCDVOai ) -> yGbujvV' ) \/ NKDFZrG' ) \/ utdJYUi' ) -> sbMJAyY' ) -> ejSULDZ' ) \/ ~MKLixZz ) \/ LajWNku' ) /\ ~rXCTztf ) \/ sGWXnWe' ) /\ HKgXShE ) -> ~dpSNPbD' ) -> pvyRhke ) -> ~LjeIzBL ) -> ~BFMgUPQ ) -> ~ODqcdzj ) \/ PaFJOMg' ) /\ ~SeaytSl ) -> ~EwXcHDX' ) /\ GdXwpAe ) -> qTUhkgL ) /\ jWpMAqZ' ) -> ~OylYWAS ) /\ OcKDhgX' ) \/ roolnbJ ) /\ ~PHXMjXm ) \/ ZGoVhHC' ) -> LanysVx' ) \/ LkjPzIt ) \/ ~QinUvMy' ) \/ ~YhwUBEs ) \/ ~plCMoBE' ) /\ ~lyWLnBP ) \/ ~kasnSMu' ) \/ ~lKqFZVG' ) /\ pkrQLGd' ) \/ ~bkHQdui ) -> ~owgrMLr ) /\ NrnozDQ' ) -> YSQdMLx' ) -> ~uvOTAup' ) -> ~ACaDbHi' ) -> gvBFdWj ) \/ qDMiBaQ ) -> ISgFZao' ) /\ ~hHGvnkJ' ) \/ MFnBFxD ) /\ ~AXBasqk ) \/ ~cyAkwta ) -> FstgCFT ) -> DyNfYwS ) \/ ~VwOTDDk' ) \/ KVQmSUn' ) /\ wXOeYse' ) /\ ~AyHRXNx' ) -> qwELGSb' ) -> vsslSyC' ) \/ LgPrlRN ) /\ pBOLGwP' ) \/ ~QdSxYho ) \/ rEFWtVd ) \/ ~OHdMDkA ) /\ ZDkbSkK' ) \/ jltBAKZ ) -> MppPjrG' ) \/ ~ueXPvPr' ) \/ cpvjXmJ ) /\ ~XBzgaZi' ) -> IUSpmjI' ) -> Qrcwwcd ) /\ ~FVCggqk ) \/ ~DcWgdrL' ) /\ trgrnKx' ) /\ ~oZdZSIa' ) \/ KgpKNeb ) /\ ZBfXoUs ) -> nkIuCJu' ) \/ crVoaHT ) \/ GBMtSvC ) /\ gOeVCHt' ) /\ ~RuSiDgp ) -> yjJRvhx ) /\ ~USdYyCI ) \/ OorNeCV ) -> ~sJPALHE' ) /\ jzlwVrK' ) /\ FKTSDxF ) -> hjgGBla ) -> bRmRHUX ) /\ zhERAIp' ) -> ~OCuempn ) \/ ~GyMdyqP ) -> ~BgRqXrF' ) \/ GmRzQJj ) \/ ~IwGLwxw' ) /\ MctbzXp ) \/ tEUSldr' ) -> YCZDkCr' ) -> KdJPrEs' ) -> DlQqAFB' ) /\ BOnHjor ) -> ~vzwadge ) /\ RZkixDl ) -> jzmXRwr ) \/ ~rbRwhRp ) \/ bGSOiNP' ) -> XdcgWDn' ) \/ RIilrSg ) \/ ~QoNfvwW' ) /\ PbrEVTI ) \/ UndVGgh' ) -> ~oWEjMji' ) /\ RgOYTqv' ) \/ ~uDXCzro ) \/ ~FBSEgHh ) \/ ~SbiskRg' ) \/ ~PiRlqsG ) -> NmyotUl' ) /\ ~HuehTUP' ) -> ~VkVWgsa ) \/ cZiZGXg' ) /\ zuuHcOo ) -> sxKnIcr ) \/ ~QKhmzcQ' ) \/ IyqiCoS ) -> aHjzONk ) /\ ~bMUEQAB ) \/ GnCGZUw ) /\ KJzAIgn ) \/ qVSgLbw' ) /\ ~jyMJEuR ) -> ~gMhGHjL' ) -> joYTvGi' ) -> OTDvsCB' ) -> ~QznQnbE ) /\ PSWCfdy' ) -> rtzMqjG' ) -> xPcqBbF ) \/ ~gnawfJc ) -> ~zHKcqSj ) \/ mkmfMTg' ) /\ ~WwjGfyT ) /\ mKFLMfS' ) /\ ~jXHlDSa' ) -> gvJZWFg' ) \/ ~LqUwxTv ) -> ~djqCoLf ) \/ JAeoIeW ) -> VBjnQzd' ) /\ kYmVJID' ) /\ OKrUrLo' ) /\ XCltmOQ' ) \/ GSCHKqE' ) -> shrjTca' ) /\ ~VfjaYkL ) /\ Ofzujqz' ) /\ CNhfktx' ) -> tnpFILP' ) /\ ~VBlSDGC ) -> xcbzhcE' ) -> ~jatmMFW ) -> teLyHoM ) -> laaWguC ) /\ ~hQxJsqW' ) /\ ~guIitGS' ) /\ ~DWugOxg' ) -> HCXIduv' ) /\ ~pDrTHlz ) -> ~RhKBCLK' ) \/ ~wrjlGTZ' ) \/ AhnzLbI ) -> ezLWDRL ) -> ~UIGFqkR ) /\ ~UnoBHgs' ) /\ MKSmKDG ) \/ sBErsPq' ) /\ ~FBhnlWC ) /\ ~iZBFTNO' ) -> ~BimlowY ) /\ qyYhzot ) -> xnIZbFG' ) /\ xjVPhBd' ) /\ eKsnHEy ) \/ ~umcnkTo ) /\ ~MZaUtyz ) /\ ~zIXMnHA' ) \/ eMkrEKx' ) \/ ~LYjMGNs ) \/ ~jcQLiyg ) \/ ~MCwGxQp ) \/ ~LhqCDwc' ) /\ ~aGXUBZn ) -> mAkhRQk ) /\ ~eitPspp ) /\ QMNKgwp ) /\ ~OtqbBzI' ) /\ ~xxfHWSL ) /\ ~kpHoVKU ) \/ gjuuquz ) \/ rstupNV' ) /\ ~oTjZbPk' ) /\ ~SuownsM ) -> ~yIsFqAu ) /\ ~eiQZqTa ) \/ ~MUbfYVK' ) /\ ~vkczmiA' ) -> uBGdoQT' ) /\ ~ZnOaqaQ ) \/ PErPcZP ) /\ ~TxgLHam' ) -> rACkbVr ) /\ QQkmDsj' ) -> qHkaEgx ) /\ ~KTXlDGu ) /\ ~GlnbHdd ) \/ ~bozxpGI ) /\ KezXQzm ) /\ uGwyQuO ) \/ ~eBEbfqv ) -> ~XoqNGzr' ) -> ~OpQWGUM ) /\ ~OgfMGBt ) -> ~ZJOfsCM ) \/ ~JKBxGlI' ) -> UQhwKdl ) -> ~LBwkgJv' ) -> QwuvoOh' ) \/ SkkGAdx ) /\ ~kfzuPlH' ) \/ ~IPziEwS ) -> hzUuQnK ) /\ QXkDFso' ) \/ vJmbhHg ) -> ~VedOgIX' ) -> ~BPirJWJ' ) \/ ~TlGiNup ) /\ ~zyzJCKg' ) -> ~AwyJeqW ) /\ ~vCDmKsw' ) \/ CHzRDWF ) \/ uvYxqJi' ) -> ~EFkohhm ) -> ~UXywxHG' ) -> csaIWrV ) /\ ~RpxsyUx' ) -> IHHtUKm ) -> ~WSmpjQK' ) \/ ~XdbKBOe' ) /\ KOUTsSD' ) \/ yQGpelB ) -> tgJzPcy ) -> sKfGYKo' ) -> ~ZCbOkUN' ) -> ~fzHrExL ) -> ~fzZUXmV ) /\ ~KrbuZYL' ) \/ ~TAtamXI ) -> iJrYnvP' ) /\ stUXDzG' ) /\ pZosfPb' ) \/ ~cBdeXng ) \/ ~VSriFYW ) -> ~DzmMQFQ ) /\ WoIsqVZ ) /\ hLibXuT ) -> ~HbnNMQT' ) -> MDVMrxF ) \/ LWcMsiG' ) /\ uJRcaHL ) -> cbOLZDF' ) \/ ~kQAhhpA' ) \/ xCEYgyV' ) -> GaDRWhl' ) \/ urBWUmb' ) /\ ~ozMFTnB' ) \/ ePuBaDS ) /\ ~XnkRKnp' ) \/ yJZRJYo' ) -> ~elVOWzC ) /\ WQKPWmx' ) -> ~xOeckyA' ) -> ZtDPMJL ) /\ ~UXqMRUB' ) \/ ~PBhDucL' ) /\ ~TlGeQhV ) \/ fWkBniF ) /\ ~jZIbJIj' ) -> ~yDIDJdg ) -> ~ABqKTPk ) \/ ~sjsoxIx ) /\ ~fcDfLKH ) -> jxVwtGT ) /\ UCThyZe ) \/ JIzRGcZ' ) \/ EiANmnV ) -> IjIDCZs' ) /\ DnhYMHw' ) \/ ~FiSaAho' ) \/ fVzWaiW' ) -> ~KzKCoBq ) \/ ~gSePEDX' ) -> obVuhUE ) /\ ~oMitdAt' ) -> ~XkUOfkp ) \/ WKuRYYd' ) /\ ATDYZuS ) -> ~hEaEzhR ) -> yJfKjnb ) /\ FcBunMQ ) \/ ~wrHEcGK ) -> dmdDekY' ) \/ ~rIWLqBf' ) \/ ltSqOgT ) \/ ~FTjsSHX' ) /\ ~napkBpr ) \/ cIJdKjH ) /\ UwvJqCf' ) /\ obRsbqm ) -> wpjbsPE' ) \/ ~ljFuhzX ) /\ ~OjBtvKX' ) /\ ~fTvogqP' ) -> coWHjIG ) /\ ~pCgwIKm' ) \/ ~FouIkAa' ) -> vIXPDPh' ) \/ ~fkbyPar' ) /\ uSaMbDF ) -> qiJETmG ) \/ jdBEGVS' ) \/ MKsQWSS ) \/ ~VThyStS' ) \/ ~myGefbE ) -> ~RVUvKhJ' ) /\ ~mDXwUjp ) /\ sPnnKNi' ) /\ ZPysatX' ) -> ~czZpGpR ) \/ sEtcHyx ) /\ HfBgANb ) -> QuRgQBV' ) \/ ~KjIrJCw ) \/ ~nCuqhbM ) \/ ~zyOEkDu' ) -> ~TzfIVOQ' ) \/ ~uYxxRHt ) -> Qyzjiyg ) /\ jjEbSsK ) \/ ~QOQiKqq' ) \/ ~gCRVEMN ) \/ EOSoggu' ) \/ nryPVvl' ) /\ BneDZIc ) /\ UqngeOi' ) /\ ~WSrpsJP ) /\ LYPMOWP' ) \/ ~rECCIXs ) -> ~pWTBgYN ) /\ XMOJAJY ) /\ dbqbSfU ) \/ HYjbRWn ) /\ ~PnYzwFY ) -> zbFLGcT ) /\ ~MoZMIop' ) -> QPeOdlP' ) /\ BpGFRSI' ) /\ ~TyOVSRy' ) /\ ~RWkgKVq ) \/ ~gyMlJci' ) \/ MbfGRdV ) \/ ~xLhyZow' ) /\ IJFnloz' ) /\ ~QwwNnuI ) -> GuNCNpK ) -> wZBcQUo' ) \/ XzXuhnq ) -> ~FtnTIHT' ) /\ ~pZCkMts' ) \/ aRJLSaT' ) \/ ~WcCfpTq' ) \/ PkvFZWu ) -> ccVvevw ) /\ ~DkKrTSQ' ) -> ~SAjDaNm' ) /\ ~HMWNHux' ) \/ RPBDtLd' ) \/ ~KBLnmdc' ) /\ eHpslXk ) /\ ~fUmUCVe' ) /\ KUHroez ) -> ~ghleWcA' ) -> ~UhNtewW ) -> ~IonjgTU' ) /\ LnDOcrY ) /\ tSGrIrR ) \/ FOneROT' ) /\ gVXTASr ) -> hvMBIdW' ) -> JfoWvgh ) -> lkaZQBH' ) /\ IyBmVTf ) -> ~lICwyDf ) -> ~aaCsWrR ) -> sfIPBnD' ) \/ VonEKdV ) \/ ~zVrxbLR' ) -> ~euqGTbm ) /\ vxbdPnH' ) \/ ~HpdIyvN' ) -> ~NyxWLSu' ) \/ mTamCtk ) -> jekPhXH ) /\ ~MSQlEsA ) \/ LyZOSnF ) /\ ~slxyuwc ) -> VdjcVph' ) /\ ~CuMhuIr ) \/ kTxUorD' ) -> lPUDFGe ) -> yiyxQkx' ) -> ~YxcEMTS ) -> NLYrfEQ' ) -> ~uJFBhGl' ) /\ ~wiyyIoH ) /\ nvnfTLX' ) /\ zdQEriP' ) /\ ~SkjjSrs ) /\ mKIREss' ) \/ OVbWDlZ' ) \/ jBjbCUZ' ) \/ ~JbmvFdP' ) /\ soFRpTJ ) -> hMJQcqy ) -> iGAlqyM' ) /\ ~YneKTUC' ) \/ onouUSu' ) \/ EARngKz' ) \/ IpsEPfV' ) \/ ~WgdxZHm' ) /\ ~AJifKnz' ) /\ ~cFSycYV ) -> ~vFogGoT' ) \/ UJOsbTI ) /\ ~ztqtpfO ) \/ AdoZqXL ) -> IsVTXMt ) -> idocFtf' ) -> koLPuXm' ) \/ ~eTtthHt ) -> jiFocfa ) -> BcbWxUO ) -> NGOAGpJ ) \/ ~NArCdAL' ) -> bmfFODe ) \/ ~NrAJIkT ) /\ ~fGnCSFb' ) \/ ~flAtdJe ) /\ JyCZWrC ) \/ ~euZqPQt' ) \/ HlGTPlO ) \/ ~eumOLrt ) -> ~CDGyiYD' ) -> DJBLUVP' ) \/ ~UsggxCl ) -> EScgFJS' ) -> ~LqkBxVu' ) \/ ~tEInXla ) /\ OZyxAOo ) -> ~yPeVghP ) /\ ~XdJPciz ) /\ VljXIxI ) /\ cwhnDKT' ) \/ qXaUogU' ) /\ ~bhoaGOX' ) \/ ~zHEcOdJ' ) \/ wYhrVjD ) \/ ZSZJrza ) -> ~TwtPmDv' ) -> ~HGHGuGK ) \/ ~NWIKxPG ) /\ oYNPpkk' ) -> iPcYdXE ) /\ ~qcbCXql' ) /\ BeBhcmP' ) -> VwBgayp' ) /\ ~SVcJtph' ) -> HwkJTsX' ) /\ isuUxhV ) /\ ZBGYcoc ) /\ HNAFnHf ) \/ ~kAgJyeV' ) \/ mHZyeIP' ) /\ iyExnPT' ) /\ pPpGVLU ) -> wvBIvCc' ) \/ ~ZFOiGjj ) /\ ~HsLBrVl ) \/ ~UHpPzLR ) -> ~RDfjalF' ) -> uZFwYOe ) \/ sSzQqxy' ) /\ LtyqzUV' ) \/ cMDJlog ) /\ ~MNdgIfn' ) /\ lNNFHsT ) \/ WIgDAry ) /\ xQyyexB ) /\ ~ewxSmvC ) -> BpUSbPE ) -> JNIBmmM' ) -> uhBGNxh ) -> ~gSzmfyK' ) \/ ~jcmdRZR' ) \/ ~QDcslAH' ) -> ~eqJZWHp ) \/ FSvqIcQ ) /\ ~gkoqpFl' ) \/ ~dwzPpww' ) -> qZBGfAk' ) -> KNzNncY ) \/ ~kkBbXYT ) -> ~vaLrEKl ) -> ~jiRiWmx ) /\ ~HFrNmIN' ) \/ ~EhJVdEk ) /\ kyrkPWC ) \/ ~JjusPeu' ) \/ NIRHfig' ) /\ ejnpRpY' ) -> ~DvnNjbg' ) -> ~HppKjbd' ) -> ~yVQynbj' ) /\ CZVZBiZ' ) \/ ~WgJDvLw ) \/ OvhZOrL ) \/ ~AHTKnJj' ) \/ ~ajVfREY' ) /\ ~kdnwwJV' ) -> ~VUMIDOA ) -> ~LtnUXLW' ) \/ ~drqZsIV ) -> ~kaenIKW ) \/ QIRVsoW' ) -> ~IeqGtfB' ) -> YXKUYGd ) /\ STOXFsX ) /\ ~ZKibLNW ) \/ JyvSLSh ) /\ ~nSeMVDZ ) -> ~pdSOvsL ) \/ ~heriVjw ) -> ~YzZmdJI ) /\ ~uZzmOpU ) -> ~KGcvPvn' ) -> oGllOgT ) \/ ~XPwTsby' ) \/ ~oayuRTq' ) -> aecGxmf ) -> MBYyprD ) -> ySsAwhb' ) /\ ~IqLXESg ) -> ~aBWuwSa' ) \/ CTLkdDH ) -> JJJytgL ) \/ PurvOqC ) -> OHwJqug ) /\ OXReYhM' ) -> ~twaHTLc ) /\ ~cDasTFg' ) -> jMuvIve' ) -> evsHCbv ) /\ ~LHzNHwT ) /\ pskwyqK' ) \/ ~ojmzuAN' ) -> ~TYJcqHY ) -> ZVbokRd' ) -> Glwqavy ) /\ ~GXEwXoJ ) -> ~tCeTITR' ) -> ~VXPZPgS' ) -> MgowVpE' ) /\ ~kOKADno ) -> ~OYobfoj' ) \/ HDFSUar' ) -> RxtuKIu ) -> ~IuThPWx' ) \/ ~DyeSuhN ) -> ~CKiyKAE ) /\ ~uwhhuFy' ) \/ ~yJSkLaf ) \/ ~BklNgic' ) -> OfBIQWQ' ) /\ ~QTDWLQH ) -> YAameWq' ) /\ XflbXXO' ) \/ ~KigXbdm' ) /\ jrxFKlT' ) /\ wayGuJy ) /\ ~qKkilVw' ) /\ pSeQEuJ' ) \/ sgokOgF' ) \/ rTRRPqH ) /\ fIFbZfF ) -> tIHvYsk ) \/ ~ggTprcB' ) -> ItHGHtY ) \/ OjxYMft ) -> VNtWqYi ) \/ HsMGorb ) \/ ~yarakkU ) \/ XStFWff' ) /\ rhMWgtw' ) -> URplsHD ) -> ~pLXYRlH ) /\ ~uswwDny ) \/ FsImlMb ) -> ~FmvKHdt' ) \/ houeHqD' ) -> svLLaqf ) -> bewFYgG' ) /\ ikSsUoN ) \/ ~lBnRueM ) -> ~VdKJPvf' ) /\ zHvUeEU' ) \/ ~MHGjqJT ) -> CqLgTmb ) /\ ~TcbOZtO' ) -> ~akqkbrK ) /\ ~hkeMGMD ) \/ ~BMrEnCB' ) /\ ~RNVJJQY ) -> ~NPspkYj' ) /\ fuuEAdd ) -> ~TdOaBPS ) \/ ~GzfTAQU ) /\ ikJqjvb' ) -> ~ErVltEf' ) \/ ~QwobPyA ) -> ~KSqoqyK ) /\ irnZhuj' ) /\ KepTjKb ) -> ~pBrjtDz ) \/ ~bhlEYeq ) -> YfVDosq ) /\ ~rghHotz' ) \/ ~uZcovBV' ) \/ WZQZcxs' ) \/ PswHSCT ) /\ wQOBLUL' ) \/ ~oYDUXKq ) \/ ejFufhn' ) \/ ~LomDcef' ) -> ~eUhODkG' ) -> ~TZHmPUV ) -> ~Bqvczav' ) \/ MKoKrfw' ) -> gRoVrVs' ) \/ ~KBixaqs' ) /\ ~KGCiVku ) \/ sYVUmEY ) /\ ~lXfVPzD' ) /\ ~AJylEay ) -> YMMFucK ) \/ ~fBRlsZx' ) -> mjQWOCh' ) -> ~sinrYxk' ) \/ ~uyMZciT ) /\ ~BKZtFzw' ) /\ zPEkYAt ) -> ~vzqBEhi' ) \/ uLTrNrM ) -> DXeSYnl' ) \/ KtRsaHc' ) -> Qsncdud' ) -> ~vyimxHS ) \/ ~lUvsYbX' ) /\ ~JeRPpKQ' ) \/ UNmeamQ ) /\ OZiaEIn' ) -> ~hcObQtM' ) -> bFqzqfO' ) \/ ~lKprdsm' ) /\ cYdYqTu ) \/ PylPLXl' ) /\ oNyqAxY ) /\ oLOQbjn' ) /\ ReeTxMh' ) \/ ~rDlYDWb ) -> GmJyKRE ) /\ ~MZZoYQd ) \/ IQUvirM ) /\ nUTuGIm' ) /\ cNJoYcl' ) /\ tlRPADK' ) /\ RXUMxXZ ) \/ VoHmPfI ) /\ ~PyxfoRL' ) /\ ~zWgTsTr' ) -> ~bApBbGm ) /\ AbXNwrt ) -> ~eGwckHX' ) \/ xOLcFBI ) \/ QfhcdHC' ) -> ~qzVDrBs' ) /\ ~wSZUOzi' ) /\ ~mHcNJkB' ) /\ ~rzRWfpL' ) /\ ~NQEfcnE ) -> ZlTDxCa' ) /\ UDxaOwl ) -> NVrPAUf' ) \/ WInysGB ) -> ~shdnNjB' ) -> oDHzsVK ) /\ kLOxntf' ) \/ mEQgSGv ) \/ ~XvlZUZt' ) /\ tCNpuWq' ) \/ ~teKJZAQ' ) \/ rbFICuy' ) /\ FxivjcC ) \/ ~GHtOhEq' ) \/ ihTQvMx ) /\ dGYyqav ) \/ ~fnhvTrh' ) \/ ~WwdQzCD ) \/ ~kLbJNQG ) /\ ~bQyBcuy' ) /\ Rrziqeh' ) \/ nmEZZWP ) /\ JuKUibL' ) /\ cuCZNiC' ) \/ ~fVRigjc' ) \/ ~wpBoUGA' ) \/ ~VcCJdAz ) \/ ~nENTmbz' ) -> ~WgIeEfv ) /\ AXDNwbP' ) \/ ~QAHXcUp ) \/ woHIlnW ) \/ mIvDzNr ) -> ~kvEnnEV ) /\ ~BMRmffv' ) /\ ZHxViOY' ) /\ ~pXxfAAO' ) -> ~djparYc ) -> ~ifpFjUQ ) /\ ~OnhhFeL' ) \/ HoFhhRT ) \/ ~FvDQmFF ) /\ EOyQCbK' ) -> kBixhIu' ) -> YmWAfUn ) /\ ~hbJMeQo ) \/ ~DJpUmGW' ) \/ ~uyCpESk' ) \/ dGjashw' ) -> otJPOkM' ) /\ ~TuhRSED' ) -> YhsWULl' ) \/ ~GHddvAv ) /\ ~PjnvVhP' ) \/ ~QnqUYon ) \/ ~ALHEBwr' ) \/ ~MfiTITI ) -> pPdXgVD ) -> ThMvosO' ) -> IgnIIKI' ) \/ FfxBaDS' ) /\ ~GkmxsTP' ) -> ~ajIyLVn' ) /\ JSqKlVt' ) \/ ~lpYryFa' ) /\ fXguVpn' ) \/ ~YiyBWrR ) /\ ~cpfBaiX ) /\ TOTaflz ) \/ fpHgjUm ) /\ ~pheAbCo' ) /\ OeWNaeJ' ) /\ BmToryY ) -> ~dvxepBR' ) \/ ~RvdhMvi' ) -> ~uzTVsUw ) \/ VbTXUkD' ) \/ ~sCXmiRf' ) -> mGwwsUT' ) -> ~jSOmMwh' ) /\ ~GYhWmEF' ) /\ iZtGvCk ) -> KQcdSky ) \/ ~fUjKcTB ) /\ ~pHxHANz ) /\ JteatUU' ) \/ XGvcEDC ) -> ~XTuvebF ) -> ~FhQRjwd' ) /\ ~oCrzcKm' ) /\ ~jebSyBI' ) \/ ~YjtNhpp ) -> ~zUMVxxw ) \/ WNmyeLM ) \/ ~uJYBzYv ) \/ ~ERRgRdh ) \/ ~PJKtvqi ) \/ ~MfmZNED' ) /\ IFtQrEo' ) /\ fVGnTSA ) -> srAHHPb ) /\ ~SSeFErJ ) -> wqFPpGH ) \/ ~UcAxtMc' ) \/ ~SFjaXiC' ) -> ~MDMFyHV ) \/ ~OhXRVCm ) /\ VHZWfNB ) -> WyKHSpP ) -> ~UCJrzpZ' ) \/ ~SyJWnHC ) /\ enpUEAB' ) /\ yCxFpRU' ) /\ HxjhDOb' ) /\ gtdjekj' ) \/ ~AUMmPhC ) \/ BibLPwB' ) \/ WtgRktY' ) -> ~xHOWJmz ) -> ~YowJYbz' ) -> ~dwweKSn ) /\ ojRFCgd ) -> ~wmcaTLe ) /\ ~uAqKWZw ) -> ~DaOEbGp ) \/ uiTsVra ) /\ DFpIFtp ) /\ mWabvXs' ) -> ~ZaydpqS ) \/ ~FnUYTWT' ) -> oLNUYjj' ) -> lWlRnxQ' ) \/ ~JMbvfIM ) \/ aKkxZzM' ) \/ jpDzYzW ) /\ HVAzcpK' ) \/ qUTtaSX ) -> ympDHFk ) /\ MjlYnhk ) /\ ZDLZILy' ) /\ GsPTtRs' ) \/ tcqejbI' ) \/ ~JYkbsVe' ) -> vNZQHKQ' ) /\ GWjODmr ) \/ ~FldLpsN' ) -> LmwmwUU' ) /\ ~PxzoeLN ) \/ pQghFMK ) /\ EHIvthx ) \/ VDtsAAY ) /\ shqbswJ ) -> ~EDKPmTX ) \/ ~dSPNlCF' ) -> FaSOVQz ) /\ mxBZxuI' ) /\ ~nKQCFyB' ) -> ~unhqaRL ) /\ AnyJJjo ) -> ~igaQpbO ) \/ ~cQIKXSS' ) -> QloTFHz ) \/ ~sGFLQgG ) /\ eitdply ) -> RsDrcJP ) -> VtWMMaZ ) \/ HilcTLp ) \/ MzNHWtE' ) /\ ~nOJuTyn' ) -> ~AyfnujI' ) /\ ~WFPmVZJ ) \/ ~jxobQpF' ) -> ~LNOHxIQ ) \/ VKvhWmQ' ) /\ VpjvvGK' ) \/ ~pZvCjpc' ) -> vndjbxX' ) \/ ~HWPPyhb ) -> EwOSGJY' ) -> NcAiUsQ' ) -> ~WoyxSWM ) -> ~YfzrdiZ' ) /\ ~CCjoiJG ) /\ ~vrhPHiD ) /\ ~OIXEjwZ' ) \/ ~YXBVDPo ) -> ~KrLfrnx' ) \/ ~lIIqpuY' ) \/ ~PmTsmyk' ) /\ ofdcLTg ) -> ~ueEBYfF' ) \/ EuPpseg' ) /\ ~qCHwmzU ) \/ ~iRDmUen ) -> vSdxLPc' ) -> CVScKTE' ) \/ ~UXlatlp' ) -> ~gUhHVEC ) /\ iJDBKWl' ) /\ ~WLqobZh ) \/ BIFzozM ) \/ KkOaqLp ) \/ abkAQWU' ) /\ hbxYcxN ) -> juYRgWk' ) /\ ~cttxKfS' ) -> ~ZQygNPO' ) -> ~nYNXwir' ) \/ XtQFQNf ) -> XYyanvb' ) \/ aIqGlvv ) -> ~GnrWMJS ) \/ ~CldCCsj' ) /\ ~BPmwkHh ) \/ ~QockSjw' ) \/ ~jRiHWbx' ) /\ ewcqIfW' ) \/ ~XfWKoZE' ) \/ kEOUWHh' ) /\ ~JyFYTRe ) /\ aieXGmy' ) /\ ~eFRcQOC ) /\ lEPErLY ) -> ~GcXNJJy' ) /\ ~udgRBUq ) \/ BJQkYdh ) \/ paciVwS ) -> kFWAWQo' ) /\ ~tYXxSxk ) /\ ~jKvOYXM ) \/ oOdDPge ) -> ~zMnebqs ) \/ ~jiBmugs ) -> vkpVduW' ) \/ ~YyaOtpJ ) -> ~aATvBBB' ) /\ ~zQbeCRb' ) -> SRvORdX' ) -> VrVwjtJ ) \/ ~BAXPMKX' ) -> ~OJTLymU' ) /\ jNLIIMx' ) -> ~kSPToCE ) -> ~UWrfoAC ) \/ yjRwAwn ) /\ ~XtRwFnB ) -> ~YyKQlOJ ) -> SOGjRTf ) /\ XDMtcXq' ) -> ~DSQrwtx' ) -> yCokOyP' ) /\ ~rhodIyQ' ) -> uoXgxVb ) -> AIQYEPz ) \/ VqyfxRV ) \/ iAfNmNX' ) -> ~xonYzEi ) -> AvBrknF' ) -> ~nCfyRic' ) \/ ~rFpFpXP ) -> nqKVyGQ' ) /\ ~bQpqLJr' ) \/ ~HPyKEOq' ) \/ LfqoRwr' ) /\ ~kAXCsYN ) -> ~nLJivVe ) \/ WRpEnTi' ) \/ ~NWlxDYi' ) -> ~SVddXNR ) \/ ~HOYazLi' ) \/ WHAwCOm' ) \/ ~vUOkcOH ) /\ XrVreTw' ) \/ ~eWZyvtk ) /\ ~APoTLUu ) -> ~bhxgdyo' ) /\ xNgruuS' ) -> ~WeHtKFi' ) \/ rTrFKol ) -> JcfbhVn' ) /\ ~oxEkeQx' ) \/ ~XNIGBhH ) \/ CTpfaxg' ) \/ HbkDFir ) /\ czCUBCx' ) \/ EZigZUe ) \/ ~FGJwENo' ) -> ~iRkiRhx' ) -> ~ZsZwzgB' ) -> ~BAiWGnh' ) \/ pDdkKHI ) \/ QrcYgSj' ) \/ YzWyjJs' ) \/ ~USbreSc ) -> ~KcHJPpi ) /\ ~rPtLAii ) /\ ~wHPYeJa ) /\ HOJOYLJ ) \/ oBRXkcE ) -> ~dlZzZdp ) /\ ~SRaefbG ) -> YDWgwKP ) /\ FWEgzLk' ) /\ rySSHLq ) \/ ~CVmePFb ) /\ ~greliLE' ) -> vbsCpwe ) -> RbcosBY ) -> HfdBYRq' ) -> QQEswmd ) /\ HduQWxN' ) \/ vwrnqLf' ) \/ cWkebMP ) /\ ~GQFDxGm ) /\ CdCteYL' ) \/ ~ZBUvpSw ) /\ ~GJQxJTl' ) /\ pzVaWiS' ) \/ RhvlcOO ) /\ RpNVVSt ) -> ~itVrxtD' ) -> BNjjMnQ' ) /\ ~loEpTtU ) -> ~lWUflHH' ) -> YfUCoAC ) \/ BHymtlJ ) -> ~aDBwFEi ) /\ fDgxcwj' ) -> ~wpArzZk' ) /\ ~dgmNFVa' ) /\ eQCAxTM ) /\ XlPORmj' ) -> ~zdPgvZn ) \/ mMcwrOG' ) \/ ~KLVmuue' ) -> mPyCVdd ) -> ~akAdhQt ) \/ AhZdwCv ) -> rIbQDLB ) \/ ~QIPqTwn ) -> ~dkaaAPl ) -> ~oGLxKWi ) -> jjbWAMO' ) -> ~GhzAmdK ) -> UjSwNZL' ) /\ fIedYMF ) -> ~akfOkNa' ) /\ ~RPTEeRT' ) -> ~fuZaCtc' ) -> EgdlhGx' ) -> tNXDvmm' ) \/ ~lbYQIrh' ) \/ WbZCXMP' ) -> ~YPvcAYo ) \/ yLGGLHT' ) \/ ~phwdtPd ) /\ OXnauvk' ) \/ ~fOMAETt' ) -> ~aBgYfol' ) \/ swnonRW ) /\ ~pcEThst' ) -> iMaQkVb ) \/ tLrEpou ) \/ PxGNNuD' ) /\ ~DRumDCB' ) -> ivuHORP' ) -> CSTSkDb ) /\ qMxczLf ) \/ ~CyvwmbD ) -> nSjfyuZ' ) /\ ~obbdxgY ) \/ ~SmJRkDL ) -> WdstKjn' ) /\ KjzRsKM ) -> ~JzfOJGm' ) /\ ELdXZeH' ) -> zIGEEok ) /\ ~lpztCLA ) /\ IcmbrSZ' ) /\ ~KXoyucv ) /\ ~MGVfJWt' ) \/ spMDgFe ) -> ~UyZqKDV' ) -> ~XHBrZsZ' ) \/ yVHSeLV' ) -> ~ViTbFCw' ) /\ dolcoXZ' ) -> ~dkczhPq' ) -> ~axpMZzN ) \/ nuBpYgd' ) -> jnzzGyj' ) -> ~nvWkBlW ) -> ~bOeNnWO ) -> ~TUSwhqs ) \/ xdnFGgJ' ) /\ Ubocekw' ) -> XEbMsud ) /\ ~WjjDMoT ) /\ oPtvRDe ) /\ ~VLTcdwZ ) /\ ~JTLcqwY ) -> ~tZgtFYg ) \/ fiAAGbI ) -> ~LOLqasn ) -> ~fWZbyHg' ) -> ~ZopLMxb' ) \/ ePImnYj' ) /\ ~ynuEokc' ) -> JPRyGHd' ) -> ACtzqwv' ) /\ ~lkRXIjS ) \/ ~HHBNCCl' ) \/ jHHPoBA' ) /\ ~yMNjxrM ) /\ ~gvfDJOb' ) -> ~mHoYzGh ) \/ ~ENVzsvv' ) \/ xUyBlxV' ) \/ ~DqpeKFz' ) \/ CKmihGw' ) \/ ~CwfWlSF ) /\ HnmQJIy ) -> ~XClXrcL ) \/ ~EtWZuFG' ) /\ qZdBWLy ) \/ ~oRBkfMp ) /\ ~nlEszcT' ) -> myumeTK ) \/ hNqtSRf' ) \/ xdVPZEl' ) \/ asXxENH ) -> ~fbzaotb' ) \/ HOAAJoK ) \/ aJMMyqU' ) \/ ~cxqRSgR ) -> ~nhklaVv ) \/ ~MEyROuA' ) -> ~dOQQqfX' ) /\ ~eSJtoOb ) /\ KLmRMqg' ) /\ IjbfohU' ) -> ~PDaWUKh ) /\ jQXMjCt ) \/ sbaNBzG' ) \/ IDeZQfK ) /\ PzodZDU' ) -> ugqlxfE ) \/ bnnjLpQ' ) /\ ~fRfhudz ) /\ XGOZrYZ' ) /\ wiMIOZU' ) -> ~VRFELPD' ) -> ~jAfwtWi' ) /\ HmZPgPb ) \/ ~VeLiLxb ) /\ xiRmbst ) /\ gRTddSb ) \/ BrEObUR' ) /\ ~xEcHTlz ) \/ HLmrYlO ) /\ ~hTffnME' ) -> ~IFWiMgm ) /\ ~qPHmGnr ) /\ ~aaoAPZM ) \/ jqBSNCc ) -> ~zzFoMLf' ) /\ cfIBBCM ) /\ ~huywibV ) /\ ~IGggGYc' ) /\ xQwyTfW' ) -> ~nPsCLMW' ) -> izDAedR' ) /\ ehFCWgt' ) /\ vLHhKwO' ) /\ rMyHRLc' ) \/ TQlzIzC ) -> ~FufNtxI' ) \/ aNVPPIX ) /\ ~MGptbnK ) \/ ~DsHYDNb ) \/ gixQmHF' ) -> ~TnAbjEf' ) \/ ~KzHvhrr' ) \/ TOecknK' ) \/ ZGiRyVd ) \/ ~YjtrVmL' ) -> ~WcBfmfc ) \/ ~WfxicNl ) /\ ~QWbiDUF' ) \/ ~XydwcVL' ) \/ VQIOhoL' ) /\ ~IzDoEyF' ) /\ ~NSbxBvb' ) \/ ~fvHYBWN' ) \/ ~WqvMwwD ) -> JizgpTy' ) /\ ~kCyQLyF' ) /\ MHNBBJo ) /\ pIEkXID' ) /\ QkhazuM ) \/ MYMquTm ) /\ ~yoZrtbP' ) \/ YcSRFQm ) /\ ZFJYpde ) \/ KVIukSV ) /\ qSOOTRe ) -> rDBKRed ) /\ ~kpnFPIk ) /\ GNuXjKq' ) /\ luTxWAL ) -> RydFGnE ) /\ sPwdImo ) /\ ~GGwQstL' ) /\ wKqEkjr' ) /\ ~SqLkXiW' ) \/ ~ZDuNwap' ) /\ ~cBDpoVd' ) \/ DEONIKT ) \/ yInnHby ) \/ kwDAcvd' ) \/ ~EeJDfTF' ) -> BlyBrfX ) -> ~YAJorzw ) -> ~ylwehug' ) /\ bcAwDcz ) \/ OLnOaXB ) /\ ~OvmUzof ) \/ RxATYIj' ) /\ ~vcmFslt ) \/ ~NvLpaRN' ) -> XcFokcv' ) \/ ~VzvnTqd' ) /\ ~JwSAVQD ) -> VicYqRe' ) \/ ~QqyIWtp ) \/ ZpTBZhD' ) -> ~NtkbXzC' ) \/ mbednJr ) -> PjuhSeW' ) /\ ORGUlrE ) \/ ~tPRuovi ) \/ ~EGkiyDu ) /\ pcpnvcZ ) \/ ~ciddWSX' ) \/ ~JnSxpgS' ) /\ mJXQvRb' ) \/ fZXWZsd' ) /\ MwIfOOk ) -> ~wYxzIbM ) -> QQaVoJS ) -> XsyfmKd ) /\ mWflIAw ) \/ ~UiSRPcb ) \/ cAUJGwi' ) \/ tOIXQtS' ) \/ ~pEHtlbV' ) /\ otsLywy ) /\ ~oooNWtU ) \/ ~ZjaNkUV' ) /\ sGESMZj' ) -> ojkKTTU' ) \/ AhrsqOT' ) /\ DKXufyn' ) /\ ZNMHaLy ) -> ~kEjYqcx ) -> WnTGIxm ) /\ JEeUYMJ ) /\ ~hXXwoyE ) \/ ~AMkaInu ) -> ~LavwgqY' ) -> rJHZria ) -> ~tgYilhy' ) \/ fySRVHR' ) -> ~SwwDfxL' ) -> GFmDFaT ) \/ VsAovcn' ) /\ ~VwlZSAW' ) -> MZPuRfz ) /\ ktPAJpH ) \/ ~uMYOTjX' ) /\ ~xCTyKsw' ) \/ UoqJUbE' ) \/ ~zocGWkB ) -> ~lTBzVJG' ) -> SRQMYWr' ) \/ jMiZIOg ) /\ ~SNaplBS' ) \/ ~GYaVcbr' ) \/ ~RraheED' ) \/ ~lJnXfuP ) \/ ~efRlfud ) /\ ~AABvbcv ) /\ wXMArCa ) -> TypmPkx ) -> ~XpbPtgF ) -> xAajZfa' ) /\ ~wDVwcpi ) -> caxgwLl ) -> ~VkXourr' ) \/ SodkXtk ) \/ nhOBtIJ ) /\ ~LxNdZTk' ) \/ TzQNpqh ) -> AnkLmaa' ) /\ ~HjDcpEM' ) -> ~VJWsmhh' ) /\ IRZsMix ) \/ ~kJsblAu ) \/ yyAPlZh' ) \/ PoMGFtt ) /\ ~EQtPabC' ) -> ~EGDsXOW ) /\ YOSlmCC' ) -> yLtWmnw' ) -> gAQGWHE ) \/ biQawRl' ) -> ~xRwhoWv' ) -> ~azvNVSK' ) \/ ~FQwxHPv ) \/ ~dtSMpZs' ) \/ LwtgNTk ) \/ AeLiyXj' ) -> pWOjIHo ) -> DoLXUtZ ) /\ YGqsgBr ) \/ ~lTugNxP' ) \/ ~KbsERVw' ) -> ~Ujrcivb ) /\ lgrTceN' ) /\ ~TfridMy' ) \/ BIFCbMa ) /\ KfYryYV ) -> evkdjZk ) \/ ~bwiGEAQ ) -> XNIvNkN' ) /\ ~PooiItP ) \/ ~nYxoUri' ) \/ ~fDoKVFJ ) -> gDrBYIR ) -> ~wvQLhBo' ) -> XcAyuRR ) -> ~zTczvuE ) \/ ~VFvvAqJ ) -> GEMdRbx ) -> KywsRKI ) -> WIRgQFU ) \/ gVxvJMF' ) \/ ~BnShbbv' ) -> ~YKxblQB' ) /\ ~fakUoIW' ) \/ ~bVgapEn' ) /\ VxLylfe ) /\ ~EWdwEJR ) -> ~wfjHCxe' ) \/ oShgrzb ) -> sqFILjr ) -> iaCCzNC' ) /\ Kovybwa ) \/ cvAsYae ) /\ juGkQDt' ) -> ~VsCnBSt' ) /\ ~HUjxopI ) /\ ~jMUmrqm ) -> ~VwUoTWD' ) \/ lSWUAAW ) -> ~beeVdwR ) -> cNusniQ ) -> kHOwPsb' ) \/ ~dLbfSMO ) -> bOVsAwb ) /\ OHIbTqo' ) /\ ~LvPeyhI' ) \/ LopnTGy ) /\ FxvBpcY ) \/ jSIKWVf ) /\ bJujXuR' ) /\ ~AOKSqPT' ) -> ~AimZkZG ) \/ ~aMRVHXD' ) /\ KBXoccV ) \/ ~mdJPsXF ) -> nRjctZW' ) \/ ~JZQnsTS' ) -> ~OTXsxGV ) /\ ~GSYYxvs ) /\ UwDMBGo' ) /\ ~NAmMRvR ) \/ bNfSkLr' ) \/ wJVkdbL ) /\ ~zxGYfau' ) \/ ~aTxSdXz' ) \/ ~zsOUAlh' ) /\ CUxMacX' ) /\ qGXDfBJ' ) -> ~AyVeXPd ) /\ ~LgwmPpk ) \/ YgRWOvk ) /\ mpPBMOE' ) /\ vguDZMk ) -> FZoSwfD ) \/ ~qQLgokV' ) /\ Zwcugqm' ) /\ ~gbTPQmb' ) -> EfRboWq' ) -> XlSDUlG' ) /\ ~PVNOTbS' ) \/ AfIZPgK' ) -> ~ckyVvBm' ) \/ rthGebm ) \/ iHybAPK' ) \/ gknSNJs ) /\ ~fniNbeE ) \/ ~pjLbKxu' ) -> ~bLDUuWF ) \/ zsGCedh' ) /\ PQlAYez' ) /\ GhincTP ) \/ JgSkTDu' ) -> ~lAaPgxB' ) \/ ~DqUNmgf ) -> EhkFevU' ) \/ FcZIMOG' ) /\ GVsWdlZ' ) -> ~gfgEIKh' ) \/ ~hpKinrt ) -> YyqqSEr' ) /\ ~gOZCQAE ) \/ ~rawrBtZ' ) \/ ~tcDrnsN ) \/ TAQyHYv ) \/ ~PBrZgiL' ) -> ~wXfybNa' ) /\ ~uLxlpVl ) -> flFCotI' ) -> GHWqpIY ) /\ MlEDDBk' ) \/ JMUExAj' ) /\ LCvjvfR' ) \/ ~cMlTsTn ) \/ yvDRNwx' ) -> qqQVqAs' ) /\ ~GfRGeWe ) /\ NFYSpcl' ) -> ~UttNRVc ) /\ ~Coywahn' ) -> ~hJzEewv' ) /\ ~uZisjsP ) -> bafasjV ) \/ ~iPjxgPQ' ) -> ~ZRFQAWo ) -> rMuZVcP' ) /\ ~BHbMIAn' ) -> pnUYBSh ) /\ kwYdofA' ) /\ ~mPIISnV ) /\ fDxyUuJ' ) \/ ~WYCaHgQ' ) /\ ~ELRzWIH ) \/ ~jXWpRow' ) -> ~yauGddJ' ) /\ ~SpowEHa ) -> ~eFeXXrj ) /\ ~xrThzsM ) \/ OImbKYq ) \/ qANfcwK ) /\ ~ubdttDh ) -> ~pMyaOal ) \/ hgoDmLc' ) \/ JLFUjXK ) -> ~qnggkft' ) /\ ~EkahcOW ) -> oPgJKss ) \/ CPLDPKy ) -> ~EvdnlAj' ) -> eXoIXeM ) /\ ~BUelbNx' ) -> wyxcbMi' ) -> ~EvKjjMX' ) \/ ~OwtnmOt ) -> ~yXXtAUQ ) /\ ~SwYKfkt' ) -> IXKSrdY' ) /\ EYWQlGp ) \/ ~tmRmtMH' ) /\ CfENqYM' ) -> ~lZqxhvR ) -> NrQoEQl ) \/ ~ASnpXVS' ) /\ CvmkhNJ' ) \/ NKeSxwM' ) -> uzNLwmK ) \/ ~BQtsMpQ' ) /\ ~ElJAnUI ) -> LxwOxgC ) \/ ~XAytjiM ) \/ xYHSNNT' ) /\ zZEeIls' ) -> OuzvKcO' ) /\ fbsephB ) \/ ~SsKEDRA' ) /\ agZhPxA ) \/ gTSJKNO ) /\ YKTrgzQ ) \/ ~YkuXAiU ) -> NwMDjWx' ) /\ WPcGBil' ) -> ~gvSVcwg' ) -> qazGNAq ) /\ DQJtQdg ) \/ XRQdujp' ) -> ~fCkaLvF ) /\ xbLGiLp ) /\ vvEnvzZ' ) -> xIJWOlX' ) \/ PuEqDcc ) \/ tWAdidC ) \/ ~gBlJWnM' ) \/ nEjJGgq ) /\ ~VgXznGj' ) /\ GWmltNn ) -> ~DmkuPhR' ) -> kAvDuMh ) \/ ~dHwMEJv ) -> MFyGUqh' ) /\ ~vQWryZG ) -> XidYJdh ) \/ ~YHDWDCg' ) /\ ~wCqeswC' ) \/ GtvwqyF' ) /\ qKlBoeo' ) /\ ~sWEOxCU' ) -> MVNISTV' ) /\ yPIxudd ) /\ ~qsWZyDV' ) /\ ~lOILeqh' ) \/ ~xrlZbWf' ) \/ sYJhhID ) -> bAFLwvJ' ) -> ~yvhVxiY' ) -> ljOqXTT' ) \/ ~IpnDlDK ) \/ eUhvoBz' ) -> zKcWwoM' ) \/ NpzvXWh' ) \/ ~HAvSPNj' ) -> ~bZcsGcF' ) \/ honlthV' ) -> ekWOEyg' ) /\ NkrhFrj ) -> JDJnbFj ) \/ CHgUUHX' ) -> zGjeUyw ) \/ ZVhausS ) /\ VEtREZZ ) \/ ~zzfNBFA' ) -> lRSErxv ) /\ ufuPXQP' ) -> ~AjCGzJS ) \/ qefPnuH' ) /\ opkgYLz' ) /\ xQJcuDz ) /\ XtIgtjD' ) -> VxturCm ) -> wKQsBun' ) /\ FaJztxN ) \/ ypxAHcr' ) /\ ~MqITKaP ) -> lDWyVnF' ) \/ nHDxVgY ) -> ~cAUpSqS' ) -> ~HxbEJxP ) \/ ~xyQDNfI' ) /\ XftIDbo' ) -> ~KFxVtPq ) -> yLdgdcH ) \/ ~URWXukg' ) -> ~hdqiPGt ) -> ~zTwPcFT' ) -> ~bLgKvei ) -> ~KKYCJlB ) \/ lnxLqFA ) -> eiiTKWE ) /\ ~iVFzZZL ) -> xRzXzVW ) /\ dikrQgT ) \/ ~jnjgwUN ) /\ ~JQvxPVE ) /\ ctaFlVL ) /\ ~Wnajaba ) \/ ~QggmFpn' ) -> ZzrxRyS ) /\ ~ZYAqgJe' ) /\ BQLgalC ) \/ KeHasbf ) -> ~GULUhFO' ) /\ ~rKWgSZe ) -> xmETMxk' ) \/ ~kekodif' ) /\ ~qFGToNR' ) -> YxynWjA ) -> UXEZuxJ ) -> ~hAkwhPp ) \/ ~NnhJEAk' ) /\ uRqFMZS' ) -> ~kDfPcjT ) -> ATaRceD ) \/ ~XbZsbeu' ) /\ pedqJDw' ) /\ uUGjgRC' ) -> uSKnguf' ) -> ~bplVWtb ) /\ ~CFkPYmG' ) \/ ~CQrYeXq' ) \/ cZONBpo' ) -> ~kfXsCiF ) /\ ~MWiokjs ) \/ rHHkMFV' ) /\ ~SWgAjmo ) /\ rgIIBUs' ) -> ~HdDObiX ) /\ ~egllHHD ) \/ ~caNjgCd' ) /\ vevsaUR ) /\ ~JUYIGpK' ) -> FNmmpyH' ) /\ XwiDFXz ) -> ThtIquZ ) -> ~OIHlrup ) -> hSWTEii ) \/ ~fFFKVEe' ) /\ hZCwYMV' ) \/ MgnENzu' ) /\ ZdjXzpB ) \/ lSZXSIU' ) \/ ~psiMppB' ) -> YcJdTMu' ) -> ~wGJlIkx ) /\ koOeLYG' ) -> AMOYlBR' ) \/ qqLKslS ) \/ ~utqfaqm' ) /\ SuuIZRm ) -> sVWBWQC ) -> ~McOyFYK' ) \/ ~aucAIgV' ) /\ ~MUJvzme ) /\ DfWNcjn ) -> ~NTpbHlt ) \/ ~QagPBbU' ) \/ ~xvUkvjG ) /\ ~dYJJZNN ) /\ Dysexfy' ) /\ xFCsqKG ) \/ huYwIgE ) \/ ~YJvauDE ) \/ qPEVeTP' ) -> ~kcvXiNS' ) /\ zQGvbXw' ) /\ iTgCcqe ) -> ~pwaTkQI' ) /\ ~aeyRDdv' ) -> rAQLYmq ) \/ VbnKXPE' ) /\ ~fAdFvOz' ) -> AqceGUK' ) \/ lBIufSI' ) \/ AVdYUdu' ) -> WwHCOEe ) -> ~SLLvyzw ) -> ~FXByktQ' ) /\ nvWyhjh' ) \/ ~xOtDtVL ) \/ aCJRrOT ) \/ tqTWJId' ) -> ~zaQxZPF ) /\ ~XBhzNzW' ) \/ XvODbcV ) -> yaGDIVd ) /\ GHmuEpP ) -> kFUBGNY ) -> ~GAuEixb' ) \/ ewtXefe' ) \/ OmgHGhc' ) -> ~NymIpER' ) \/ qBNITMo ) /\ ~VvslohN ) /\ pTkUOtc' ) -> hdTJGaf ) \/ cQsoTlz ) \/ hpZHIyP ) \/ ~rjJhCRL ) \/ TkzOWBI ) \/ cqLoMRb ) -> ~TcsKxrR ) \/ Afebjmc ) /\ xpSPoTa' ) /\ TBfjUJq ) \/ BIyGvjv ) /\ ~oajwSIh' ) \/ pYbRXln ) \/ vqrQjbM ) /\ ~EsjWqYS ) \/ ~ngNlapA ) /\ ~tUKHuFw ) /\ ~EGvbcNL ) -> ~lOjKLhz' ) /\ xkWkQFt' ) -> ~gHhmKpS ) -> ~rISYImo' ) \/ iiEeEjr' ) \/ ZDLuzYt' ) -> ncYtmNO' ) \/ AQBHawD ) /\ ~mposeku ) -> ~KkJhfaB' ) -> fkPbzXQ' ) \/ lBebJIz ) /\ ~zVGtnaD' ) -> aLPsGIC ) \/ ~GbmXfOi ) /\ ~qUjTdcB' ) \/ GBDnQnm ) -> jgFpnmA ) /\ vbrmnnN' ) /\ ~FuMbPwA' ) /\ ~QuOcaIT ) \/ ~SKyodWs ) \/ GxTyKJL ) \/ ~nEigsLi' ) \/ ~hJLUqgt' ) \/ WMEgXof' ) \/ caRLPnD ) \/ ~bmrlQxE ) -> ~PHzRjja' ) -> ARSnFXz ) /\ RuaPHqy' ) -> CZqGDQz' ) -> oWfpSNy' ) \/ ~RDpubgs' ) /\ WSNOtkQ ) /\ ZHvTLCk ) /\ ~UlGuKML ) /\ ~gtinfpe ) \/ ~XAabdkX' ) /\ ~NiTWGGw' ) /\ ~vgUEEiR ) \/ ~HsIhFIN ) \/ ~TPmxZoE' ) -> gniwLct' ) /\ ofklgYW' ) -> ~ecpHXuq' ) /\ ~nthHKfE' ) -> vyfvKTl' ) -> ~NHUWpys ) \/ DLEKljq' ) /\ ~cKqIKkK' ) -> zHIQvYL ) /\ pZJesro ) \/ ~xIDIgxu ) \/ ~WulTKWu' ) -> ~okRcPAi' ) -> ~JplrgRc ) -> mmWaqNt ) /\ ~IPxCVaH' ) \/ DdNzGUZ ) -> ~OjOBEAX' ) -> ~UFhrqef' ) -> nlDPoPW' ) /\ mFrTDqd ) -> gqFOvNR ) -> nIupSLR' ) /\ JUFPoBz ) \/ ~KgDwUxo' ) /\ ~NUjDCoz ) -> rPDDbLu ) \/ sAgDqZB ) \/ jcELPlV' ) \/ qcGFpoC' ) -> ~qfYEMPS' ) -> ~eEWydKi' ) /\ ziIkdDL ) /\ ngtCkaP ) -> ~fsUJXVQ' ) -> ~uJNLPGu' ) /\ ~mhGunWI ) \/ IkoLJAR ) \/ imSXzpH' ) /\ ~ZPJAMFs' ) \/ WyINnNk' ) \/ amnHGLe' ) \/ ~yQApEoG' ) /\ ~fceWNgJ' ) /\ ~lqPYWVB' ) -> vqIRJZM' ) -> JTaLSgP' ) \/ ~iqoaVwb ) \/ ~znjDcUd ) \/ ~AOtFoFv ) /\ RFBNUeG' ) /\ ~bJpJVOB ) /\ ~uDyuUTm' ) -> ~zZGmJJF' ) /\ vSqknrl ) -> fHxlaFW' ) /\ ~KdLnoXO ) \/ mjpdKFC ) -> ~CcnjOiG' ) -> ~WvvNeei' ) /\ ~qSYWUTz' ) \/ elXZaVI ) \/ AhJumEc' ) /\ ~YXLvAFx' ) -> ~tepodvD ) \/ XfSkTHP ) \/ ytvBCUh' ) /\ ~dCeKaTy ) \/ ZPSqNMq' ) -> ~UuuyvbJ' ) /\ OFyhNhV ) \/ jupDkIC ) /\ ~QYCKJHZ ) /\ QQzlyYL ) /\ RdpWzMK ) \/ ~oToUDcg' ) /\ SPbZtEE' ) -> oKgOCiW ) \/ ~oZfjJlw' ) \/ etWviLg' ) \/ qJTGBlj ) /\ ~mHEDZQb' ) -> UoujoxP ) /\ cbntTQW' ) -> GtrTmmb ) /\ LYpEZsZ ) \/ XEqARtS' ) /\ ~eUQcFdU' ) /\ ccJXOHf' ) \/ bxscXkA' ) -> OoODPFJ' ) -> ~CReCDUr' ) /\ vibqwWE ) /\ ~ERKShgx' ) -> gRunPlF' ) \/ ~ypvrBEc ) -> ~wpFqxma ) /\ LuQYAyg ) /\ lfbNsba' ) /\ ~GbHxPIX ) /\ knrcLuQ ) -> dUccWFi' ) -> yzeSdtW' ) \/ Tnqosfo' ) \/ ~JftCyyS' ) \/ QwaxFLx ) /\ wHYIlqZ ) -> axhOpUP' ) -> ~mZioZMs' ) -> SEnsKbC' ) -> OlFPsnu ) -> MAxUdAc' ) /\ ~ISSzWii ) \/ ~dvyJVnD ) -> KFxSYyG ) \/ ZYtQHAs' ) -> ~uAsZlia ) \/ IKuXdRd ) /\ ~xZNeqXK' ) -> SWjRpDy ) -> KZZvUcX' ) -> UrhVUDB ) /\ ovWcSGB' ) /\ TrIbQWj ) /\ ~TWUEXgo' ) \/ ~LLVjKkD ) /\ ~zBiZhop ) /\ CvcWviV' ) -> ~rseUoIg' ) /\ ~ODxRCzr' ) /\ NbJXBEe' ) \/ QniqetY ) -> eXMevHh ) \/ ~FQDymZY' ) /\ kTUFtic' ) -> ITlLgfQ' ) -> NUNtMBm' ) \/ ~UfVXACU ) /\ hMdLCeW ) /\ pcJoMTT ) /\ ~DDwzmrI' ) \/ GxHoLcx ) \/ ~CxkRYTN ) /\ ~stdeHhO' ) \/ JbVoCrw ) /\ DUFvduk ) /\ hbgKQaB' ) /\ ~UeoGxZx' ) /\ ZuAvcKF ) /\ ~GIMGxbb' ) \/ wHadfNe ) \/ QkgzNTF' ) -> OrPiECx' ) \/ ~esdNJiV' ) -> ~SfKSEqb' ) -> RNRAZTG' ) \/ nSmLhbY' ) /\ lIhauqq' ) -> ~BDMIOfy' ) \/ hCiGAoH ) -> fbJbDSY' ) /\ dedFtZZ' ) -> ~ZMEnMUB ) \/ ckkATUF' ) -> ~oNVLOyA' ) \/ Ehakkyx ) \/ LrYcDwC ) \/ ~xvHceQK' ) -> ~IOnEADn' ) \/ ~tsNZFZJ' ) /\ ~jfonDGx ) /\ ZEJesKg' ) -> didkYvW' ) /\ ~ZkdxoMl ) \/ herWUnS ) /\ KPmJMaP' ) /\ ~XrbZWFB' ) \/ HoBGTkZ' ) /\ ~WdtCYGf ) -> ~avzoqCT ) \/ ~SQifyuJ ) -> mYdAlou ) -> EiEEAWV' ) -> ~LMWmuWI ) \/ ~XJMYFGa ) \/ ~PPpSYCJ ) -> EqoWFrH ) -> ~SKasdEQ ) /\ ~WrhCmBv ) \/ SuNUVbT' ) \/ nMqsyyo ) -> ~FnbKNus' ) \/ rwOatck' ) -> LaphmVb' ) /\ qXuiuOy' ) \/ ~merqFRt ) -> EYMGyOQ' ) \/ MIEotuz' ) -> ~hdNIEdp' ) \/ rALWyUq ) \/ NBcGnLd' ) -> ~rMqHjXh' ) -> ZuBHwGH ) /\ ImoHPpE' ) /\ zlaSkAS' ) \/ ~WpiWYcj ) /\ ~gFkPudQ' ) -> ~PaFAvEh' ) \/ ~HLpCwUp ) \/ BuQofTG' ) -> qIBgUjM ) -> ~uXhKRby' ) -> ~AAxEHbU' ) /\ ~FMnikmq' ) -> YWHNbWX' ) \/ ~EEyTevy ) -> ZyzWyeC ) \/ ~kIcKcsS' ) /\ CpvsfVH ) \/ ~eWkrzCE ) /\ HBqeFUF ) \/ dtoIyim ) /\ ~lRGMJqH' ) /\ GjUPfai ) -> lfOmaGD' ) -> IUSfGcm' ) /\ UVaGMBA' ) \/ FaLeIWT ) \/ ~lyxIRHC ) -> UicZCxc' ) -> ~empLIuF ) -> ejKMtcY ) -> ~gifGYQk' ) -> ~elxqPxW' ) \/ ~IpAUCvv ) /\ ~NQBjFUd' ) \/ ~YAsjJkD' ) -> ~uVoJJDA ) -> ~HjCjUUK' ) -> IiZhBPM' ) /\ JqAQGOi' ) \/ ~jiRxNUj' ) -> ~vAXRkeE ) \/ ~ySGapbo ) /\ ~rPpmeud' ) -> ~tnlJTWe' ) -> SfRVHKB' ) \/ ~ghEnLoe' ) -> ~ziWEBPK' ) \/ JmWJAQv' ) /\ oRUVffh ) /\ NTyZlRg' ) \/ xGoysiN' ) /\ ~oFZUUtS' ) \/ pOUAOeO ) /\ GKXwshG ) -> KggWpzu ) -> ~IKccIxv' ) /\ NfTTVOf ) /\ ~OEozfzp ) /\ ~ocNARCm ) -> ~fRPEZrf' ) /\ yGTmJeF ) -> LmAyXyW ) -> jiLMzKQ ) \/ ~lrCmqXW' ) -> GFMMkKh' ) -> ~qJNbOrq' ) -> ~XzgarIa ) /\ ~KvXRISd' ) \/ nPHZuYY ) -> ukTeJnV' ) \/ ~uWkkXCk ) /\ ~SNAnJQv' ) /\ ~MtOXOVF ) /\ BkETHbq ) /\ ~nRBjPHA ) -> lWfLqDt' ) \/ ~PRRvwWz ) \/ ~DQhboIt ) -> ~YXRURTl ) \/ ~nDUMKSB' ) \/ yOMTYJs' ) \/ ~SwFgPyh' ) \/ tCZXtTR ) /\ WwKruIO' ) /\ ~GdYagnN' ) \/ ~zRPPrlr ) -> HRiGCLS ) /\ uHZlkzi ) -> ~RTfPFGt ) /\ fSrrLte ) /\ ~CekRKyt' ) \/ cLBQtRp' ) -> xVhwowt' ) \/ ~MnnMynK' ) \/ NoWleiV' ) \/ yuTCEyP ) \/ LFCxjOD ) -> FkseAWW ) \/ ~psAsAmz' ) \/ ZVYZiqd' ) -> NTFZRnC ) -> ~NJrJiRT' ) -> eQWbdgJ ) \/ ~noGWqoT ) -> FyZbHBx ) -> RYvwPdR ) -> ~Kklpsej ) \/ ~UHHjXIp ) -> olHaZHG' ) -> xpFTgyR' ) -> ~cuOqMZQ ) \/ YZgNKnO ) -> ~nLVuLwP ) \/ Pffhggl ) -> htesqBF ) /\ fDIFkaY' ) -> ~znMzeNA' ) /\ ~VVJBLDv' ) \/ ~OnRYcRE' ) -> ~lBqmDBO' ) /\ ~GPWGNyM ) /\ gfcvADJ' ) \/ ~NqGIWOE ) \/ ~JzGvVAt ) /\ QzXIsTL ) \/ UKylmPJ ) /\ ~zfSRBsE ) \/ ~UwMnGGt ) -> ~PbdinEu' ) \/ uuykGsp ) \/ ~LLlSeMd ) -> hIhdozg ) -> ~TJStPuo ) \/ ~hIwJeJL ) \/ zuldplz ) \/ ~fLfNXOP' ) \/ kOBwGXO' ) /\ ~EHNbdpo' ) -> ~sfCanzj ) -> ~SiiWsTs' ) \/ nCShntG ) -> ~zxzwFJJ ) \/ CzxIVJA' ) \/ PQiCjIN ) -> ~wFYhApT' ) \/ ~mMbTNAr ) /\ xsUbBWC ) -> yrLcmnZ' ) \/ SQiGmnx ) -> onDyEoj ) /\ hIUtEVz ) -> ~hfzGhKG ) /\ ~LhMxkGX' ) \/ ~fAvPdSN ) \/ ~WZuWEoK' ) /\ bUgFsEB' ) /\ ~KmgUtxt ) \/ MTkVzGc ) -> UKpHgMf ) -> ~hyauOtA ) /\ oWXpaUf ) \/ ~YOQFZzF ) \/ ~drGkjJw' ) -> BcmWzBH ) \/ SwPbhxL ) /\ ubVMegF ) -> ~SEGHsGk' ) /\ ABsdUmm ) \/ mutwWey' ) \/ ~ZMNsPpY ) -> ~GdaBoRj ) -> ~XaIklYV' ) -> tMxjeZJ' ) \/ ~XamBgRR' ) -> EKLIxcd ) \/ ~AppBPFD ) /\ ~oUdaPMX ) \/ ~iIbhhgf ) -> GsmKUny' ) /\ VyvhLzA' ) /\ gZRSFap ) \/ AtkWTIb' ) \/ ~DuMJcou ) \/ fICscql ) \/ QzmCSeL ) /\ KDLLnfQ' ) \/ ~vjqwowo' ) /\ ztutrid ) -> ~cBKhTNd ) -> ~IFlHNIN' ) -> CiZtnQx' ) -> ~tveGbFl' ) \/ DpubqfE' ) \/ ~GTzgsGS ) -> ~wyazVlQ' ) -> ~raqAXgf' ) \/ tsCpKKK' ) -> oJBsUrU' ) -> OCThpKM ) /\ cZQeVxs ) /\ bMRKBoA ) /\ XAPDHHu' ) -> tiZNpRY' ) \/ tLQdWmG' ) /\ ~rlcMVeh ) -> tzhVBqV ) \/ ~tQHVnKN' ) \/ EuZODGj ) \/ HiGUFyX ) \/ doJQoPM ) /\ ~agZPODN ) \/ ~DmxVmeX' ) \/ ~YzfPuwA' ) -> LZsnWsF' ) \/ ~bVWlvTj' ) /\ JoGglzX' ) \/ ~BWOfgNu ) \/ ~TQUUQec' ) /\ ~GCuEDqW ) /\ ~vKASjZg ) \/ ~MjSzPVV' ) /\ ~TKsWXPQ ) -> RgUmvLj' ) \/ ~nkkkVLd' ) \/ ~LYUZWMI ) /\ ~wTpaYch ) -> ~EwLexAT ) \/ ~NioNmni' ) /\ ZEQrREb ) \/ BETurMD' ) \/ ~YeLfKbR' ) -> ~FWxdwdS ) /\ ~mpHHomT ) \/ ~lcpxHhp' ) \/ RMoNFUD' ) /\ JyxjxhS' ) /\ ~NItswkV ) -> Tmualnh' ) -> RudGHFT' ) -> ~vmTQWTv ) -> ZmybZos' ) -> ~MKhbYeC' ) \/ hIIvWLR' ) \/ REZiwjq' ) -> ~QbeWDNz ) -> mNPsWBn' ) -> bkoXJzQ ) /\ JggkkCW' ) -> ~goyESWp ) /\ ocrmPWP' ) \/ ufPfAjy ) \/ ~fiBoxQi' ) /\ ~LkYpKMR ) -> naeJLWj ) \/ nxPgqBa' ) -> ~EOQxPkK' ) \/ IYhdkuK' ) \/ FYIrNCZ' ) \/ ZiiyWYX ) \/ prwIZgY ) /\ SSTuOID ) /\ ~COjPpZc' ) /\ ~hoFfsEe' ) \/ GyvnQOb' ) \/ ~BWdcmsm' ) /\ diBkrwr ) -> ~nHYBmxq ) \/ LqmYMpH' ) -> CjjKlsw ) -> ~sFqzTYE ) -> ~womyGCc ) /\ ~jOhPaug ) /\ fRwcPVt' ) -> auJDoxf' ) \/ ~mmxQABY ) \/ ~pEHsXSY' ) \/ UudDsGC' ) /\ ~xveHglA ) /\ ~uCbpkdZ' ) /\ EoJTqea' ) -> ~qGyUPmd' ) -> ~xSYFQIt' ) /\ ~TTFAMOS' ) -> ~ZORtZIz ) -> ~BpYdEeb ) /\ ZQVwdRX' ) \/ ~HCAaTzs ) diff --git a/test/formulas.txt b/test/formulas.txt new file mode 100644 index 00000000..d388e4ed --- /dev/null +++ b/test/formulas.txt @@ -0,0 +1,15 @@ +Example 1: +(~p3-TOKEN /\ ~p2-TOKEN /\ ~p1-TOKEN /\ ~SELECTING /\ ~STARTED /\ (p1_ticket_1 /\ p1_ticket_0) /\ (p2_ticket_1 /\ p2_ticket_0) /\ (p3_ticket_1 /\ p3_ticket_0) /\ (~MAX_ticket_1 /\ ~MAX_ticket_0) /\ (~p1_line_2 /\ ~p1_line_1 /\ ~p1_line_0) /\ (~p2_line_2 /\ ~p2_line_1 /\ ~p2_line_0) /\ (~p3_line_2 /\ ~p3_line_1 /\ ~p3_line_0)) + +Example 2: +(~p3-TOKEN[0] /\ ~p2-TOKEN[0] /\ ~p1-TOKEN[0] /\ ~SELECTING[0] /\ ~STARTED[0] /\ (p1_ticket_1[0] /\ p1_ticket_0[0]) /\ (p2_ticket_1[0] /\ p2_ticket_0[0]) /\ (p3_ticket_1[0] /\ p3_ticket_0[0]) /\ (~MAX_ticket_1[0] /\ ~MAX_ticket_0[0]) /\ (~p1_line_2[0] /\ ~p1_line_1[0] /\ ~p1_line_0[0]) /\ (~p2_line_2[0] /\ ~p2_line_1[0] /\ ~p2_line_0[0]) /\ (~p3_line_2[0] /\ ~p3_line_1[0] /\ ~p3_line_0[0])) + +Example 3: +(~p3-TOKEN[0] /\ ~p2-TOKEN[0] /\ ~p1-TOKEN[0] /\ ~SELECTING[0] /\ ~STARTED[0] /\ (p1_ticket_1[0] /\ p1_ticket_0[0]) /\ (p2_ticket_1[0] /\ p2_ticket_0[0]) /\ (p3_ticket_1[0] /\ p3_ticket_0[0]) /\ (~MAX_ticket_1[0] /\ ~MAX_ticket_0[0]) /\ (~p1_line_2[0] /\ ~p1_line_1[0] /\ ~p1_line_0[0]) /\ (~p2_line_2[0] /\ ~p2_line_1[0] /\ ~p2_line_0[0]) /\ (~p3_line_2[0] /\ ~p3_line_1[0] /\ ~p3_line_0[0])) +/\ +(~p3-TOKEN[1] /\ ~p2-TOKEN[1] /\ ~p1-TOKEN[1] /\ ~SELECTING[1] /\ ~STARTED[1] /\ (p1_ticket_1[1] /\ p1_ticket_0[1]) /\ (p2_ticket_1[1] /\ p2_ticket_0[1]) /\ (p3_ticket_1[1] /\ p3_ticket_0[1]) /\ (~MAX_ticket_1[1] /\ ~MAX_ticket_0[1]) /\ (~p1_line_2[1] /\ ~p1_line_1[1] /\ ~p1_line_0[1]) /\ (~p2_line_2[1] /\ ~p2_line_1[1] /\ ~p2_line_0[1]) /\ (~p3_line_2[1] /\ ~p3_line_1[1] /\ ~p3_line_0[1])) + +Example 4: +(~p3-TOKEN_A[0] /\ ~p2-TOKEN_A[0] /\ ~p1-TOKEN_A[0] /\ ~SELECTING_A[0] /\ ~STARTED_A[0] /\ (p1_ticket_1_A[0] /\ p1_ticket_0_A[0]) /\ (p2_ticket_1_A[0] /\ p2_ticket_0_A[0]) /\ (p3_ticket_1_A[0] /\ p3_ticket_0_A[0]) /\ (~MAX_ticket_1_A[0] /\ ~MAX_ticket_0_A[0]) /\ (~p1_line_2_A[0] /\ ~p1_line_1_A[0] /\ ~p1_line_0_A[0]) /\ (~p2_line_2_A[0] /\ ~p2_line_1_A[0] /\ ~p2_line_0_A[0]) /\ (~p3_line_2_A[0] /\ ~p3_line_1_A[0] /\ ~p3_line_0_A[0])) +/\ +(~p3-TOKEN_B[0] /\ ~p2-TOKEN_B[0] /\ ~p1-TOKEN_B[0] /\ ~SELECTING_B[0] /\ ~STARTED_B[0] /\ (p1_ticket_1_B[0] /\ p1_ticket_0_B[0]) /\ (p2_ticket_1_B[0] /\ p2_ticket_0_B[0]) /\ (p3_ticket_1_B[0] /\ p3_ticket_0_B[0]) /\ (~MAX_ticket_1_B[0] /\ ~MAX_ticket_0_B[0]) /\ (~p1_line_2_B[0] /\ ~p1_line_1_B[0] /\ ~p1_line_0_B[0]) /\ (~p2_line_2_B[0] /\ ~p2_line_1_B[0] /\ ~p2_line_0_B[0]) /\ (~p3_line_2_B[0] /\ ~p3_line_1_B[0] /\ ~p3_line_0_B[0]))