195 lines
20 KiB
Plaintext
195 lines
20 KiB
Plaintext
INFO Running translator.
|
|
INFO translator input: ['/home/pluehne/Documents/ASP/pddl-instances/ipc-2002/domains/driverlog-strips-automatic/domain.pddl', '/home/pluehne/Documents/ASP/pddl-instances/ipc-2002/domains/driverlog-strips-automatic/instances/instance-18.pddl']
|
|
INFO translator arguments: []
|
|
INFO translator time limit: None
|
|
INFO translator memory limit: None
|
|
INFO callstring: /home/pluehne/.usr/bin/python /home/wv/bin/linux/64/fast-downward-10997/builds/release64/bin/translate/translate.py /home/pluehne/Documents/ASP/pddl-instances/ipc-2002/domains/driverlog-strips-automatic/domain.pddl /home/pluehne/Documents/ASP/pddl-instances/ipc-2002/domains/driverlog-strips-automatic/instances/instance-18.pddl
|
|
Parsing...
|
|
Parsing: [0.040s CPU, 0.046s wall-clock]
|
|
Normalizing task... [0.000s CPU, 0.002s wall-clock]
|
|
Instantiating...
|
|
Generating Datalog program... [0.020s CPU, 0.018s wall-clock]
|
|
Normalizing Datalog program...
|
|
Normalizing Datalog program: [0.020s CPU, 0.019s wall-clock]
|
|
Preparing model... [0.040s CPU, 0.044s wall-clock]
|
|
Generated 35 rules.
|
|
Computing model... [0.880s CPU, 0.881s wall-clock]
|
|
10402 relevant atoms
|
|
3678 auxiliary atoms
|
|
14080 final queue length
|
|
22680 total queue pushes
|
|
Completing instantiation... [1.620s CPU, 1.625s wall-clock]
|
|
Instantiating: [2.600s CPU, 2.599s wall-clock]
|
|
Computing fact groups...
|
|
Finding invariants...
|
|
11 initial candidates
|
|
Finding invariants: [0.030s CPU, 0.035s wall-clock]
|
|
Checking invariant weight... [0.000s CPU, 0.003s wall-clock]
|
|
Instantiating groups... [0.100s CPU, 0.089s wall-clock]
|
|
Collecting mutex groups... [0.000s CPU, 0.005s wall-clock]
|
|
Choosing groups...
|
|
5 uncovered facts
|
|
Choosing groups: [0.020s CPU, 0.015s wall-clock]
|
|
Building translation key... [0.010s CPU, 0.009s wall-clock]
|
|
Computing fact groups: [0.200s CPU, 0.201s wall-clock]
|
|
Building STRIPS to SAS dictionary... [0.000s CPU, 0.004s wall-clock]
|
|
Building dictionary for full mutex groups... [0.010s CPU, 0.004s wall-clock]
|
|
Building mutex information...
|
|
Building mutex information: [0.000s CPU, 0.005s wall-clock]
|
|
Translating task...
|
|
Processing axioms...
|
|
Simplifying axioms... [0.000s CPU, 0.000s wall-clock]
|
|
Processing axioms: [0.090s CPU, 0.091s wall-clock]
|
|
Translating task: [1.780s CPU, 1.775s wall-clock]
|
|
500 effect conditions simplified
|
|
0 implied preconditions added
|
|
Detecting unreachable propositions...
|
|
0 operators removed
|
|
0 axioms removed
|
|
30 propositions removed
|
|
Detecting unreachable propositions: [0.890s CPU, 0.899s wall-clock]
|
|
Reordering and filtering variables...
|
|
32 of 35 variables necessary.
|
|
5 of 35 mutex groups necessary.
|
|
8360 of 8960 operators necessary.
|
|
0 of 0 axiom rules necessary.
|
|
Reordering and filtering variables: [0.230s CPU, 0.224s wall-clock]
|
|
Translator variables: 32
|
|
Translator derived variables: 0
|
|
Translator facts: 825
|
|
Translator goal facts: 23
|
|
Translator mutex groups: 5
|
|
Translator total mutex groups size: 30
|
|
Translator operators: 8360
|
|
Translator axioms: 0
|
|
Translator task size: 35190
|
|
Translator peak memory: 59480 KB
|
|
Writing output... [0.640s CPU, 0.694s wall-clock]
|
|
Done! [6.460s CPU, 6.531s wall-clock]
|
|
planner.py version 0.0.1
|
|
|
|
Time: 47.74s
|
|
Memory: 2049MB
|
|
|
|
Iteration 1
|
|
Queue: [(0,0,0,True), (1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 0
|
|
Solving...
|
|
Solving Time: 0.24s
|
|
Memory: 2049MB (+0MB)
|
|
UNSAT
|
|
Iteration Time: 0.24s
|
|
|
|
Iteration 2
|
|
Queue: [(1,5,0,True), (2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 0
|
|
Grounding... [('step', [1]), ('step', [2]), ('step', [3]), ('step', [4]), ('step', [5]), ('check', [5])]
|
|
Grounding Time: 1.06s
|
|
Memory: 2099MB (+50MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Solving Time: 0.11s
|
|
Memory: 2122MB (+23MB)
|
|
UNSAT
|
|
Iteration Time: 1.87s
|
|
|
|
Iteration 3
|
|
Queue: [(2,10,0,True), (3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 5
|
|
Grounding... [('step', [6]), ('step', [7]), ('step', [8]), ('step', [9]), ('step', [10]), ('check', [10])]
|
|
Grounding Time: 1.03s
|
|
Memory: 2156MB (+34MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Solving Time: 2.69s
|
|
Memory: 2204MB (+48MB)
|
|
UNKNOWN
|
|
Iteration Time: 4.42s
|
|
|
|
Iteration 4
|
|
Queue: [(3,15,0,True), (4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 10
|
|
Grounding... [('step', [11]), ('step', [12]), ('step', [13]), ('step', [14]), ('step', [15]), ('check', [15])]
|
|
Grounding Time: 1.03s
|
|
Memory: 2229MB (+25MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Solving Time: 3.49s
|
|
Memory: 2283MB (+54MB)
|
|
UNKNOWN
|
|
Iteration Time: 5.24s
|
|
|
|
Iteration 5
|
|
Queue: [(4,20,0,True), (5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 15
|
|
Grounding... [('step', [16]), ('step', [17]), ('step', [18]), ('step', [19]), ('step', [20]), ('check', [20])]
|
|
Grounding Time: 1.06s
|
|
Memory: 2308MB (+25MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Solving Time: 4.68s
|
|
Memory: 2372MB (+64MB)
|
|
UNKNOWN
|
|
Iteration Time: 6.46s
|
|
|
|
Iteration 6
|
|
Queue: [(5,25,0,True), (6,30,0,True)]
|
|
Grounded Until: 20
|
|
Grounding... [('step', [21]), ('step', [22]), ('step', [23]), ('step', [24]), ('step', [25]), ('check', [25])]
|
|
Grounding Time: 1.03s
|
|
Memory: 2384MB (+12MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Solving Time: 5.25s
|
|
Memory: 2486MB (+102MB)
|
|
UNKNOWN
|
|
Iteration Time: 7.02s
|
|
|
|
Iteration 7
|
|
Queue: [(6,30,0,True)]
|
|
Grounded Until: 25
|
|
Grounding... [('step', [26]), ('step', [27]), ('step', [28]), ('step', [29]), ('step', [30]), ('check', [30])]
|
|
Grounding Time: 1.03s
|
|
Memory: 2486MB (+0MB)
|
|
Unblocking actions...
|
|
Solving...
|
|
Answer: 1
|
|
occurs(action(("load-truck","package1","truck2","s3")),1) occurs(action(("walk","driver1","s11","p11-8")),1) occurs(action(("walk","driver2","s6","p6-19")),1) occurs(action(("walk","driver3","s1","p1-7")),1) occurs(action(("walk","driver4","s2","p2-12")),1) occurs(action(("walk","driver5","s4","p2-4")),1) occurs(action(("load-truck","package10","truck2","s3")),2) occurs(action(("load-truck","package15","truck2","s3")),2) occurs(action(("load-truck","package4","truck5","s2")),2) occurs(action(("walk","driver1","p11-8","s8")),2) occurs(action(("walk","driver2","p6-19","s19")),2) occurs(action(("walk","driver3","p1-7","s7")),2) occurs(action(("walk","driver4","p2-12","s12")),2) occurs(action(("walk","driver5","p2-4","s2")),2) occurs(action(("load-truck","package5","truck2","s3")),3) occurs(action(("board-truck","driver1","truck4","s8")),3) occurs(action(("board-truck","driver4","truck1","s12")),3) occurs(action(("unload-truck","package1","truck2","s3")),3) occurs(action(("walk","driver2","s19","p19-18")),3) occurs(action(("walk","driver3","s7","p7-5")),3) occurs(action(("walk","driver5","s2","p2-12")),3) occurs(action(("drive-truck","truck4","s8","s14","driver1")),4) occurs(action(("walk","driver2","p19-18","s18")),4) occurs(action(("walk","driver3","p7-5","s5")),4) occurs(action(("load-truck","package16","truck5","s2")),5) occurs(action(("disembark-truck","driver1","truck4","s14")),5) occurs(action(("walk","driver5","p2-12","s12")),5) occurs(action(("unload-truck","package15","truck2","s3")),5) occurs(action(("unload-truck","package10","truck2","s3")),5) occurs(action(("walk","driver2","s18","p18-14")),5) occurs(action(("walk","driver3","s5","p5-2")),5) occurs(action(("drive-truck","truck1","s12","s8","driver4")),6) occurs(action(("walk","driver2","p18-14","s14")),6) occurs(action(("walk","driver3","p5-2","s2")),6) occurs(action(("walk","driver1","s14","p18-14")),6) occurs(action(("load-truck","package1","truck2","s3")),7) occurs(action(("board-truck","driver2","truck4","s14")),7) occurs(action(("walk","driver1","p18-14","s18")),7) occurs(action(("disembark-truck","driver4","truck1","s8")),7) occurs(action(("drive-truck","truck4","s14","s13","driver2")),8) occurs(action(("load-truck","package14","truck4","s14")),8) occurs(action(("board-truck","driver3","truck5","s2")),8) occurs(action(("board-truck","driver4","truck3","s8")),8) occurs(action(("walk","driver1","s18","p3-18")),8) occurs(action(("walk","driver5","s12","p13-12")),8) occurs(action(("load-truck","package10","truck2","s3")),9) occurs(action(("drive-truck","truck3","s8","s2","driver4")),9) occurs(action(("drive-truck","truck5","s2","s18","driver3")),9) occurs(action(("walk","driver1","p3-18","s3")),9) occurs(action(("disembark-truck","driver2","truck4","s13")),9) occurs(action(("walk","driver5","p13-12","s13")),9) occurs(action(("unload-truck","package5","truck2","s3")),9) occurs(action(("unload-truck","package4","truck5","s2")),9) occurs(action(("unload-truck","package1","truck2","s3")),9) occurs(action(("load-truck","package1","truck2","s3")),10) occurs(action(("load-truck","package15","truck2","s3")),10) occurs(action(("load-truck","package17","truck5","s18")),10) occurs(action(("drive-truck","truck3","s2","s15","driver4")),10) occurs(action(("board-truck","driver5","truck4","s13")),10) occurs(action(("board-truck","driver1","truck2","s3")),10) occurs(action(("drive-truck","truck5","s18","s2","driver3")),10) occurs(action(("walk","driver2","s13","p13-12")),10) occurs(action(("load-truck","package4","truck5","s2")),11) occurs(action(("drive-truck","truck2","s3","s1","driver1")),11) occurs(action(("unload-truck","package14","truck4","s13")),11) occurs(action(("unload-truck","package17","truck5","s2")),11) occurs(action(("drive-truck","truck4","s13","s14","driver5")),11) occurs(action(("walk","driver2","p13-12","s12")),11) occurs(action(("unload-truck","package1","truck2","s1")),12) occurs(action(("drive-truck","truck4","s14","s16","driver5")),12) occurs(action(("load-truck","package18","truck3","s15")),12) occurs(action(("drive-truck","truck3","s15","s2","driver4")),12) occurs(action(("drive-truck","truck5","s2","s8","driver3")),12) occurs(action(("drive-truck","truck2","s1","s3","driver1")),12) occurs(action(("walk","driver2","s12","p12-8")),12) occurs(action(("load-truck","package11","truck4","s16")),13) occurs(action(("load-truck","package17","truck3","s2")),13) occurs(action(("load-truck","package19","truck4","s16")),13) occurs(action(("drive-truck","truck3","s2","s18","driver4")),13) occurs(action(("drive-truck","truck4","s16","s4","driver5")),13) occurs(action(("drive-truck","truck2","s3","s14","driver1")),13) occurs(action(("walk","driver2","p12-8","s8")),13) occurs(action(("disembark-truck","driver3","truck5","s8")),13) occurs(action(("drive-truck","truck3","s18","s16","driver4")),14) occurs(action(("board-truck","driver3","truck5","s8")),14) occurs(action(("board-truck","driver2","truck1","s8")),14) occurs(action(("unload-truck","package10","truck2","s14")),14) occurs(action(("unload-truck","package4","truck5","s8")),14) occurs(action(("drive-truck","truck4","s4","s14","driver5")),14) occurs(action(("disembark-truck","driver1","truck2","s14")),14) occurs(action(("unload-truck","package16","truck5","s8")),15) occurs(action(("unload-truck","package17","truck3","s16")),15) occurs(action(("load-truck","package10","truck2","s14")),15) occurs(action(("drive-truck","truck5","s8","s7","driver3")),15) occurs(action(("unload-truck","package18","truck3","s16")),15) occurs(action(("drive-truck","truck1","s8","s0","driver2")),15) occurs(action(("disembark-truck","driver5","truck4","s14")),15) occurs(action(("load-truck","package18","truck3","s16")),16) occurs(action(("load-truck","package7","truck5","s7")),16) occurs(action(("drive-truck","truck1","s0","s7","driver2")),16) occurs(action(("board-truck","driver1","truck4","s14")),16) occurs(action(("drive-truck","truck5","s7","s8","driver3")),16) occurs(action(("drive-truck","truck3","s16","s18","driver4")),16) occurs(action(("board-truck","driver5","truck2","s14")),16) occurs(action(("unload-truck","package11","truck4","s14")),16) occurs(action(("unload-truck","package19","truck4","s14")),16) occurs(action(("drive-truck","truck3","s18","s3","driver4")),17) occurs(action(("load-truck","package11","truck2","s14")),17) occurs(action(("drive-truck","truck4","s14","s13","driver1")),17) occurs(action(("drive-truck","truck2","s14","s2","driver5")),17) occurs(action(("load-truck","package19","truck4","s14")),17) occurs(action(("load-truck","package4","truck5","s8")),17) occurs(action(("drive-truck","truck5","s8","s2","driver3")),17) occurs(action(("disembark-truck","driver2","truck1","s7")),17) occurs(action(("load-truck","package14","truck4","s13")),18) occurs(action(("load-truck","package5","truck3","s3")),18) occurs(action(("drive-truck","truck3","s3","s1","driver4")),18) occurs(action(("unload-truck","package11","truck2","s2")),18) occurs(action(("unload-truck","package15","truck2","s2")),18) occurs(action(("unload-truck","package19","truck4","s13")),18) occurs(action(("unload-truck","package7","truck5","s2")),18) occurs(action(("drive-truck","truck4","s13","s0","driver1")),18) occurs(action(("disembark-truck","driver3","truck5","s2")),18) occurs(action(("disembark-truck","driver5","truck2","s2")),18) occurs(action(("unload-truck","package4","truck5","s2")),18) occurs(action(("walk","driver2","s7","p1-7")),18) occurs(action(("drive-truck","truck3","s1","s13","driver4")),19) occurs(action(("load-truck","package11","truck5","s2")),19) occurs(action(("load-truck","package15","truck5","s2")),19) occurs(action(("board-truck","driver5","truck5","s2")),19) occurs(action(("board-truck","driver3","truck2","s2")),19) occurs(action(("unload-truck","package14","truck4","s0")),19) occurs(action(("disembark-truck","driver1","truck4","s0")),19) occurs(action(("walk","driver2","p1-7","s1")),19) occurs(action(("load-truck","package19","truck3","s13")),20) occurs(action(("load-truck","package4","truck2","s2")),20) occurs(action(("load-truck","package7","truck2","s2")),20) occurs(action(("drive-truck","truck5","s2","s8","driver5")),20) occurs(action(("drive-truck","truck2","s2","s18","driver3")),20) occurs(action(("walk","driver1","s0","p7-0")),20) occurs(action(("walk","driver2","s1","p1-9")),20) occurs(action(("drive-truck","truck5","s8","s9","driver5")),21) occurs(action(("load-truck","package2","truck2","s18")),21) occurs(action(("drive-truck","truck3","s13","s10","driver4")),21) occurs(action(("load-truck","package9","truck2","s18")),21) occurs(action(("drive-truck","truck2","s18","s10","driver3")),21) occurs(action(("walk","driver1","p7-0","s7")),21) occurs(action(("walk","driver2","p1-9","s9")),21) occurs(action(("unload-truck","package7","truck2","s10")),22) occurs(action(("load-truck","package12","truck3","s10")),22) occurs(action(("load-truck","package14","truck4","s0")),22) occurs(action(("drive-truck","truck5","s9","s13","driver5")),22) occurs(action(("board-truck","driver1","truck1","s7")),22) occurs(action(("disembark-truck","driver3","truck2","s10")),22) occurs(action(("disembark-truck","driver4","truck3","s10")),22) occurs(action(("walk","driver2","s9","p0-9")),22) occurs(action(("unload-truck","package10","truck2","s10")),23) occurs(action(("unload-truck","package11","truck5","s13")),23) occurs(action(("unload-truck","package4","truck2","s10")),23) occurs(action(("load-truck","package13","truck5","s13")),23) occurs(action(("board-truck","driver4","truck2","s10")),23) occurs(action(("unload-truck","package2","truck2","s10")),23) occurs(action(("unload-truck","package5","truck3","s10")),23) occurs(action(("drive-truck","truck5","s13","s0","driver5")),23) occurs(action(("walk","driver2","p0-9","s0")),23) occurs(action(("drive-truck","truck1","s7","s0","driver1")),23) occurs(action(("unload-truck","package12","truck3","s10")),23) occurs(action(("drive-truck","truck2","s10","s0","driver4")),24) occurs(action(("load-truck","package12","truck2","s10")),24) occurs(action(("load-truck","package2","truck2","s10")),24) occurs(action(("load-truck","package5","truck2","s10")),24) occurs(action(("load-truck","package6","truck2","s10")),24) occurs(action(("board-truck","driver3","truck3","s10")),24) occurs(action(("unload-truck","package13","truck5","s0")),24) occurs(action(("disembark-truck","driver1","truck1","s0")),24) occurs(action(("disembark-truck","driver5","truck5","s0")),24) occurs(action(("load-truck","package13","truck2","s0")),25) occurs(action(("board-truck","driver5","truck4","s0")),25) occurs(action(("board-truck","driver1","truck5","s0")),25) occurs(action(("drive-truck","truck3","s10","s18","driver3")),25) occurs(action(("drive-truck","truck2","s0","s8","driver4")),25) occurs(action(("board-truck","driver2","truck1","s0")),25) occurs(action(("unload-truck","package14","truck4","s0")),25) occurs(action(("unload-truck","package2","truck2","s0")),25) occurs(action(("unload-truck","package5","truck2","s0")),25) occurs(action(("unload-truck","package6","truck2","s0")),25) occurs(action(("unload-truck","package9","truck2","s0")),25) occurs(action(("drive-truck","truck2","s8","s12","driver4")),26) occurs(action(("load-truck","package14","truck1","s0")),26) occurs(action(("drive-truck","truck4","s0","s18","driver5")),26) occurs(action(("load-truck","package2","truck1","s0")),26) occurs(action(("load-truck","package5","truck1","s0")),26) occurs(action(("load-truck","package6","truck1","s0")),26) occurs(action(("load-truck","package9","truck1","s0")),26) occurs(action(("drive-truck","truck5","s0","s18","driver1")),26) occurs(action(("drive-truck","truck1","s0","s8","driver2")),26) occurs(action(("unload-truck","package19","truck3","s18")),26) occurs(action(("unload-truck","package12","truck2","s12")),27) occurs(action(("unload-truck","package13","truck2","s12")),27) occurs(action(("unload-truck","package15","truck5","s18")),27) occurs(action(("drive-truck","truck5","s18","s9","driver1")),27) occurs(action(("drive-truck","truck3","s18","s3","driver3")),27) occurs(action(("load-truck","package19","truck4","s18")),27) occurs(action(("drive-truck","truck4","s18","s2","driver5")),27) occurs(action(("drive-truck","truck1","s8","s7","driver2")),27) occurs(action(("drive-truck","truck2","s12","s8","driver4")),27) occurs(action(("unload-truck","package19","truck4","s2")),28) occurs(action(("unload-truck","package2","truck1","s7")),28) occurs(action(("unload-truck","package6","truck1","s7")),28) occurs(action(("unload-truck","package9","truck1","s7")),28) occurs(action(("drive-truck","truck2","s8","s0","driver4")),28) occurs(action(("drive-truck","truck1","s7","s15","driver2")),28) occurs(action(("disembark-truck","driver1","truck5","s9")),28) occurs(action(("disembark-truck","driver3","truck3","s3")),28) occurs(action(("drive-truck","truck4","s2","s8","driver5")),28) occurs(action(("unload-truck","package14","truck1","s15")),29) occurs(action(("unload-truck","package18","truck3","s3")),29) occurs(action(("drive-truck","truck4","s8","s9","driver5")),29) occurs(action(("walk","driver1","s9","p1-9")),29) occurs(action(("disembark-truck","driver4","truck2","s0")),29) occurs(action(("unload-truck","package5","truck1","s15")),30) occurs(action(("disembark-truck","driver5","truck4","s9")),30) occurs(action(("walk","driver1","p1-9","s1")),30) occurs(action(("drive-truck","truck1","s15","s17","driver2")),30) occurs(action(("board-truck","driver3","truck3","s3")),30) occurs(action(("walk","driver4","s0","p6-0")),30)
|
|
Solving Time: 5.69s
|
|
Memory: 2498MB (+12MB)
|
|
SAT
|
|
SATISFIABLE
|
|
|
|
Models : 1+
|
|
Calls : 7
|
|
Time : 80.519s (Solving: 21.38s 1st Model: 5.58s Unsat: 0.00s)
|
|
CPU Time : 80.460s
|
|
|
|
Choices : 898539
|
|
Conflicts : 55907 (Analyzed: 55906)
|
|
Restarts : 474 (Average: 117.95 Last: 186)
|
|
Model-Level : 2738.0
|
|
Problems : 7 (Average Length: 17.00 Splits: 0)
|
|
Lemmas : 70315 (Deleted: 43941)
|
|
Binary : 16352 (Ratio: 23.26%)
|
|
Ternary : 1031 (Ratio: 1.47%)
|
|
Conflict : 55906 (Average Length: 168.9 Ratio: 79.51%)
|
|
Loop : 14409 (Average Length: 2.0 Ratio: 20.49%)
|
|
Other : 0 (Average Length: 0.0 Ratio: 0.00%)
|
|
Backjumps : 55906 (Average: 13.51 Max: 2492 Sum: 755395)
|
|
Executed : 55606 (Average: 13.44 Max: 2492 Sum: 751143 Ratio: 99.44%)
|
|
Bounded : 300 (Average: 14.17 Max: 32 Sum: 4252 Ratio: 0.56%)
|
|
|
|
Rules : 22893189
|
|
Atoms : 22893189
|
|
Bodies : 1 (Original: 0)
|
|
Tight : Yes
|
|
Variables : 291300 (Eliminated: 0 Frozen: 146054)
|
|
Constraints : 1354271 (Binary: 96.8% Ternary: 1.9% Other: 1.3%)
|
|
|
|
Memory Peak : 2527MB
|
|
Max. Length : 30 steps
|
|
Sol. Length : 30 steps
|
|
|
|
|