PDA

View Full Version : Strange Box Solver



DannyRS
03-22-2013, 05:06 AM
Ok so I see we don't have one yet, I'm curious, how was it solved before?

Looking through the scar and early srl revisions, the solver just seems to call some plugin,

But what was the prefered method for solving it inside the plugin? Wizzup and WT said somewhere in the archive about it needing high memory, so I'm guessing bitmaps?

Seems to be a rather common random, so I'd like to get it solvable again :p

Anyone any ideas / experience on what to try next time I get a box to test?

Le Jingle
03-22-2013, 06:11 AM
I think this is an old version of what you're talking about?:

function GetBoxSide: Integer;
var
Side, x, y: Integer;
begin
Side := BitmapFromString(181, 181, '');
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
CopyClientToBitmap(Side, 172, 45, 352, 225);
Result := Side;
end;


And I attached the file here too.
I think there oculd be better ways to get a rotating object like that, no?
iirc Coh3n made a TRotateObject type in the current antirandoms folder

DannyRS
03-22-2013, 01:44 PM
Le Jingle,

Yea thats what I'm talking about, but what on earth is that doing haha? It just seems to get a bitmap of a side, then it calls "process picture" then frees the bitmap and clicks an answer? I don't understand how it's supposed to get the number or the shape

Ashaman88
03-22-2013, 01:50 PM
Maybe do something with counting colors? I guess first you would need to be able to tell when the box is completely facing you to get the best view of it.

DannyRS
03-22-2013, 01:58 PM
Maybe do something with counting colors? I guess first you would need to be able to tell when the box is completely facing you to get the best view of it.

Yeh I'm going to have a play around when I get another box, see how different the numbers are from each other, it's not like testing will be much of a problem eh :p plenty of those damn things in 5min

Ashaman88
03-22-2013, 02:05 PM
Yeh I'm going to have a play around when I get another box, see how different the numbers are from each other, it's not like testing will be much of a problem eh :p plenty of those damn things in 5min

haha true, but I don't think they add more while the spiny screen is open

DannyRS
03-22-2013, 02:10 PM
haha true, but I don't think they add more while the spiny screen is open

Yeh you can keep the screen open to avoid getting em, but if you take too long, then exit without solving, you get another one :p but if I just keep thieving for like 5min after getting, I'm sure I'll have plenty

Ashaman88
03-22-2013, 02:27 PM
Yeh you can keep the screen open to avoid getting em, but if you take too long, then exit without solving, you get another one :p but if I just keep thieving for like 5min after getting, I'm sure I'll have plenty

haha nice. PS yes the compass alignment is the most annoying thing ever.

DannyRS
03-22-2013, 11:37 PM
Ok, got tpa's like this (smartgfx debug), now time to think what to do with them after haha :p

http://i.imgur.com/eSuVho4.png

Olly
03-22-2013, 11:38 PM
use the converted plugin? that used to work fine back in old times.

DannyRS
03-22-2013, 11:39 PM
use the converted plugin? that used to work fine back in old times.

which one, whats the name?

Olly
03-22-2013, 11:45 PM
which one, whats the name?

http://villavu.com/forum/showthread.php?t=97151&p=1179064#post1179064

DannyRS
03-23-2013, 12:31 AM
http://villavu.com/forum/showthread.php?t=97151&p=1179064#post1179064

Tried it, doesn't seem to work :/

Gets the question fine, but doesn't get any further, any ideas?

Ashaman88
03-27-2013, 02:30 AM
Tried it, doesn't seem to work :/

Gets the question fine, but doesn't get any further, any ideas?

Yeah running into the same issue - and the maths on those functions is cray cray may take awhile to figure out what it's doing :)

DannyRS
03-28-2013, 02:04 AM
Yeah running into the same issue - and the maths on those functions is cray cray may take awhile to figure out what it's doing :)

Been really busy with family crap past few days, the plugin checks the bitmap line by line and finds the edges, then works out the verts of the shapes roughly,

I think it's just to do with the bitmaps being handled differently in scar and Simba, I don't think I have the math skills to fix it :D maybe with printing out the results from the plugin, we could change the expected vars of the shapes for it to work, needs alot of work tho :p

Ashaman88
03-28-2013, 12:28 PM
Been really busy with family crap past few days, the plugin checks the bitmap line by line and finds the edges, then works out the verts of the shapes roughly,

I think it's just to do with the bitmaps being handled differently in scar and Simba, I don't think I have the math skills to fix it :D maybe with printing out the results from the plugin, we could change the expected vars of the shapes for it to work, needs alot of work tho :p

Well Borrowing stuff from that function, I now have she shapes working 95% atm. Tonight I'll finish the shape detection and see how hard the numbers are

Justin
03-28-2013, 12:30 PM
Well Borrowing stuff from that function, I now have she shapes working 95% atm. Tonight I'll finish the shape detection and see how hard the numbers are

Like a boss, amazing work :)

Ashaman88
03-29-2013, 02:38 AM
Like a boss, amazing work :)

Thanks ;) Ok Shapes are pretty much 100%. Numbers are harder to deal with, but working on those now

Ashaman88
03-30-2013, 12:10 PM
amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha

Justin
03-30-2013, 12:15 PM
amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha

Omggg amazing Asha!

Olly
03-30-2013, 02:53 PM
amaaagaaah

Found a box, solving...
Question is:
Which shape has number 0
Length of Full White ATPA: 18
Length of Shape: 7239
Length of OutterBox: 873
We think the shape is: Circle
Length of Brown Shape: 165
Length of White TPA in Brown: 276
We think the number is: 2
Length of Full White ATPA: 18
Length of Shape: 7170
Length of OutterBox: 878
We think the shape is: Circle
Length of Brown Shape: 161
Length of White TPA in Brown: 175
We think the number is: 8
Length of Full White ATPA: 25
Length of Shape: 6973
Length of OutterBox: 867
We think the shape is: Circle
Length of Brown Shape: 171
Length of White TPA in Brown: 174
We think the number is: 1
Length of Full White ATPA: 18
Length of Shape: 7190
Length of OutterBox: 1298
We think the shape is: Circle
Length of Brown Shape: 160
Length of White TPA in Brown: 220
We think the number is: 0
Answer is Circle
******** SOLVED BOX RANDOM ********


still needs a lot of work, but at least it solve it once haha

How much of the plugin did you copy? im pretty sure it did some crazy stuff like convert 3d to 2d.

Ashaman88
03-30-2013, 03:13 PM
How much of the plugin did you copy? im pretty sure it did some crazy stuff like convert 3d to 2d.

None of it...the plugin wouldn't detect anything when I tried to use it :/ And the maths were too intense so I decided to do it my own way :P

Olly
03-30-2013, 06:05 PM
None of it...the plugin wouldn't detect anything when I tried to use it :/ And the maths were too intense so I decided to do it my own way :P

Gets the shape fine for me, not the number but that might be because im getting the shape from a youtube video.

program new;


const
W = 133;
H = 97;
var
a, c: array[0..W] of array [0..H] of Integer;
b: array[0..W] of array [0..H] of Boolean;
xs, ys, xe, ye: integer;
area: integer;
color, newcolor: integer;
dx: TIntegerArray;
dy: TIntegerArray;


procedure dfs1(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 7 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs1(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

procedure dfs(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

function GoodColor(col: integer): boolean;
begin
if ((col > 12000000) and (col < 13000000)) or ((col > 16000000) and (col < 17000000)) then
result := true
else
result := false;
end;

function Simplify: boolean;
var
i, j: integer;
x, y: integer;
max, col: integer;
begin
max := 0;
area := 0;
c := a;
for i := 0 to W do
for j := 0 to H do begin
if (not b[i][j]) and GoodColor(a[i][j]) then begin
area := 0;
color := a[i][j];
newcolor := color;
dfs(i, j);
end;
if (area > max) then begin
max := area;
col := color;
x := i;
y := j;
end;
end;

result := false;
if max < 40 then exit;
result := true;

// FillChar(b, SizeOf(b), 0);
color := a[x][y];
newcolor := clRed;
dfs(x, y);

newcolor := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
color := a[i][j];
dfs(i, j);
end;
color := 0;

// FillChar(b, SizeOf(b), 0);
dfs(0, 0);
area := max;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if a[i][j] = 0 then
inc(area);
a[i][j] := clred;
if c[i][j] <> col then
c[i][j] := clred
else
c[i][j] := 0;
end
else
c[i][j] := 0;

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 1); decex(ys, 1); incex(xe, 1); incex(ye, 1);
end;

function GetShape: string;
var
i, j, ii, jj, d: integer;
more, less: integer;
max, min: integer;
d1, d2: extended;
x, y: integer;
vertexes: integer;
begin
// FillChar(b, SizeOf(b), 0);

//Getting the center of the shape
x := 0;
y := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
x := x + i;
y := y + j;
end;

x := x div area;
y := y div area;

a[x][y] := clGreen;

//Painting the border in white
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = 0 then
a[i][j] := clwhite;

d := 30;
max := 0;
min := 1000000;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
//For each point of the border, checking how many points of the border
//in a circle with radius d are closer to center and how much are
//further
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj]=clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more);
end;
if more - less > max then
max := more - less;
if more - less < min then
min := more - less;
end;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj] = clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more)
end;
if more - less < -10 then
a[i][j] := clpurple;
end;

// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clpurple then
for d := 0 to 7 do
b[i + dx[d]][j + dy[d]] := true;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

if max > 80 then begin
result := 'Star';
exit;
end;
if min > -20 then begin
result := 'Circle';
exit;
end;

//Counting how much vertexes we have...
// fillchar(b, sizeof(b), 0);
color := clpurple;
newcolor := clpurple;
vertexes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 36 then
inc(vertexes);
end;

case vertexes of
3: result := 'Triangle';
4: result := 'Square';
5: result := 'Pentagon'
else
result := 'Circle';
end;
end;

procedure count(var inside, outside: integer; x1, y1, x2, y2: integer);
var
x, y, dx, dy, d, d1: extended;
begin
inside := 0;
outside := 0;
// fillchar(b, sizeof(b), 0);
d := sqrt(sqr(x1 - x2) + sqr(y1 - y2));
dx := (x2 - x1)/d;
dy := (y2 - y1)/d;
x := x1;
y := y1;
x2 := round(x);
y2 := round(y);
repeat
if not b[x2][y2] then begin
b[x2][y2] := true;
if a[x2][y2] = 0 then
inc(outside)
else
inc(inside);
end;
x := x + dx;
y := y + dy;
// a[x2, y2] := clwhite;
x2 := round(x);
y2 := round(y);
d1 := sqrt(sqr(x - x1) + sqr(y - y1));
until d1 > d;
end;

procedure dfs2(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][y] := True;
exit;
end;
inc(area);
b[x][ y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if ((a[x + dx[d]][y + dy[d]] = color) or (a[x + dx[d]][y + dy[d]] = clwhite)) and (not b[x + dx[d]][y + dy[d]]) then
dfs2(x + dx[d], y + dy[d], xs, ys, dist);
end;

procedure dfs3(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][ y] := True;
exit;
end;
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if not b[x + dx[d]][ y + dy[d]] then
dfs3(x + dx[d], y + dy[d], xs, ys, dist);
end;

function GetNumber: integer;
var
i, j, parts, d, holes: integer;
i1, j1: integer;
x, y, xp, yp, xh, yh: integer;
inside, outside: integer;
max: extended;
_1or7: boolean;
begin
a := c;
// fillchar(b, sizeof(b), 0);
color := clred;
newcolor := clred;
parts := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clred) and (not b[i][j]) then begin
area := 0;
dfs(i, j);
if area < 4 then
c[i][j] := 1
else begin
if area > 40 then begin
x := i;
y := j;
end
else begin
xp := i;
yp := j;
end;
inc(parts);
end;
end;

if parts = 0 then begin
result := -1;
exit;
end;
//fillchar(b, sizeof(b), 0);

newcolor := 0;
for i := xs to xe do
for j := ys to ye do
if c[i][j] = 1 then
dfs(i, j);

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if a[i][j] = clred then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 3); decex(ys, 3); incex(xe, 3); incex(ye, 3);

// fillchar(b,sizeof(b), 0);
newcolor := 0;

if parts > 1 then begin
area := 0;
dfs(xp, yp);
xp := 0; yp := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xp, i);
incex(yp, j);
b[i][j] := false;
end;
xp := xp div area;
yp := yp div area;
a[xp][yp] := clgreen;
end;

// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
c[i][j] := clred;
for d := 0 to 3 do
c[i + dx[d]][j + dy[d]] := clred;
end;
a := c;
// fillchar(c, sizeof(c), 0);
if parts > 1 then
a[xp][ yp] := clgreen;
color := 0;
newcolor := 0;
dfs(0, 0);
holes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = 0) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 1 then begin
inc(holes);
xh := i;
yh := j;
end
else
c[i][j] := 1;
end;

result := -1;

if holes >= 2 then begin
result := 8;
exit;
end;

//0, 4, 6 or 9
if holes = 1 then begin
// fillchar(b, sizeof(b), 0);
area := 0;
dfs1(xh, yh);
xh := 0; yh := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xh, i);
incex(yh, j);
b[i][j] := false;
end;
xh := xh div area;
yh := yh div area;
a[xh][yh] := clgreen;

if parts > 1 then begin //6 or 9
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
if max < sqrt(sqr(xp - i) + sqr(yp - j)) then
max := sqrt(sqr(xp - i) + sqr(yp - j));
if sqrt(sqr(xh - xp) + sqr(yh - yp)) < max/2 then
result := 6
else
result := 9;
exit;
end;

//now 0 or 4
if area > 10 then
result := 0
else
result := 4;
exit;
end;
if parts > 1 then begin
result := 9;
exit;
end;
//here goes 1, 2, 3, 5, 7
//separating 1 and 7 from other numbers
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for i1 := xs to xe do
for j1 := ys to ye do
if a[i1][j1] = clred then
if sqrt(sqr(i1 - i) + sqr(j1 - j)) > max then begin
max := sqrt(sqr(i1 - i) + sqr(j1 - j));
x := i;
y := j;
xp := i1;
yp := j1;
end;
count(inside, outside, x, y, xp, yp);
if outside = 0 then
_1or7 := true
else
_1or7 := false;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = 0 then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = clred then begin
a[i][j] := clwhite;
break;
end;

d := 10;
color := 0;
// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
for i1 := i - d - 1 to i + d + 1 do
for j1 := j - d - 1 to j + d + 1 do
b[i][j] := false;
dfs2(i, j, i, j, d);
area := 0;
dfs3(i, j, i, j, d);
if area < 100 then
c[i][j] := clpurple
end;
// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if c[i][j] = clpurple then begin
a[i][j] := clpurple;
for d := 0 to 7 do
b[i + dx[d]][ j + dy[d]] := true;
end;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

// fillchar(b, sizeof(b), 0);
parts := 0;
outside := 0;

color := clpurple;
newcolor := clpurple;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
inc(outside);
if area > 15 then
inc(parts);
end;

if _1or7 then
if parts <= 2 then
result := 1
else
result := 7
else
if outside >= 5 then
result := 5
else if parts = 3 then
result := 2
else if parts = 2 then
result := 3;
{ result := parts + 1000*outside;}
end;

procedure initVars();
begin
setLength(dx, 7);

dx := [0, -1, 0, 1, -1, 1, 1, -1];

setLength(dy, 7);
dy := [-1, 0, 1, 0, 1, -1, 1, -1];
end;

procedure ProcessPicture(var BMP:TMufasaBitmap; var shape: string; var number: Integer; debug: Integer);
var
i, j : Integer;

begin
initVars;
for i := 0 to W do
for j := 0 to H do
a[i][j] := BMP.FastGetPixel(i,j);


//First, lets find the largest area of one color, thats close to white
//this should be our shape to recognize
//we will also fill the spaces inside the shape
if not Simplify then begin
shape := 'unknown';
number := -1;
exit;
end;
//Now, recognizing the shape :)
shape := GetShape;

if (debug = 1) or (debug = 3) then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);

number := GetNumber;

if debug = 2 then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);
if debug = 3 then
for i := 0 to W do
for j := 0 to H do
if a[i][ j] <> 0 then
BMP.FastSetPixel(i,j,not a[i][j]);
end;


function getBox: TMufasaBitmap;
begin
// result := GetMufasaBitmap(BitmapFromString(104, 101, 'meJzVvYd/W1We9/9v/J6d2em7zz7P7sxO2Z0GpLrKvduqltV7vfeq9y7ZlmuchPSQQoB AgFADIQUIIQmQSiohxXGX1Zt9n++5SowhyewwM78pr3xeyrUkW 7pvfes55x79dE3Dz9bW/cvvy//Pyuonm5m/re/8RUXTT9fU/WdZw0/X1v3bU1X/+6nK7/3Xin99suJfn6r6VV3Hr5qZ36lt/f/q2/+pseN/NdK/29z1zy3074BaGf/cxvpeB/v7lH7Yyfp+J+ufOzk/6Oz+AZ37QybvR6yef2Hxf8JE+g1dWE4XNNOFHXQ+nSEAdS5TO/MR6qSe1kXnMx5SV5fwkWI8UAd6IWEbHd3Z0SVuoYsr6NJfMKU/YUv/lS39EUvyfZb4hyzxj7+un7Ak8IQfc2Q/5kh/yJFRkv6AfV//+kTVT35X8cvyxrKOnqeaWT8rq//P8ob/qm4FdP93de0vqlv+fU3d93+z+se/L/+3lbSfVTT+rKr5uzUt36lr+059+3fqu77b2PHPjZ3/1Nj5naau77Z0fq+N/v12BuhH7YwftDO+18EEej/s4v6Y0fNDJheIAcDvM3m/pAvW0PntXYjDw+p4jB755D9GpV9vuy8hcCtjSH/Kok4fuLGl32dLgN43RT0E3H7ULfsBVw76fvd9dHD7L7+r+Lena E81MlY0MQDXr6qaf17R+O+ran7827W/pLX+qqYNcJX0kycr//eK6p9WNn2H1vxPta3/VA/oOr/X0AH6TkMHoAPb+25r1z+3M77bRv9xG+tHbawftLO/T5ncj+jcHzC6gd4PGD3fY/T8opO/upP398PtB9TtI/UwN9BPepT1bLyOhYFqWHgNS1/NRoIDGktXUofEQZd76zgGGhOromsquyQVnYKVzZyfrW3+j1UNv 65jNgoxkdEnt/g1jqDWGSpJbQ+obH61JaAjfAqVTSIziSQGscQkliIJpSa+3CLS uhSGgMYSUdsiOmefxhZRmAMyo0+Ce/hae6dQ18KVN3XL6pmi6g5BZTNvTR1nVQ1rTW03Uk0PaCWN+ySt 53fVj9AToCruUzX8JqZOpAuoTb0KQ0iJ++U6u0CB8+WYQKoXSf UyGY7hDoM1qHb0Cs2Bla3c/yxvX9EhXs1Qg9bS1VV0dXVJXfcPWgVmpWWwhgGUABpWzcaBWAW lr9AxtbXoGKvs0pZ3qFa3Slc0dv+6qu1naxp+W8ts5OtYOpfY1 quCs3b16lxhEEADgDKTS4zbhVqrWGEWSQiBCBeKQUax1CyVW2U qu1TnVplCAE1r7dU6egGdyhoW6p09KitHYWJI8OZuRQNLDNBAt V2i6lZ+eWPP2jrO2lru2jru2lre6vvceI/lVt3z+ypuRbOkS2CSE0EQcFMbPDKdBdABN6FEJxRpFUoDbvYDN 7V3kKmx/XRt66/rOavp97lVPuBGo9BVdippDI0IC9cwtNUMPdjSw9y+sjomVtGpe apB/KsK5q/K21Y2sVtEegHhk1pDMltYAa/o6NM5IyVuFDQ3V21kK3CODOeJcb4QA1HojDK5Vav3YsagzhLR2 fr09n69rR+gyY1+gc5BF2MdAm0bT93CVTWy5QgaoGOJ6xji2g5 RVYsA0JXV80rckL3V9PxhbmBy8JyaDrlA5ZThAQXu0xq9aoNTq DQAN4FYy+erJFK9lnBj3iGZo1flGXiymfd/17Y+1SH/BjdQLUtX1iYDegyJA7BU0YGMvpqFV7F0FSC2rpKJrAtU2aWBR1 e3yH9Zxvw/T7T+qozO17vlFmTVSmefyt6rskcU1rDC4lcanBKNgSfTdotVS+ JKNTy5TqTCZXqz2uBSm9xqeNsmr9YSwmx9IKCnNgbFOidThHXw 1G1cVSdPA9qw6+X3Pr586MQFe3i9FHOL9c4GhqSskf3r1Q0raf TVtczVtew1tZyVNd1P0rgPQ/s9jfdEDYgPWlErWNMobOFgAk1AQcDL+bUmtwKziRQE2BtAk8kJ ucqMW8N6WwSzRZhCwy9WNK5pFNV0qUC1dE0dA6mmSw3HrT3GBp a+jqGVWaK1TB2QhBCH6DHglqhhEmBgYIdl7crfVHN/vob++1pBA9fE1QbAreCP4/ZevSOss4cggskIl0htESoJQMSVqL/BTa43qwx2jdGpM3s0Zq/G7NeYfMBNj/4O4qYzR3rHdnn6N4EAURtX2c5VAbF7CXImS96JLV4dT12fyPRv 2BNZ94zS6C9v7F5Vw/jjuT2F0PGqWmUcmUtl7AVuOpMH0Mk0JrEMk8owmRyXyA1ynROd FMRYIkTrkPz3Wnp5i7RErCSABgJ6lW0QcrWdEms9W18HDEvc6B D8scpO3ZP1op+vYfzHyo5flrEauEY+3q+wr1NYh8GtCEcfCKAp TV6IYOCMbLG+W6wFaCCOSMkWKcHGgJgcs8CtEreqjQ6d2YvZg7 gjYnT1mdwDztCGVw+dPnbq2vunr0+kyMQiCaBcvRtbOIpWjuLA oZOzOXIuT05nyKk0ugWGcHBlPPnq4U/2v/lRZHTPH8/tqZqe1bW8Nq5BjofVJmRvmNWnxuwypQHyAqATSXCB3KSDTxMyl DUq0HqeRJGTW0tXg2kt2RuoiYOX7mnp0TeyFPUsVR0DnqOq7JQ/Udv922rOL9d0rm4Sd0rsIqJXZh5QWIdAGscwmIfeFNQa/Qq9Q6g2c6U4S6RlCzRcsb5HisSTYWB7ShxAeRAriw+zepyhgcE NOwbW7/jg9OXrd+a/uJscn1kYnyNnM0gTSfJenLw1s+AIb2xhK5vYSnNg7MpEejpPTm aQJih6kylyvogOrt5Nc6SWErcV1Ak+Ud29XHAPsCppFQqD3ato nLoOuVTrh7AAIQ6zBNSEW66ximXgrRhPhPdICDA5whrBrP24Y5 Aptv736vaKFtFyk2vtMaisw1JDfzvfXMOQ1nRBzpLUdklW1XH+ u6z9l6tbfl/Z1cnTSTEv5ogSrkHcMYA7ByCGY9Y+Fe6Rq20iuYkvM/Kk8HJYt1jHFeM8qUGgMkv1DgXuAqmMXp014AiNvP7uyf2vvHPu 8q3peHEuuTg5l5vPkAskmV4gY2mkGVCKHI+DS5LOvs0ArYGjFO G+T27MTebJe1mk8Qx5L4U0QWHc8/LRug4pcKPUXd7Q08XH1+88aHSPrq3rrmjkldVxympBrJLWQvVC Y1U29LSyVAosAMEBooQc80o0Ho7IxODh3QIDV2yQKq24OYhbe+ FROPdVtczfrm2r61IscetR+13R3bbIdqDXzFG0cYS0du5v1jb+/Inq8kY21AAQRghnr8nTb/JErb5BszdKOCNai5/6jOxiqRGlSBHGE+sFUlwkNwBGscoq0QI0j9LgVRl8IL01PLble eAznyZTeTKZI5MZci6ej6cW4DhdIONZxG0yTl66Ob9+xyu24Hq W1ATQ6jhKHub5+PrMvTx5F0JchrxDQZvOIW5woDQGIbGurmGD1 tayK+rZQxv33Z5e+OJe7shHV7Y/+yZfYW3uFFXWMyvqGEi1rPJaZkUts7KOLVQ6NeZejaUPyhKJzt 8ttbPFFo7IyBVBhjWo9W5IEBDA9fbejh71f69qXF3fs5Qa1LYR e+9Oa3h7p9BS1c5/oqLulytpq2q7GEK9wujXu/oxZx9AA1xmT5RwIGIyzCHW2qQaq1RlBW48oZ4n0AM3kcII1q7S uxR6lxxzK4n70EAKwju4fvfk/AJwm4rlJ2O5+VQxUyBzRTKRJedT5MefffnyGx8JVfZ2trKZpQC VjK2WrahmSE2Rp5979+N3Prl2M0l+EVsEXFM5pEt3Uj0K69p6y A4syA5gWp1cDZC/N09OJ8mpJDkxT0IEuH4n0Te8w+IaaGNKq+rZgG5NVWcZjdHF1U MBDGWwROeT6AIghE5o7Bbi4K0ShQWiEERvIKAw+NbWs39X3lXd oYRAB/TYcrc5uBWK3hYu8fMVNWvrOxgCJVQIuKtPawtijj6De8DgicKP aotfrLf3KI1sKQbiynBwUrEMylcjtABSlUWpd2hwlxb3ah7gWp JQZYWIcfTkBaA0myBjKTKTJ+OA6/TldRuf9QY3CGRmOlfTwpQ3M2RNcPuAG40pq+gUV3SI1rbz2kSY pW+ja3DLxr0Hr0/nxlPkht2vQQwBfyxxozWLRjY9f+VW8sa9LOCaTiF6YMMzCTKeI 6cT5JETFw8dPWu0R4Heququuk4pW2aVG8NizC/HQ5TCXImFg7hhfAmhxNzADXf2g+gC7NdrOlY3CCEjQDpo4mCAj il1QinSrbFBIaGx+fWOCObs1VhDKmtEaQ4qCbdEZ+WrDD1ywIX BbY8CFyqMEATkaqdM5VBoXGBmGswNtg2Sax0SncMRXBcZ2XHqw u1rd5N9Y89Aknr5jQ+nYsXLN6ZOfnJ1155XzdagQKxncNXtfF0 TD2vk6uo5mhq2uqRqjrqCo17LVq1mytfQZWsY0jJKFUxVbbeJT 4wylL01THN1u6GiWb+mTrWKJqpqFm3YefD0pSnILDenFiaT5HS anMuQ81kUH+Dzmp5fmAZTnCc/OX8LM0fAUBtZKoAmJYIKIowqOlM/cOsRGwEaCN4z1ColbhDlflPW+fsqdmWbHKFjapu7CVAjG9M6h1 T2frUzooE6FozT3sfHA3ydl6d2cOQWhtgAYslMbJkZgg8HukuV HYgptW4N5tMZfBrcI1PbMGNAZwps3/fGic++iOVIEET7K7fjA+ueCUU37973pss/IkNdqoXdreF0a7qFBrrI2MzH/0huZV2Ksk5deScBqujAqyhuq2qVK6oET1WyofkSatzrtr3y+e3 0BFR9GfQGHuZ25uzNVroUrLSiRdDBx6V6iCRhrbEPpNT7+Q+4Q WKFQK0Hk3P1Q7HaziP+4/eNq+oFtE6ogdX1TB0YG9RvKltU7eiH7lJi9IvNgR69h6Gws+S2 EiiARqe49ajsYtwLbbgS86p0HrXeo8X9eqghDT67Z3DDlufPnL 89mSBL0OIF8vp4auPOAwCznSnrYstbOoU9Qozbo6MzFVyeXii3 s6SWdrGpVUA087AGnr6Go6mky9d2SQHXKoYcuK1lyNcyZeUlMZ TlXfoSt8oOAuytupWoaNKVNyrWoNqMDaps4vXI7aHhXZ9dnZ2I k7HM17iNT+UDkQ31bYJVVdBusGvbxZAgVEQIM/Vi5j4tERJKzUvcemRGlTkIIQ4KCbE+AIXNf63prGpXPGgftMBN ggcw+yA8TaiBntrOkduYEjNbbGJLjGBd3TIzBGF4SIr5VaYIas MtIaXeDUEAZPcPjW3Zd+rcF3Np9D6BGBRjUynyo3M3ouuf4coI Fl/bLcJYPep2ugQa1W4+xuCoWVywNyNTRHQI8XYB1srTNfZo6lBYk 1d2oRHFcoYUWFUyZJVMSXVJDDm01VUd2sp2TUWburpdR2vVVjW rq5pkFY38snouqLyBC0kWetgWtnrbs2/OZcm5FDkZQ7o3u3jm/J3GdmFlA7eshgGVSXVzT7fYqIaP3hTG4aQMAbHcCvkUuEFNxZE QYo0dsirhiGrM0dZu4hdPta5uEJS8FaEDe8MCCq1XpLQJZDaex MKXWnvE5h6xiSs1ATFwcK0pIseDClRp90EtDdUFX2nU24Lb971 28twXX0wmZyHsZ1FAvhtfvDIe37LvIEsCzaaSIdKxxbpuIcbha xkcJYcH5bGOydOUROdp4DntPco2rqK1Ww63TLFuw479b77/6euU4MASGGpiiannqFq61U/R6BUtvOoWYX2XrKZdTGsVA6XKZn55IxDrBlH0esoATiOfp/YMbn718t2FW7Pk53eKZv/mskbRqjpueR27upld09bdzpJALQoFG2EJ6Yx+OBYqzD0UN1SOy k1UKdULpwwn3khX/basq6xRsGRyErldKLHwhEaeyAQSiM1CiRUYQnkA0DSof+xTGiB +hlUGKHsikGo373vlxPnrUxkySZLxRXImT0KjNJ5YPHPlLpwpX 2PqFChBXUIVQ6AGPkCsBA3EEmBMAcbga7t4yg6ujClSE66wL7r +0AefXLg5eXMqOZlcKGkqtQg/Xr0bu3p3DmTy9hndvWZvn0Rnh4q6iSFqootrWnsqm3nADQoGpD oO5Fm4XVnDeaKa82QNv4FjWLfr3af3HVvbInuyVrCijlvVxOGI 1IMbdtp8UYXWpjd6DdYgxGc14ZVq7FDMl7iBZBoHZg7rLX0ac5 9Y64HE+lQ1m/JWyK0aINYjMIDgAKCJ5XaF2q3Q+ZSEHyhBj6A196qMYUjWIPjx 0IcXbs1lARrgmi2gWyhHZ3LkB2evYq4wR47RReouoYIuUtApbi COUEtJzwQ/5WH0HuCm50oNQ5v27nzhzYs3pyGJQEgs+TgEyankfUFynEgsTs QX78UX7sWLX06nYnnynQ/P7n/j+PodL4SGtoFD1XWKK5t71tSxoNkvVSbQRKyqRd0WdKlfU3XPU 7XdgPqlN44ki+Rnn9/qYIqhiMJMPgjUwA0iD0InNUJsgXcLByrch07fFMGdQ9Vt0l+ua ClrloDJod6BggYCaGB7Kp0PM4QN5j7MEiGsfZTvhxV4QKqH6jo A3LY//9bl8RiAml9A3O4lC+du3tv+wmtQ7LGleJdA3SXQgKUBPYZIC4U 0A2xMqOfAJyg1MHjQvVp6R/Ycev/CsdOXgRJY7ESiCKYFbTvUD3DwGEFpsQgpMkOSWRIVZqCJWPHEm WuDG/Zx5ZbqVv7qWuYqGhPQgVbUcKBF/SY3Gu/JGg4k/alEcXwOir3s0NhOmdoCJkeYIUEEdIBO6xDKjCiFQVUvwlDxgAW 0ln6Daxgc/zdroSbhgMmBq3KVNig5hHq31BCQm0IKSmpzmLD2GswRzBiE4Kn U+SAvCNSuHqVFoLFsff6Vz+9CXUnenE0dPnWud+O2bgUOlFhin CnCusAHBRQ0EdbJ15bG0zr5mq4ede/oztffPXV7MjubImdRlbUYg2oBUnAWHc+mF2ZSxUcKHpqFJ+cWE 0UytYCeH4fGDY7BShPpT8+dH143xhMpahvbK2raKmvby2s719b SocFcElCFANg/tmt8vghZbDq5MJ1cPHbiPJgc5a33awMQ1KICCQGBBeiJ5WYgCV 5scfZDBmnulPzsN9X17ZLadplI75ESfiCmNIdBS9z0ppCOCECx oYI6zRh57rUTW559W27wcmSEzuF75sAbF25NbN9/kPDAb7lEOhtXYWQIgRsBiRjSMUNogB+hsG/nqBg8na9/07GPz0/PFxJgqFAhAIRMcT5biOeKifwC3MJxLJOfS+ceqXgmn8wWMrl8J l/I5heyhUJJ8GNJqWzuwuUb257ZV13f+UhuoLIGTjND8vH5m1AVw wc3GS/emUjb3P3QKoKllaChihTziBXmboEOuEGGhb4S7jHZek2OAYnK/sTa9l+vbAJuwEqFZkZ6qTbhPjc08m9A0KC4Veq9zx44Fi+SX0w WN+05KDd4ZAa7zuG3BKNADI5VVrfS5OOrrBypha90ClTObqmVC dwEBghoEo1rbPN+qFVm4kXo66GpB82n8rFkJpZKz6cz8Uw2kQU y2flMBn58pJKZbDqXzxdy+UK+pFw+l8tnQQgm/FcoJLMLsWTu7KUvxzbthnAK3AAUinvL0MGd67Y9dy+WA2735nJ Q2p2/fNcCXRLu0REImt7gh54RbAyqph6q7RLJTQrK5Ay2fvDBVqbqP3 9DW0XjADG1FekhbqgXAIWjmy9cnQHXgEB95XYsMLgZmjIJbhdo zTyVkac2CrVmkdYBBY9E44FIKFa7eXILR2yAlKQiXCcgjsWKE7 NZaE4zucVUZiGezE/PJueTmQQFBATWUjp4nNAz05lsLkvhWtJX3JDJwR/PLaapUZdzl28NP727naNYTQPDW8athtnQKdz74ttQbUJ4nEuSB ZJ87a0PlTqnlvACNNT4ED6oScQqK8qq1CAJtJZgctCjQcBXYP5 VVYx//+9qDeRZSmpz732ZejWmAG504wY7aOvOfXDWc8lFKL/h9uZE8vjpywqjF5p9rsLAU5n4ags0JhK9WYHZdWYvmkcg3IQ9t P/g4bOff5HILCSyBRA4WjoLDlVIZfJw+4AYgrZM2cfo/qP3KeXyYH7Lf5G6swhKU6+SyBQhJly4NuHv31hW0/WVz9YwVlZ3wLsdjy1CgIauP5EhoXe2uZAPQvaEIAa1h9oYlOg9 UPazhGg8s2RyWmMQcqXW1NvKUv3st3Vf4VomxM3kwg0Wq9117s LnYP9ziVwsmY9nyWu3Y9H1uyWYiys38VQWgdom1DpkmFtrckrV BoXO7PD1PrPv5eu3p+H5mcIiOsFc5r6+huj/F6VzpYNCPL0In/LZz291i3Sra7qoKQkqQdA6q1u6IUNNzqMoF4NMnSSfe/FdJk+nIaDLRhMf4G4yQ6BHbYd2CawOvFWqtEC80hlDhH1AiQch vv0BboTR8uKBgzNzcSAA6OB2Nlk8+M5H8KhY7+RTxOBASg27qY 0OmcY4OLbl2EefTcaysTQKYglkYLm/JrcHApNbpBIQeWsyXV5/39hK3ODHJobk/Y8vo/awhC5BbtvzOl9mBmdEU2zmsNwYhHQJFQ5qV4UYFCdyrRtMDrdF jc5hodrzB7h5/aFLl69BIAJji0P6S+VPnb1C2ELIKzGXBKpEHOSRU2OVeot7664 XxmeS89mFRG4xnoVoQ6bzC8h3cl+dzjL9lbgBHJneBd3EShp9i RuthWtxD0xQY6oIXZKUa130bo1S79FQ5YTSHJQZUbIrcYM0IdU 4wd40RjQBoTGhduBhYeaQweI5dPjoxNRsLJGeS+YgW8XThS3PP K81esEr5ZhbgXtKgmODPfzphS9mEoXZeAaN6C4gpQuADqDll3H 7GwgC7OnPLqlxR0VteyWlCiRU5o1s2DU+nU0XyFdef7+Dpaxr4 XPFBjX0DkbolUIqcwD8CLoG8FM0ey4zS9VO6DrBVXXWwcdxC0S Gb92dmE+kkVDZkD/03gdGu09v9qMx8AfQ4KO0eIfefO9UnkRVGQRkiP+p/AJYGhRd07HE35DYEjfQx59d6WSLKh+gK4kvwaD0/XI8YbRGKuvQWDpEOTllFVBZqcx+tcmHOi8x4tYjNgrkFo0ROtb +P8DtwKuH5hOZeBJqgBxwO3nmvN0DvYMVSgulwauAloTwAjfon l47fPruTA4lXPCLVB6EuBUWkzmK4dIp3I9yKUp/vVhX4gbp1RseWV3ZVE5rXTK86nq6VGWGbquxjVeBJm5Y5TXMHp kRTk1GuFRmH5olN/gE1LgcmCJPYpLpvJBSS9zA9qDrLxGD4xK3i9fuziXys/E83E7NZ/fuf01D2DS4A2oM4KZEXbBTrrNHR7femUzOp4pUNCPBnWfimelY CjQ1l4Q3nM4uQM2G9NcIa4/lBuHu86u3B0c2ldFa19a0ltW2ldV2ltfSK+pYT6xuKq9l0hq59 W28jdtfhE4wMrpNgczDbXBEMEtIrnYKpSawN0DHl1sVUK7YohS 0fhDg0lMTi6BDR8/NJqEyXPxyIjMVJ8e2PA+/DuTVVAooWRow9AUHxscns9ABZRCT9IOYDx4ah+YonUOV2/23vbBUyJX0V0T3VTKC9yBU4atoLatrWtdAXVfDWl3FqW2R8uVO IHbmwpfT1GzOlr0HJHqrDLMRzj7c3g9tpljh6JYYqdEJXKS2QA AES0M2BrWuEYq6MEhtCG7e9dqzLx/94JMvoEe4difl69uiNgSgGlQZAiVuEAF0hO25F14hi4UF1PRkM 8veKuL2QH8H3JbZXrawc//B6jb2ippWlF5pnFVV/PJ6yZZdh4AYGmGAPmI+//4nFzGHX6gx4I4wjmbbowoswJWaOBKsW6rrlukBXQmaigipDZBk Q8AN7E0JnT7mNXuGI8PPeHs3E44oQAN0KiJQmuOT6Bxbd+yDdo ks5IFb4R+H251YZuvzB9c2dN3nVi2oaJDu2f9+Mo+GWRIFEhLc uRt3/QNjwE1r8aP1P9ao1hThK6zdEowj0XEkWrA6FNZMEYCGuEG1bEG D6qOb92/YfsATeRroKXE/VNE6YxA6fc0Dbnpr+MSpc7kCCdAWctl/IG4zmcUv57JivRWVwRS3tbUif98zYALTyYWpeDFVJL+cSQ5u2s mVaSHKac3hUiiT672AC9kbEq6nymMV1csjPzWHN+54BSwWyN+d Iz8488Wu/e9S/hsCp0bQjB74FN46/gnki0xuAaA9zC2ZyS/p75DbVIYc3LwbraOr6QZuCB2Ne+HqVGaBnI7nodNJFsnDH55hC xVSjRU1X8YwhDg14YdUKNGYBAqcJ9OXuJUE0ADRhh0vz2WR0U7 Mk1duJ8FVwX/BFEuWpjZ6naHRicRiMktCL/APyu3T6+OtHFXJ3krcPvr0RqpAotI9WZhNL3702efdYhVfjkE2 RO4GZgMlBO6QaIwChb5HptUt46ajurNNzxycTKA1QqDrdzP2wB hwo5IC4gah8sU3j89myH9obrdiuZGtLy7n9vSOl+5MxcHeoOi6 M5P8cnLe4gk3dHB1pkCJGxyoDU6J1ihQYsBtyd7AT3WWkNU3fP LczVgOzevNpMmbE3nIDiVuaKWiJUTYQ2cu3gRrzOZK3KjRxK9z +0bq/5O5JR5S8s9r2eB156DCzC5MQiV//iZq9qt5oLU0jt4UvDudmkkUZ5PF63dnZlLFnc+/Ul7XAbggsEN415uBgFeqNQuVRI9Ud7/ipcbc0Iq18OCt2dRsFk0tAbeBDXu05iA8hFo2UwCzBOz+6JWb9 8DY8jkyl13M5YqU8pllSi/TN972kjJf/5WSUtksmGg6VyRJ8u7UzKEPTrz5/odvHP/g9WPvnzx/kRpXL/36V38z8yjlvv66XymXmc9l5vJwgskvp2I9Cnx1LXtVDWttDVOp d1/5cnYOLcZbHJ/NTicLbx872coUtDNEcrUNnBQqWKUxKNO55Toni6/9Oje/IxydzS1OpxdKs0hj25/XmHyo1TXd57Zx2x5o3rN5CholasDwERAeoHg0t2Q+v6RENlsaM E/lC7F4Kl8kv7h1NzQ43NrNa+juaeLyWnv4Gov99SPH5nKFedT/FpbGCr4tt0Q+OV+Iz+fj0+n0My++WtncvaYejZ/XtHBefP3o+Gx+LgOJdXEqUbg9nTC5wi2dfJ4IEylRrauy9GGOQ RUOnZdxiRta+Gr1DWzaNpcnp9LU5G+C3LBjv9bsLxlbiduGrbt TyEP/YtziWTSzEEulp+fjuUUSjO3WnXsDQ6OMHkEzm1vZ0VXDYDWyu9 u4PCVhOvLx6VgG/VZ66SUeg+5/4FaIz+VyN6fn5Qbv6jrG6pquNbS2zbtemphfgBAE1e9MeuHuXH rDtn3NnfwutlyisoGxoUstLP1q3C9V2pdzwxzBM5evx4rgpMWJ RPHMpds2/xDYG6SDJW4fnDofT0NLtfDncoOuP1eElnY2nt3/8ht7nz/wwsuvX7p6E1x0/2vvtnOErayegae3bd77/JZ9+zfted4XHWTwRZGRsZlkJoHGdf9cbvFiMUOSm/YeXFVLh55rZUWzOzQKxOJUAQwVxXSyeO32LPhpS6cQ2RuUryZo DcJq3KfUupf7KWYLnfn8i/kiOQG5OEe+duSE3uZFFx2YPGoTWq/rDo9MzmXS1AzLn8RtSYVkhkxlSaA0PLZdJNVzeuRcvlKusx49+ dn6Hc/WtLPsgX4IznOp/Bw1xnLq9AWBUAnh+N7EfAZedEmZwrfgtkzw6cdT5JmzXza3C8q rO9ZUtrUzJGcv3k1kllYxIQkV5upGNourxi290IGqDWEo5DSY7 w9zU5mc3+AGZWEqh97wn88tmSZPfXJVJMXpTElHl7C1ndfGFPP VFroUa+Wrdr34xkxyMZEsllTiJhSpXn7l7b8It0yBLCyS17+Mu f0j1RDiqtrrm7nPHzg8nyKnYkXQoSOnQaGBLWU1XTWNbJHMAh4 KvRW62IcILOc2unXftfFZIDaZKt6YiIVHN6nNLgoayKezBr296 xI58s/nBh4KOXNyOrdh0146S9LJELG65XyRjivWNzJF9RwpERi6cHNyN k0mUwslxeZzgeAAjy/f8PRO6O8gwKYyxVRm4c+0t7kEefSDC2j8jdZVVcdQaB3Bvqfdg RGnb6i+hQPBjdbEqaxn0hpY7XSpXOvWmXsJcxgzhpZz2/PSu5AOZjIk3F68OaU0LEFD3PS20FtHT8XRNCWAWrivfGkaPfvt uEEdkic/O39TIje0dfIBHW703rwdu/zFpM7q6+DL9r99FF5oPg9wFkHpDFlYIDdt3tXeyYEK4PKVmxS0 vwy3ydkFHeGrrGFW0Oi1jd3VdcxyWvuaqmZQOa0VnLSykQ30Gt qFAqlVqfPpiJDeEMBK7RWlnc8dunY3OU0tCjp18RZaeG/yLsng7D1+6kISjO0bcAAaxW15abGk5RMxCBpEZlC2AEHyyPEz7 V08Jkdid0WuXL83PQeNBvnp5RvPvfrG1TuTs6lsaQEDUgZeZWH Ltl0sDl8sVT2//+UUPAp3PgbaY5UpLAk+jhK3mXny0HufVtVwKqqZtHouWF1ZdVt 5TXNFbQvUvVVgb8095cCzid/SJRcpXIBOjQeXuEGyMLmH1m3ZHx3b2z+2x9O7UWX0Lufmjz594 fo4uNh9UN/Qt+MGqY088v5pOluAG51Xrt9NQ21TQCPGYMzJfDaeTafz2XQuW xpdB4C5QvHK9ZunPz336dkLn52/lEymoE3JPj6f/pHcIAVki+TzL75HcWPv3H3oyPvnj3xw9siHp0DvfnjmrffPvfT O6douydo6Dq1ZwOohJCqPCltmb6awyhAQa5wGxwAco2kXwg3oV EZPidvul96eihcfx+2R0P4gt0XgxuwWafSWa1/cm4tDSYYyLNS0yRz8tWy2mAd0D7hls4XFNMomeSq4LaBFD9+K2 KO4JdLI3qbnyWDvphK3w0cvAclEloQoAZrLLE6mydC63avQ+jp WVSOvjaHmia0qvX+JGzT1gItwRF2hjdDdU9xcSoTuPrf9bxyPw 6nlIablHmFsVD32sP4At6MfnO5iCbgChcMTuXJjPJ5eQEkWaAO 3HPqzSxPW1EsU8/kF6OnAEEGZTPZbQ3sUN8ieF69O0tnKR3Kbz6HLwQLDe1egEYDu ynpBXZOsk4lLVX4tZFVTCNGDA2Now7aXQtGtgb4tQ+v3QkOh1H vgFrozrdG/aeeBmXiRCk3fwt6gLbqv3Ne4QQV4/P3TDCafzRFBdXHu/LV5MLksNQuWz8Jzlpw0hY7h+UVwTDj3dCab/tOgPcSQmjBaPHzkRGcXr7aui0brOnbsbDwBhRZZ+tDjWfKd9y/WdipW1CBu5bX86jpRfbNcKHUBqxI30AuvHJ9LoVUToA9P34CHl nN7++in82kyjvruvwC3bI58/8NP6AwegyUAbhcu3qC4LSxxWwYtSw0RUKMHyzrQkv58br39o5V VzTRaxyO57X/to1+vZqyq4a+tEZXXiCqqRdW1MjrbUBpcQguATeHnDhydpq7QA V28NqOiFr9RYANag/+Z596cSRQpP/3KPZf0MLE4pYe5UeELfoW8Oz4HpYXNEXC4Qus37ihxQ10YxfYh bl87678It2QaeuFpFkdYV9dZU9u5nBucJhRLX9ydU2D+FTTemj phWZ24olZUQRNX1Uga25T4/UE5NM03tGHP5ZvQ3JCgS9fn+oZ3ErY+rSFYmgF0h8bOXroNdch XcJaHsj+aG0KHuC2CySVS+anp+GwsNTOXjCdzaLIVIuEyaA/Q5b8x9PEX4JYuzqeKUDTS6rqqa+jVNUwajXHs+KfxJJoLLq2mA 26d3TowttW1wvI6CdhbWbWonCaubpSgJcHGAGb06wgvZgqc/OTqTHxxLomGc9858qnJ3qs3oDlrJebWm4JHPzz3FbdHQMsuV5z SMpLLHy0tV1soLVq7v3Tt/sE3h/IeObL3yLr6a23U/5QaUijmkGObDtAa+BU1PZW0nqpqDqT4WDIPxCBDQe/8xZ35NbXdT9F4K2r4K2n81TQeNT7MX1XdY7ZGAJfe6MdMPsISe P/k+dnEAvxBqKZOnL7q8o+o0bKZXjXuleucw+ufAW7pQuHbcHukH tuXPU6Pr3P+RG7zkDdzpJKIltUJy2sEFTR+RXX34Q8+hnobnBR S7d2JhNnRt7auh7rSnP9Edc+K6p6nqihVdxstJXsLYGjtVvDl1 4/dm8lBVVMgyTuT2dGNe9EVJbYIxDdwVYM1eOzDU0lUdfyjc8tDv fHpxXtife9KGm81QHuI272plFrvXl3TvaKWDyb3RBX3ySruU0i Im8WGGlWIcqhXNfg3b3/p9kQKuEFhMx1bhB8BJkBT4R6wOi3h3rnnxQRazYh6zIfQ/cNwgwpwcq6w89lDbIm3i2utrJNU0ITLuYGfvnfsdEuHEPy0xO3 3ld1PVnaXuK2gce2eqAmhC5UW8ONm/4enPofPAlw1kSGv3pzxR8YAF9xvtIXUmDM0MHZrYhb+eCnaJ5f 0N+OW/RO4pVK5G3fjY1tforWrqpqVFQ3itfXMVXXtb75/Jl5E1+lMJ8g9+9+qbu5ZBfGN8tMnIco98FM4cPoGLY5+whIqhT jgs3Pvy/dmszFkbwvnPr/TN7QFuJnsYXhUqXdgJs97H5yOZYpz6cJ8prg0UfUPxA16tmQyi 5ZD+9c1dmmBW3mjZG0DC7j1KInI6FZneNTmG2ALtWVoGT/3YW4gl3/I4uw3WMIQx0oJYte+1+5OZWJUzzsxm3/r8MclY9PgLqXODtzeOXZyNpUHaHFUpi5S+kfyU2jW5udTrx86w RRgDZ3aiiY5cCtvZG/c89LL736oMXtorZzKBkZFPZ3i9jV7Q6LxICS6fYMO1wC4KtrHw BxS476BsV0Xrk5Rq+5Rp/be+58hYzP7gRt1FZhnaGz7+Ewyll5MQG7Nk5QW/jG4IQ/NpzLFW/fiRudwF49o6oLyTEQX2AhH352ZdAxNKywc/vCsMzhS3cQqr2evrEF1COjr3Ph+76DbHTW7+nAI+5aQHBoES+T wic/R5a5zC/No4X0cSAJSqOK0aHMh6Lm8W/ccGJ9JJ3Lkn8rtseOc31a5x+hhaFk0joeGjmfnC08/e7ilx97YbW6iY60sQwdD9857ZxYXyUwGXTaCbCZNvvL2h0KVHe 3rUi0AaOCbT9K6S9xAfnfU645avVHcFVVbgmKdG7T3pSN3pvPJ ArpK/Yvx1L4Dh82uKEDTm4N6s19n8lk90U/O34D27U/1078FN3QnalJu3I7J7U9XdJkqO4hmBt7QoTPaRubmFkj4B5aQI eNJ1KFHhrc+UdYKJccTVbwnqMj2RHX3Unzzu/p9nqjNO2DwDGqsYSnmBW6YrQ/MDH53ap68eH16dNM+szMKXSpYHWYJADowuY1bn711LzafQhenU PN6f+/c4M50dpEkoZ6/3Mh3VnaZKzsJWrOyg2N+4eWPilCwFu9zS6bJYycvltV0rKzq/B+5mbxDhCuqNAalaAMc15ETFz/69MamnQcs7gGTsx9FP0sI3VqRyeHWoNMXhcQ6G8/E04Au/4/CLZVZfHb/W+VdWCXd3Mh1VNRLMdv667fywLOYJXMpMpkiP79yT4k5gdtqGv 1x3OyuiMvd5/b0ubz9UMvhtiBEMBXuAlxoKySdE8wsuu6Z3S+8Pbh+NwCEH8Fb gSFhC0H7cOqzq9RK8sXHcVuuv3l8g97z3LWpTgHRwFQ20XV1LS quwH7wneNgawtFspAhsyly/F68b2DTWlo7pNSyWhbEtz+Gm8kJiTVIeaLf6hkM9G9674MLtya yUAeevzoJAEtRrsRNb/Ru2vHcnSmUW//+uYEmZxNb977WyFLVMxQNnZrmTr1SF7k1FU/k0TKhfJrMJBY/PnWRyZaBsf3x3BzeAbO7z+CIQOSHbnTPC29/OZGZTVK7ScyTd2cKe/e/Y0JX/gZ11JoHsDezM3Tw7eNgb6l8IZXP/f1yy2STydSXd6e05iAYG6CraVW2Mw2Hj11PFMh0kcymEbd8hty 2/bnyqtbKenrVH+LGNTsigM7p6XP7otA7QGIFkwNuCr3LE173+Rf TaJFJkpyKL47P5W9NpnuHt+otKKXCLUGhA9pXb06hqQSE7qvG4 W/LrVTFpXP50loUKNFTBfL5Vw+1sNW1napGpq6+XU1Y19+ZQJsCT cYyaK5hfmHHjv2dLEltC9r2oaKRvaauxI1b4gZ1yFKfZXRGrK6 IzdPn9A8AKHdoFGoMoyMCropZfa8een98NjtLXZA+GS9MzBfOX 7tt9fWqDXa9xYu4QbIwBYfXP3P7XixRarse1XPdZ/VHjKs/Tt+KG8JFLXUDzeQK07nF8Sz5waWbwfV7GtlETQdWRyfauo3b9x 1Dy6Hj6JLkWJG8fCdh9A618zUNTHlZK391Y/eTNazfVNB/V8kGS1tZxy9rEFa1yJuYGFvigDrZ5IpYPH0O/wBAA9nB6lCCCOjMLoMzcPzU+dn04kyqOJ0sTCUKk4nM0Y8/dYb6VYQT4htuCqPhFHPwhZfeSufIBLpE6xE18F+fG4JWyIEmcg WAdvDUJa7R3Somqjp0lW1YWbOWrwrGqA27gNtkHG0xt+3AkSq6 hMaU17Dk5R2i1S28J+s4T9AAGgtuV9bzGxhatsQl1kXkhr4lbn b/gDMw7AqNwC2gI+wBjcmpNbu8vcPX7s6UNluYThYnE9mJeKZ/bJMSRzuYYcYQYY4YrOFQ77qTZy7+nXCD+yEszBfzicXi9dnYi0 c+rBeqKzmSapa8ulNX2Y6tbdZ08W1P7zo0n0HcJuLk2yevCA3+ snZhLVsB3ADg2jbByibe6kZ+RZukuVvPlDoEmoCciCoMAwpjdI mbzRd1+IegLwPBAWEPaoxO8EetyXXgrSNgaQ92pciDLt28C5zl GpsW94PJmWwRu7s33L/u74pbrJA9e+0KEQi1iRSru3gVLHE1U0mjY7ROQ0Wbntam5Egc2 3a/VuImJvzNaGs1bX23uo6jrGagPejKO8T1TE0rj2ArnEJ9SE70IW gUN4Oz3+QKG51hszsC1S8yueCIOzzsCPQTDuhVnWqjTWdxX7h+ B3remXRhJp2byWRms9m3j3+Mm72UvYUpb42Y7f0H3zw5HUNbMk ILFqdmb5cz/B+5/aH8+DV9NSvxyEwaT+agfb52OwbFUm2XrKJVXMnAqhiGSgZewVS VM2VrusRNPKyJizez9Dtf/GDb80eb2fomlr6JqSuptZtgimx8tV+kDUqwiIzoUxqjajO0VMN qy6DWMgDcAFpJFnf/fW6hYfsybhKNcXTzrstfTsSyC7OZ3GwmO5fLjc9l1j29C3ChxT nGUEkWx8DBN0/MJhYSub8Bt9JOGdCH3roz+eyLb0DN30IXdvDxBra2EkFD3KrZW pGtF9QpMTd0I1BtXANQggMIXyA4ZgitXIVHqA1KcSDWC9Hsgfp BKtOA1oL8dIkbVCAQ2agoN+QOD1p9YUCnMdnlmEWJW198/fC9+RRwA3tDJpdZvHjtrj/8tNHaC/a2hM5oixw+fmZyLgPcErlFqjJ5mFvuL8gtSxErFIrF4gIcz8zM bt2+W6Qg2pjirm55Bw9v4uAAbVWLek27OrztlWsJ8uJMsX/bgRUNvOo2eT1djdQFtxowvx6FR4r3Uoi+hgucFKQyD+rsowbXO sIRNbkgxAG9CHCzuftd/iF3YBC4uUIDFm8EnFRtcMl11kB0/dkrt2ZLrgpKLd4aT7z6xgm7e4hAOwKFlgR/ZNP2Fz46c+XuVCqJFloU4zm0NU26UFjSX4pbBrWcCxlqg9ZMgT x09IQ72NfFlXVxJFyRGsTga1s5mnqmVmaMvvD22WvTxckCeStB XrmXXbfzYHu3HuFiaJsY2s4eY7fEoQA4xqjKAOpXomMktalfY+ 7XWQcMrlGr/2lXaJPKCJY2YHQOQiNgdvTZHL0u74A3MOwNDfvCIwDQYAtojdC xeqAStnmHbk0lIauiBJFEi3lm4+Tho+fsrqFl3CIlOTzrtu187 egHl67dmp+Kow2RknkyWVhM5BeovX0KFE+kx8X/xzO8Dy2ZRcNlaL1xgUwUyVffOyMyeNsEWrpQw+IphGKVWKoWSF QCsdoVGJyM5ZJo80Z4A2ilfTyDipAN21/p7MGbGGqAI8fRdm1qE6IEgnvQJcyWkNEaATJ29wA0nnbfsDs05 o1s4ErthH3Q6Bw2OQfgUYst7HD3u32DnuAQcANZXX3Qkyoxr0K P0B08dGIqAdwWgdtsAqE7fOyc0dr3NW6GPswQpdSvM/aNbHrx2MfXIWfd300Lve3cErSHuT1yzJYiVqD0NW7zKfKl1z4a HNsXWb9PhAdquLp6PtYuwLgijUikUCjUKrXmyJGjd+6Ow+9mqY uL4a8lUsVkknzn2GkwGIHaRV1DGlmmMHU1bi9u6YV+yuHp8wYG/aFhD0T+ALr1hkZb2Tp4TombxdEP3KyOCJgcWJo3POKPjELzhVv DaK0IhjabhVbiJBh7cgE1X3OL7x2/YHcPY8bgw9xwQ5QwDuBmKKGjNt/YyObnTn529cupGCTlOJgHZXUlLXdeitj9bWrQYq0lUQMaWWr4c W4++em5i2c+O+/whOUae4/YzBUa6SJjp8hYx9MjbmjHD4zbLXQ43KfPfJJIJDMIfb40c5rP5 Scm40ePniasPvRNFnhIbUCg0DJ7SqWLcA2OAYt7AE7fFxoORkZ BvvC6EjoIZc1MNV+OTK7EDaBZ7MjknP4octUIYmvzDOnRBXFok ERj8Kzf9uylGxPA7b3j56zOQcinesMjuJVEWAbgXcl0Xpnehdv 8Tz/z7Mlzn89li3+A29K2SOllgvNOpTN37tx9+9A7+55/SaXBRFIFX6ziCvRsHs7i4ZA32/h4PSXgptZbNm3a8fHHZ+bn48jSwIxT6XQ6n8suTk3Nef39CqVR pbOCB6GtOwl0ge2DJUYRwtZncQ05A2O+0PpgeF0gPAIqcQMaAA 1a8jqWqo2vFxvQNtGEu49whQlnyOiOWHz9jvCwC+wtNAZOTVj7 1XgQpEEvEd6x9+3nX37f5R3DTb0AanTD3lNnL3989oIn3Gf3hZ WYSUPYcYtHbXDK9GhPGznhVRg9KoNHZXSbvX0bn3nho3PX78UL czl0dTa63DW3+A2hlS3Uti2xeOrGnek3j58NrNuDeUbpEnO7gC ipU0DQBQSTj0QXYHShrkOo6RRq5bj9xVfenp+LLxSK4ORgYNl0 FujH5zP9A6Mmo12PWQGsRm9T6R1yvVeNo7ljwgx1VJ/dM+j0gUWNgNyBEXDPQGQIBA4I3QHhjIAMrr46Jtqima2wauwR4 GZ09xpcYYMrYvb224ODgM4RWucMjFqcw+jaVTwA0hBBnSGMmaH 86NUboOjtPXfp7mwSxfl7c/NT85m9+1/pHdpgcYXQNlNGr8Ya1tkjaktAbfICN6XRpTK6NPAC67cfP3Ppg zMXQCfOnPuGToI+OXvqk7OvHHwD/pTe0auyReXm3i6JCezqcdwAWqdQEx7ZPBtLZdO5Yr5YhIoujdD FZmMvH3jdYHTq9BbgBsJwmw53aAk3YQmY7OEHtcR9TyyFMrA0f 3jQ7euzuiMmZFT3udUyFHUseStfJzV49Y4IcKPQRYyeXos/agsM2vzQdo3YvWOENaolQpTVBUrSYkiQNO9MZiFPzaWyeZLMLJ CxTPHarcnjH332zHMH4SVUpgBIYaQYmtGqfuAG9JQGp8KAWjnU zRltIA1hVeNmMFdksUgGHWbQYgaFzsRXWzlKR0ksuY0ps4LhMc Wmtm5tJ1fnCGx86e2PN+x6ma0wtHAVMsx+8fMb6WSmAJVwJjs/Gz9/9sLuZ/ZazG6t3qLVmTHCXtptjDA4zBZPIDjg8Q/4gkNgXXDrDQ7CjyBIB55A1OXrtbtCZnBDZ4hwRJCckRq6Ely1k aPhKCxKcxBH3joAgvM1+/qtgA64+UZcgfXg8npzWLMMXYnbjt1v3riViKVJNBmdXZhLFaFZ QCPAeTS09dHZGzueezM4uNUGPa8jokHf+lG6IMKthLKQcCgJW4 mbxkBBw63o2y6g0kZC9NR6k0xnFaktfJWVB1JaekAKM0dq4Mst hL3/9XfO3LiTnphHbebm3S+3d8sZPMVLr7wTm4e8mY8n8x98+Elv36 jJ4jEY3ZjBRZg8uMljsvmMJpfF6g2GBqMD64OhkSDEf4obEHP7 oiCXt9/mCVsQNNQXgCfqHWFqQ/IIXeZsF5lrmOo6plpMhNE3U7hG9c4h3NVr8vYhboEhaPNdwXUQ 5Qz2fkjZEEUpBUsAFTqfwzd64LWj0CZMxfLQZM1TpVppS8ZYBo 15TsSKr797cnjzbgXhUFPfZ6G3eHVmj4pwIm5GB4JGIFxSvU2M QqJDukzATa4xKzVGkEJtkKlwtd4cCA8dfONoIk0mUmjmbj6BdP HyXYzwSBQWscp64drU2c/vQbmFmQLL5CsNt9qcYcDiD0TB2ABXOLwuFFoXDI5C7QphH3wWZ EUdASJGOMPACqSxUXJEde4NrXxTdZe6qktFlzrk1iGNc0zrGMG cfeCqEIQAnSOAxkmgb0WTNWg3jBC1bwayPRTrjBHItrgpCCl7a Gznlp0vfHjqItqYC03WIG5oH84Eqnuv3Jn94NPLBw+fwB0hi6c XzB4irckVwm0+6OaUhEWKWSSYQ6R3CZGcS5LobCqdWa83WKwOK C3efPPQmTOf3blzL5dDl9Kk4GNKkuk0UiJJ7tz5kloLbXUwPLr H079NBq5hCEJpobNEMGufwd4LzRF04g5fFOwKoAVCg2Bs4cgYc PP5hpyeKBAzg7tRbRSVKBE0jSOssYe0rqjeMyC39bKV3jqWHqC BGrmEkOhVO0Z1zhFwWMiqIJOn70HTigIdutD+ATcgBujQ/t6otUcfInyamNmDoa9Hcb926Pi1W9MALZ5DI+2A7l68CIKgLcc d3t51t6dTUEJPJfJHPvp0ZPP24U3bCVeQpzL1qKwCrWMZN5ccc +pwm9PpOXX608nJ2WQyk0rl0Gr8dBGglQTQcjmkycnM7r2vo71 Q0AZQ/Wg3RSNkqAhm64OSDHKci7IBT2gIXBJxQxoKBEYAmsvVB5UY1Lq l3hNxo8xMB9zsYYU1LDMHIZq2io00hqYEDVRNVzNkLoV1aIkb1 CRgG1ZvFLhRJrduyd5AWgOKdVqELgL2hpn9lLwgHbgeYYMKcM/+t6DFmEHfibBwN5YHbq7IiERv9UWGJqaTpd1oE5kiJJSZeOrM+ WsHj5w+cPgU4R1abnLgqmfOXrp3b5rC9dXav2x2YYlbMkXm8+S FC7d27Xp53YY9UL7qbFGdNapBF6ChOhY6cbN7yBNe741AozQGr RCqMYID/uCAzz/gAgt09jqdfTZnr+UBNAjyJWggpS3MUJgauMpKhrSSIa9iaCq6V CVV0tWNPUYeHlE5hoEbZFWKW3CJG8QKu3+MsA+UopzWEH6EjEE og0s74pZksISgIvIGx85fvXfuyjhYL2727tj9wnQsQdW06fl0O p5Fms9k5tK56UT21sTsl/dm7kzFXMG+dZt33Bqfhv69WCRLl36AUMeUzpEkubhAjt+JXbzw xUsvvjm2bpvH3Wuz+C0Q9k1+syVgsQTt9ojX3Rf0D0ZCI72R0b 7IupJCgSG/N+qFHsrT53ZHHa4BGyU0R0x9eRwUZjqIY/YhuSnKVXlbeBb0lU8MHFQJoquXuIGqGVq63CWzRNG3flA1MHBD 0QCK5ACVHfxj0JTd3xqIKoMfUkAHerAd7pKgqjTY0VAVbgPL9J 6/eK3U+5S2RaWu50glEcPc/Wt1M8VkgRwc27T7hZfnU4XiIrm4SFJ7WOWBWCyWnJ6OfXLm/KG3jw30b3DYg3ZrAOEyuI0Gl9mIuCFi3gG/fzjgHwgF7nOLhEfgAKAFfAM+b//D3CCGG9wDmHtA5+xTWSJ8nZ8td7ULbA0cgsbE7kNjEOjL7Jhas DpQJfU1go08owAPLecGFmuDFIOi3Kg9MGb1roOWE/XCxLfghrYUNnhK0hldZz69CKdfKCwWilDUL+QLgI9aAYj2QF4A aKBYuhAZGnv2pYOJzEK+SKZThdhcanx85syZc889dwDaKJvVa3 eEbNBT20JgXWYzMjCHo9fjgSw5AimyFO3DkC5Dw18R8w+Apfk8 96Et52Z1RYEb4YqCsUFBy9c4W7hEHROrpb5FsYpJALRyJl7BNK Iva2NqIcqBqG8P1NSxdCyFC7hBfCuhAyOxetCaJcrqkKsanAMa I3jlV666nNtjhdCV5Hn19SNnPrt89uL1sxeuf3bh+tlL1y5d/fLeVCJGbcG9pNDgxj0vvhHPkLfH5y98fuvw0VND67ba3dCqePS EU0+4jcgZw1ZLuHRrs/W6nFGvF+L8ulAYKRgc8fsHIfJDseEPDHqhMPP0oal2d7Qkj3fA 5RmyuVCHbnIMENY+jSUi0LqYEmNbD/pKO1qXlkZ9FSBlaSVuhhrGfWhLqmFq2/lGpSWI2lV3HwboXGFq4qbfGRgEVwVZXANQy+HUtwxooP8yhP8o oc1bvhJaTbdMZmd0dMv+sW37x7a+hLTtpaefedXiGXGFN67b8q LRNajG0ZY7elNYY4Cq26fCfRrMRxgDRlPYbOm12vptjgGHa8jt GfH6x4LB+/JA8ekdsLgiIDP03VBcoY4JfkTjaTbPqM09anKtM9hH9eZBFd4r VHjaOXhnj7GVjTUzdY0MbR0TfcEHGFgVE6tgIVUzdMDtG+jgx0 a2DioBHcQiTz9OWZ3JDVm11+6PusPrIBnZfANGRx98NKVt0ICJ 8s+TgghJdD6p3i/HA6Xv3IS6S6L3oa8wIIJKQ0iGBaToG4iCCngUR1KiQTM0e2u29 gExp2vI5RnxeEc9vnW+wFggMOr3jXi9w1CPWVxfzQXAuWCUwBk N7iGje8zgWofZR5VEVKQOckROOs9K51na2IaGTk1DJ5pxqGdpG tjaOurLYR9w09cikt9UA0vDkOAqawDz9BMe1OkbnUGLJ+wEIw9 AJzKCimq0urUfQxvuhf98bsABuAnULpHGU5JY64F7gCfCCDDxA KBTUEgRPQMqz3DbgIWyMZd7GMzMTUEDwQEQ87gHnc4o1BVQjxl Rd/mg8i+hc6JvEdVaBhREWKwJdEtcnVxzKwtvZuib6PoWJlY6bmTq ANo3uIHP/j8s0cjj'));

result := GetMufasaBitmap(BitmapFromString(134, 98, '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'));

end;


procedure test;
var
res_shape: string;
res_number, i: integer;
b: TMufasaBitmap;
begin
b := getBox;

ProcessPicture(b, res_shape, res_number, i);

writeln(res_shape);
writeln(res_number);
end;


begin
test;
end.

Ashaman88
03-30-2013, 06:42 PM
Gets the shape fine for me, not the number but that might be because im getting the shape from a youtube video.

program new;


const
W = 133;
H = 97;
var
a, c: array[0..W] of array [0..H] of Integer;
b: array[0..W] of array [0..H] of Boolean;
xs, ys, xe, ye: integer;
area: integer;
color, newcolor: integer;
dx: TIntegerArray;
dy: TIntegerArray;


procedure dfs1(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 7 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs1(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

procedure dfs(x, y: Integer);
var
d: Integer;
begin
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if (a[x + dx[d]][ y + dy[d]] = color) and (not b[x + dx[d]][ y + dy[d]]) then
dfs(x + dx[d], y + dy[d]);
a[x][y] := newcolor;
end;

function GoodColor(col: integer): boolean;
begin
if ((col > 12000000) and (col < 13000000)) or ((col > 16000000) and (col < 17000000)) then
result := true
else
result := false;
end;

function Simplify: boolean;
var
i, j: integer;
x, y: integer;
max, col: integer;
begin
max := 0;
area := 0;
c := a;
for i := 0 to W do
for j := 0 to H do begin
if (not b[i][j]) and GoodColor(a[i][j]) then begin
area := 0;
color := a[i][j];
newcolor := color;
dfs(i, j);
end;
if (area > max) then begin
max := area;
col := color;
x := i;
y := j;
end;
end;

result := false;
if max < 40 then exit;
result := true;

// FillChar(b, SizeOf(b), 0);
color := a[x][y];
newcolor := clRed;
dfs(x, y);

newcolor := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
color := a[i][j];
dfs(i, j);
end;
color := 0;

// FillChar(b, SizeOf(b), 0);
dfs(0, 0);
area := max;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if a[i][j] = 0 then
inc(area);
a[i][j] := clred;
if c[i][j] <> col then
c[i][j] := clred
else
c[i][j] := 0;
end
else
c[i][j] := 0;

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if not b[i][j] then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 1); decex(ys, 1); incex(xe, 1); incex(ye, 1);
end;

function GetShape: string;
var
i, j, ii, jj, d: integer;
more, less: integer;
max, min: integer;
d1, d2: extended;
x, y: integer;
vertexes: integer;
begin
// FillChar(b, SizeOf(b), 0);

//Getting the center of the shape
x := 0;
y := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
x := x + i;
y := y + j;
end;

x := x div area;
y := y div area;

a[x][y] := clGreen;

//Painting the border in white
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = 0 then
a[i][j] := clwhite;

d := 30;
max := 0;
min := 1000000;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
//For each point of the border, checking how many points of the border
//in a circle with radius d are closer to center and how much are
//further
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj]=clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more);
end;
if more - less > max then
max := more - less;
if more - less < min then
min := more - less;
end;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
more := 0;
less := 0;
d1 := sqrt(sqr(i - x) + sqr(j - y));
for ii := -d to d do
for jj := -d to d do
if (ii * ii + jj * jj < d * d) and (a[i+ii][j+jj] = clwhite) then begin
d2 := sqrt(sqr(ii + i - x) + sqr(jj + j - y));
if d1 - d2 > 3 then
inc(less)
else if d1 - d2 < -3 then
inc(more)
end;
if more - less < -10 then
a[i][j] := clpurple;
end;

// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clpurple then
for d := 0 to 7 do
b[i + dx[d]][j + dy[d]] := true;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

if max > 80 then begin
result := 'Star';
exit;
end;
if min > -20 then begin
result := 'Circle';
exit;
end;

//Counting how much vertexes we have...
// fillchar(b, sizeof(b), 0);
color := clpurple;
newcolor := clpurple;
vertexes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 36 then
inc(vertexes);
end;

case vertexes of
3: result := 'Triangle';
4: result := 'Square';
5: result := 'Pentagon'
else
result := 'Circle';
end;
end;

procedure count(var inside, outside: integer; x1, y1, x2, y2: integer);
var
x, y, dx, dy, d, d1: extended;
begin
inside := 0;
outside := 0;
// fillchar(b, sizeof(b), 0);
d := sqrt(sqr(x1 - x2) + sqr(y1 - y2));
dx := (x2 - x1)/d;
dy := (y2 - y1)/d;
x := x1;
y := y1;
x2 := round(x);
y2 := round(y);
repeat
if not b[x2][y2] then begin
b[x2][y2] := true;
if a[x2][y2] = 0 then
inc(outside)
else
inc(inside);
end;
x := x + dx;
y := y + dy;
// a[x2, y2] := clwhite;
x2 := round(x);
y2 := round(y);
d1 := sqrt(sqr(x - x1) + sqr(y - y1));
until d1 > d;
end;

procedure dfs2(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][y] := True;
exit;
end;
inc(area);
b[x][ y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if ((a[x + dx[d]][y + dy[d]] = color) or (a[x + dx[d]][y + dy[d]] = clwhite)) and (not b[x + dx[d]][y + dy[d]]) then
dfs2(x + dx[d], y + dy[d], xs, ys, dist);
end;

procedure dfs3(x, y, xs, ys, dist: Integer);
var
d: Integer;
begin
if sqrt(sqr(x - xs) + sqr(y - ys)) > dist then begin
b[x][ y] := True;
exit;
end;
inc(area);
b[x][y] := True;
for d := 0 to 3 do
if (x + dx[d] >= 0) and (y + dy[d] >= 0) and (x + dx[d] <= W) and (y + dy[d] <= H) then
if not b[x + dx[d]][ y + dy[d]] then
dfs3(x + dx[d], y + dy[d], xs, ys, dist);
end;

function GetNumber: integer;
var
i, j, parts, d, holes: integer;
i1, j1: integer;
x, y, xp, yp, xh, yh: integer;
inside, outside: integer;
max: extended;
_1or7: boolean;
begin
a := c;
// fillchar(b, sizeof(b), 0);
color := clred;
newcolor := clred;
parts := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clred) and (not b[i][j]) then begin
area := 0;
dfs(i, j);
if area < 4 then
c[i][j] := 1
else begin
if area > 40 then begin
x := i;
y := j;
end
else begin
xp := i;
yp := j;
end;
inc(parts);
end;
end;

if parts = 0 then begin
result := -1;
exit;
end;
//fillchar(b, sizeof(b), 0);

newcolor := 0;
for i := xs to xe do
for j := ys to ye do
if c[i][j] = 1 then
dfs(i, j);

xs := W; ys := H; ye := 0; xe := 0;
for i := 0 to W do
for j := 0 to H do
if a[i][j] = clred then begin
if xs > i then xs := i;
if ys > j then ys := j;
if xe < i then xe := i;
if ye < j then ye := j;
end;
decex(xs, 3); decex(ys, 3); incex(xe, 3); incex(ye, 3);

// fillchar(b,sizeof(b), 0);
newcolor := 0;

if parts > 1 then begin
area := 0;
dfs(xp, yp);
xp := 0; yp := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xp, i);
incex(yp, j);
b[i][j] := false;
end;
xp := xp div area;
yp := yp div area;
a[xp][yp] := clgreen;
end;

// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then begin
c[i][j] := clred;
for d := 0 to 3 do
c[i + dx[d]][j + dy[d]] := clred;
end;
a := c;
// fillchar(c, sizeof(c), 0);
if parts > 1 then
a[xp][ yp] := clgreen;
color := 0;
newcolor := 0;
dfs(0, 0);
holes := 0;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = 0) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
if area > 1 then begin
inc(holes);
xh := i;
yh := j;
end
else
c[i][j] := 1;
end;

result := -1;

if holes >= 2 then begin
result := 8;
exit;
end;

//0, 4, 6 or 9
if holes = 1 then begin
// fillchar(b, sizeof(b), 0);
area := 0;
dfs1(xh, yh);
xh := 0; yh := 0;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then begin
incex(xh, i);
incex(yh, j);
b[i][j] := false;
end;
xh := xh div area;
yh := yh div area;
a[xh][yh] := clgreen;

if parts > 1 then begin //6 or 9
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
if max < sqrt(sqr(xp - i) + sqr(yp - j)) then
max := sqrt(sqr(xp - i) + sqr(yp - j));
if sqrt(sqr(xh - xp) + sqr(yh - yp)) < max/2 then
result := 6
else
result := 9;
exit;
end;

//now 0 or 4
if area > 10 then
result := 0
else
result := 4;
exit;
end;
if parts > 1 then begin
result := 9;
exit;
end;
//here goes 1, 2, 3, 5, 7
//separating 1 and 7 from other numbers
max := 0;
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clred then
for i1 := xs to xe do
for j1 := ys to ye do
if a[i1][j1] = clred then
if sqrt(sqr(i1 - i) + sqr(j1 - j)) > max then begin
max := sqrt(sqr(i1 - i) + sqr(j1 - j));
x := i;
y := j;
xp := i1;
yp := j1;
end;
count(inside, outside, x, y, xp, yp);
if outside = 0 then
_1or7 := true
else
_1or7 := false;

for i := xs to xe do
for j := ys to ye do
if a[i][j] = 0 then
for d := 0 to 3 do
if a[i + dx[d]][ j + dy[d]] = clred then begin
a[i][j] := clwhite;
break;
end;

d := 10;
color := 0;
// fillchar(c, sizeof(c), 0);
for i := xs to xe do
for j := ys to ye do
if a[i][j] = clwhite then begin
for i1 := i - d - 1 to i + d + 1 do
for j1 := j - d - 1 to j + d + 1 do
b[i][j] := false;
dfs2(i, j, i, j, d);
area := 0;
dfs3(i, j, i, j, d);
if area < 100 then
c[i][j] := clpurple
end;
// fillchar(b,sizeof(b),0);
for i := xs to xe do
for j := ys to ye do
if c[i][j] = clpurple then begin
a[i][j] := clpurple;
for d := 0 to 7 do
b[i + dx[d]][ j + dy[d]] := true;
end;
for i := xs to xe do
for j := ys to ye do
if b[i][j] then
a[i][j] := clpurple;

// fillchar(b, sizeof(b), 0);
parts := 0;
outside := 0;

color := clpurple;
newcolor := clpurple;
for i := xs to xe do
for j := ys to ye do
if (a[i][j] = clpurple) and (not b[i][j]) then begin
area := 0;
dfs1(i, j);
inc(outside);
if area > 15 then
inc(parts);
end;

if _1or7 then
if parts <= 2 then
result := 1
else
result := 7
else
if outside >= 5 then
result := 5
else if parts = 3 then
result := 2
else if parts = 2 then
result := 3;
{ result := parts + 1000*outside;}
end;

procedure initVars();
begin
setLength(dx, 7);

dx := [0, -1, 0, 1, -1, 1, 1, -1];

setLength(dy, 7);
dy := [-1, 0, 1, 0, 1, -1, 1, -1];
end;

procedure ProcessPicture(var BMP:TMufasaBitmap; var shape: string; var number: Integer; debug: Integer);
var
i, j : Integer;

begin
initVars;
for i := 0 to W do
for j := 0 to H do
a[i][j] := BMP.FastGetPixel(i,j);


//First, lets find the largest area of one color, thats close to white
//this should be our shape to recognize
//we will also fill the spaces inside the shape
if not Simplify then begin
shape := 'unknown';
number := -1;
exit;
end;
//Now, recognizing the shape :)
shape := GetShape;

if (debug = 1) or (debug = 3) then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);

number := GetNumber;

if debug = 2 then
for i := 0 to W do
for j := 0 to H do
BMP.FastSetPixel(i,j,a[i][j]);
if debug = 3 then
for i := 0 to W do
for j := 0 to H do
if a[i][ j] <> 0 then
BMP.FastSetPixel(i,j,not a[i][j]);
end;


function getBox: TMufasaBitmap;
begin
// result := GetMufasaBitmap(BitmapFromString(104, 101, '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 ANo3uIHP/j8s0cjj'));

result := GetMufasaBitmap(BitmapFromString(134, 98, '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'));

end;


procedure test;
var
res_shape: string;
res_number, i: integer;
b: TMufasaBitmap;
begin
b := getBox;

ProcessPicture(b, res_shape, res_number, i);

writeln(res_shape);
writeln(res_number);
end;


begin
test;
end.

What the heck haha it wasn't returning anything for me... I'll live test it


Edit: only says circle and -1 for me everytime... and no circles on that box :/

Ashaman88
03-31-2013, 01:04 AM
olly can you try it out with rd? I can't get it to work.


but for my version I'm at about a 50% solve rate, and it eventually solves all the boxes

Olly
03-31-2013, 05:09 AM
olly can you try it out with rd? I can't get it to work.


but for my version I'm at about a 50% solve rate, and it eventually solves all the boxes

rd?

Ashaman88
03-31-2013, 12:21 PM
rd?

Some kind of auto correct maybe? Haha oops I meant rs - a live test

Olly
03-31-2013, 03:56 PM
Some kind of auto correct maybe? Haha oops I meant rs - a live test

I don't have an account with a strange box, nor do i want to try and get one if you have any pictures send them over i can test them fine.

Ashaman88
03-31-2013, 05:53 PM
I don't have an account with a strange box, nor do i want to try and get one if you have any pictures send them over i can test them fine.

I can shoot you a pm with the account info of one that has them - just don't solve all the boxes please :). Let me know if that sounds good

Olly
03-31-2013, 05:55 PM
I can shoot you a pm with the account info of one that has them - just don't solve all the boxes please :). Let me know if that sounds good

Go for it, its easy enough to spawn boxes once you get low anyway :p

Ashaman88
04-03-2013, 07:26 PM
Go for it, its easy enough to spawn boxes once you get low anyway :p

Olly and I couldn't get the old one working.. Here is what I have so far, more tweaking is required (or coming up with a better method). Just call solvebox in your testing

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ? Box Routines --//
//-----------------------------------------------------------------//
// * function FindBox: Boolean; // * by WT-Fakawi
// * function GambleBox: Boolean; // * by WT-Fakawi
// * function GetBoxSide: Integer; // * by pups
// * function GetQuestion(var num: Integer; var shape: string): Integer; // * by pups
// * function OpenBox: Boolean; // * by pups
// * function SolveBox: Boolean; // * by pups

{$I SRL-OSR/SRL/misc/Debug.Simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.Simba}
var
NumberBounds: TBox;

const
DebugBox=false;

{************************************************* ******************************
function GambleNewBox: Boolean;
by: WT-Fakawi
Description: A random box clicker. Will try to solve the box ONCE, by a random click
@ any of the three answers. THIS IS NOT A BOXSOLVER, JUST A BOXCLICKER!
************************************************** *****************************}

function GambleBox: Boolean;
var
xb, yb, Choise: Integer;
begin
//if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
Mouse(xb, yb, 0, 0, True);
Wait(2000);
Choise:= Random(3);
TakeScreen('Gambling box Choise - '+IntToStr(Choise));
case Choise of
0: Mouse(145, 295, 4, 4, True);
1: Mouse(270, 295, 4, 4, True);
2: Mouse(381, 295, 4, 4, True);
end;
IdleTime(4000, 2000, 1.0);
// if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
WriteLn('Box Missed');
// NOnewboxes := NOnewboxes + 1;
Result := False;
repeat
Logout;
until (not (LoggedIn));
Exit;
end
//else
begin
WriteLn('Box solved');
// newboxes := newboxes + 1;
Result := True;
end;
end;
end;

{************************************************* ******************************
function OpenBox: Boolean;
by: pups fixed by Cheesehunk.
Description: Opens the box.
************************************************** *****************************}

function OpenBox : Boolean;
var
x, y, i,BoxDTM : Integer;
begin
Result := False;
GameTab(Tab_Inv);
Wait(100 + Random(50));
BoxDTM:=DTMFromString('mwQAAAHic42RgYHBiYmAwQ8J+SN gZiN2A+BlQ3QMGCP0GiO8C8SMo/wMU97W0AElGvNiIgTDAbwIEwwEAyPkMaQ==');
if FindDTM(BoxDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
for i := 0 to 9 do
begin
if (GetColor(487, 39) = 13567) and (GetColor(350, 295) = 2304814) then
begin
Result := True;
Exit;
end;
Wait(500);
end;
end;
freedtm(boxdtm);
end;

Function GetNumber: Integer;
Var
CTS,X,Y,ZeroDTM,OneDTM,TwoDTM,ThreeDTM,FourDTM,Fiv eDTM,SixDTM,SevenDTM,EightDTM,NineDTM: Integer;
MidBox: TPoint;
TPA,TPA1,TPA2,TPAW: TPointArray;
ATPA: T2DPointArray;
BrownBox: TBox;
afound: Extended;
Begin
Result:=-1
CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.05, 0.31);
MidBox:=MiddleBox(IntToBox(NumberBounds.X1+5, NumberBounds.Y1+5, NumberBounds.X2-5, NumberBounds.Y2-5));
FindColorsSpiralTolerance(MidBox.X, MidBox.Y, TPA, 6187391, NumberBounds.X1, NumberBounds.Y1, NumberBounds.X2, NumberBounds.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

ATPA:=FloodFillTPA(TPA);

If Length(ATPA)=0 Then
Begin
Writeln('No brown found');
Exit;
End;

{Good} ZeroDTM := DTMFromString('mEQIAAHicvc1BCoMwEAXQiRZR1FLUjdfwKJ 7Aa3gfsaWViOjxDPSH/K1mpYHHTH4mSS0iT+VkEEMED/Y2e0HKXIGwz6GAkux8ALu4mRASqOCHSMOXJu5n1pHePLfZQprz K2xk9x/eGViNMaf6rvXyvdHgn6upGxyuP2gVUcs=');
{Good} OneDTM := DTMFromString('mggAAAHicY2NgYGBigABmIGaBshmBmA+Iua FYCirOAcT1mXEMf//8AWMQG4aNgHLYMBMODAEARdcMkQ==');
{Good} TwoDTM := DTMFromString('mOwIAAHicvc3dCoJAEIbhUSNEtL9T78JL8Q q8hbQgo8Sf6K6Xepe+TjoI6sCFh4+Z3dnJzSwKzEIsECPDBoms ZIdU/Lul+mtsJdOMv/P/GhzxsNeOiRzQfRhxU/a44ogaDQ7YK084o5V3fdH8XZxzf2ur8icF++YSzOjLeQJzJ1Aa ');
{Good} ThreeDTM := DTMFromString('mJgIAAHicvc1RCoJAEMbxNUWCSkJ86hgexR N0Dc/SgykmahKeL9zwL35Pgj704MKPmZ2dmb0ZY67O7CyBnODDg4uD4 lEiuahvev+xb4CFUT3El2uFGg1eKJHjiUwK1SvFQvk006HFW3t KzT7wQa+6tfYv6T3ZtOyP+WsPzk7WzwgAalmq');
{Good} FourDTM := DTMFromString('mJgIAAHicvc7vCkFBEIfh2dtwGW6IK5A7UC haVv6FuEHppCTi1J7Ou/nRKfniw9l6mp1pZnYbZnbHRTHHA0/do+pn5bnym2YyHHFSz1XzRYW5VwyYYIQ+vGrLijnW2OOALTaqL TDFGAP0MNSeGVbYpT/HaKHb/uI7rU98S3nq/0eTt+rgavL7lIw5ZyI=');
{Good} FiveDTM := DTMFromString('mOwIAAHicvc1dCoJAFIbhMxBhJAWSUdYqWo f3LaOVGBphYj8LzQZ8B7/rCAIHHs7P8M3szGzmzBZIsMYGmRv2Uxg+lLcNfeAwQazsSlLss VW/xBwROqI3XHFBqT7sWjzxwh21NJrD/UNzrVyjekahWurtCqdj/jPv/V8O/DcWN6IvpwdBgFTL');
SixDTM := DTMFromString('mJgIAAHicvczBCoJAEMbx2YiwotRLBx+rJ/AZPFltKGJZHXrhWOi/8F21Tg78mN3hmynMbOPMtkix03uFtXr0IWd0hwWWmu+RS6b9RL mgnTg/4Ma3Q487BrTwuOKMWryyMffECw/NGlyUq3Qj5t7qIYS/nMrjT1P7c5WbyXh9AZtZTSk=');
{Good} SevenDTM := DTMFromString('m/AEAAHictc3dCYAgFAVg26I5mqgRWqQJCooIkoiIaLL+qNDoXDg +1ksofBw5XjVUSq1wwg0WLjjY7zAzXe86sXFO9gvPDd8yVEJBN bTQwwQjVOwlG9DUkcwOkEHO1OzlfprEn6y1v0T4w6fAs7f1AM9 jZhg=');
{Good} EightDTM := DTMFromString('megIAAHicxc1NCoMwEAXgSQSFCtWFaw/Rc3TvMTxCS9H6S1s8bRHS+gbeIhuldGPgI8nMyyQXkS98QIyIp ZiOdICZuQDniLWUEt5D9nSGZvXNm7tlX2UwoNZ6etJzByM1UFH t7Zp7wIs5ffMknXOHG1zgChPzzrmflMX5L2vzTvh7D2Yn22sBg URdPw==');
NineDTM := DTMFromString('mUAIAAHick2FgYGBmhGAmIGYFYkEg5oKyGY D4LwME/wZiFqg6NqgaHiDmA2IBKM0N1Q+iORgh6v8B9f0A4l8MEDMrgXQ dENdAcRkQF0NxCRBXQMWrgLgJCTeg6auC6i0C4gIkDOJXQ/W0gdz+5w8KzgvzIgqj6yMWGwHtpCdmpDPGBwCan1l1');

If DebugBox Then
Begin
DebugATPABounds(ATPA);
Writeln('Length of Brown Shape: '+ToStr(Length(ATPA[0])));
End;

BrownBox:=GetTPABounds(ATPA[0]);

FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
TPAW:=CombineTPA(TPA1,TPA2);


If DebugBox Then
Writeln('Length of White TPA in Brown: '+ToStr(Length(TPAW)));

If Result=-1 Then
If findDTMrotated(EightDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),130,400) And InRange(Length(TPAW),200,450) Then
Result:=8;

If Result=-1 Then
If findDTMrotated(NineDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),160,440) And InRange(Length(TPAW),300,600) Then
Result:=9;

If Result=-1 Then
If findDTMrotated(SixDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),160,440) And InRange(Length(TPAW),300,600) Then
Result:=6;

If Result=-1 Then
If findDTMrotated(FourDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),130,300) And InRange(Length(TPAW),200,450) Then
Result:=4;

If Result=-1 Then
If findDTMrotated(FiveDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),230,300) And InRange(Length(TPAW),340,900) Then
Result:=5;

If Result=-1 Then
If findDTMrotated(TwoDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Then
Result:=2;

If Result=-1 Then
If findDTMrotated(ZeroDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,215) And InRange(Length(TPAW),160,300) Then
Result:=0;

If Result=-1 Then
If findDTMrotated(ThreeDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,220) And InRange(Length(TPAW),300,550) Then
Result:=3;

If Result=-1 Then
If findDTMrotated(SevenDTM, x, y, BrownBox.X1-4, BrownBox.Y1-4, BrownBox.X2+4, BrownBox.Y2+4,-Pi,Pi,Pi/30,aFound) And InRange(Length(ATPA[0]),140,220) And InRange(Length(TPAW),200,550) Then
Result:=7;

If Result=-1 Then
If findDTMrotated(OneDTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Or (InRange(Length(ATPA[0]),85,130) And InRange(Length(TPAW),0,100)) Then
Result:=1;


SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(TPAW,0);
FreeDTM(ZeroDTM);
FreeDTM(OneDTM);
FreeDTM(TwoDTM);
FreeDTM(ThreeDTM);
FreeDTM(FourDTM);
FreeDTM(FiveDTM);
FreeDTM(SixDTM);
FreeDTM(SevenDTM);
FreeDTM(EightDTM);
FreeDTM(NineDTM);

Writeln('We think the number is: '+ToStr(Result));
End;

Function GetShape: String;
Var
CTS: Integer;
TPA,TPA1,TPA2, TPAB: TPointArray;
ATPA,ATPAB: T2DPointArray;
WhiteBox: TBox;
Begin
Result:='';
FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, 172, 45, 352, 225, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, 172, 45, 352, 225, 5);
TPA:=CombineTPA(TPA1,TPA2);

ATPA:=FloodFillTPA(TPA);
SortATPASize(ATPA,True);
If DebugBox Then
Writeln('Length of Full White ATPA: '+ToStr(Length(ATPA)));
If Length(ATPA)=0 Then
Begin
Writeln('No white found');
Exit;
End;

If DebugBox Then
DebugATPABounds(ATPA);

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

WhiteBox:=GetTPABounds(ATPA[0]);
NumberBounds:=WhiteBox;

SetColorSpeed2Modifiers(0.05, 0.31);
FindColorsSpiralTolerance(MSCX, MSCY, TPAB, 6187391, WhiteBox.X1, WhiteBox.Y1, WhiteBox.X2, WhiteBox.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

SplitTPAWrap(TPAB,10,ATPAB);
SortATPASize(ATPAB,True);

If DebugBox Then
Begin
Writeln('Length of Shape: '+ToStr(Length(ATPA[0])));
Writeln('Length of OutterBox: '+ToStr(Length(ATPAB[0])));
End;

If InRange(Length(ATPA[0]),4280,4900) And InRange(Length(ATPA),9,20) And InRange(Length(ATPAB[0]),2700,5200) Then
Result:='Triangle';

If Result = '' Then
If InRange(Length(ATPA[0]),4801,6000) And InRange(Length(ATPA),8,15) And InRange(Length(ATPAB[0]),100,4600) Then
Result:='Square';

If Result = '' Then
If InRange(Length(ATPA[0]),3600,4580) And InRange(Length(ATPA),15,30) And InRange(Length(ATPAB[0]),7300,8700) Then
Result:='Star';

If Result = '' Then
If InRange(Length(ATPA[0]),6001,7900) And InRange(Length(ATPA),16,23) And InRange(Length(ATPAB[0]),200,2300) Then
Result:='Circle';

If Result = '' Then
Result:= 'Pentagon';

Writeln('We think the shape is: '+ToStr(Result));

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(ATPAB,0);
SetLength(TPAB,0);
End;

{************************************************* ******************************
function GetBoxSide: Integer;
by: pups
Description: Gets Box side and returns Bitmap
************************************************** *****************************}

Procedure GetBoxSide;
var
X,Y: Integer;
begin
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
Freeze;
end;

{************************************************* ******************************
function GetQuestion(var num: Integer; var shape: String): Integer;
by: pups
Description: Returns number and type.
************************************************** *****************************}

function GetQuestion(var num: Integer; var shape: string): Integer;
var
x, y, i: Integer;
text: string;
begin
num := 10;
shape := '';
for i := 0 to 14 do
begin
case i of
0: text := '0'; //Zero
1: text := '1'; //One
2: text := '2'; //Two
3: text := '3'; //Three
4: text := '4'; //Four
5: text := '5'; //Five
6: text := '6'; //Six
7: text := '7'; //Seven
8: text := '8'; //Eight
9: text := '9'; //Nine
10: text := 'Circle'; //Circle
11: text := 'Triangle'; //Triangle
12: text := 'Square'; //Square
13: text := 'Star'; //Star
14: text := 'Pentagon'; //Pentagon
end;
if (FindText(x, y, Text, upchars07, 110, 250, 415, 275)) then
begin
Result := i;
if (i < 10) then
num := i;
if (i >= 10) then
shape := text;
Exit;
end;
end;
end;


{************************************************* ******************************
function SolveBox: Boolean;
by: pups
Description: Solves the Box!
************************************************** *****************************}

function SolveBox: Boolean;
var
st2: Integer;
shapeQ, shape, ans: string;
numQ, num: Integer;
x, y: Integer;
begin
while OpenBox do
begin
WriteLn('Found a box, solving...');
Wait(1000);
GetQuestion(numQ, shapeQ);
if (shapeQ = '') and (numQ = 10) then
exit;
WriteLn('Question is:');
if shapeQ = '' then
WriteLn('Which shape has number ' + IntToStr(numQ))
else
WriteLn('What number is the ' + shapeQ);
st2 := GetSystemTime;
repeat
GetBoxSide;
Shape:=GetShape;
Num:=GetNumber;
UnFreeze;
If DebugBox Then
Wait(2000) Else
if (num = numQ) or (shape = shapeQ) then
begin
if num = numQ then
ans := shape
else
ans := IntToStr(num);
WriteLn('Answer is ' + ans);
if FindText(x, y, ans, upchars07, 116, 286, 183, 311) then
Mouse(120, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 235, 286, 302, 311) then
Mouse(240, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 350, 286, 417, 311) then
Mouse(355, 290, 30, 10, True);
WriteLn('******** SOLVED BOX RANDOM ********');
Result := True;
Break;
end;
until GetSystemTime > st2 + 12000;
Wait(1500 + Random(1000));
end;
end;



edit: with this version I'm confident it can solve all boxes "eventually" ex, solved 5/11 of my boxes in a short test (stopped manually). Number and shape detection are both about 75-80% accurate.

edit2: tweaks a little. solved 10 boxes in 15mins...not bad

Ashaman88
04-04-2013, 08:19 PM
Bumpity

I'm ok with pushing this version, probably needs some more tweaks, but should eventually solve! Gimme feedbacks or better ideas

//-----------------------------------------------------------------//
//-- Scar Standard Resource Library --//
//-- ? Box Routines --//
//-----------------------------------------------------------------//
// * function GambleBox: Boolean; // * by WT-Fakawi
// * function GetBoxSide: Integer; // * by pups/Ashaman88
// * function GetQuestion(var num: Integer; var shape: string): Integer; // * by pups
// * function GetNumber: Integer; // * by Ashaman88
// * function GetShape: String; // * by Ashaman88
// * function OpenBox: Boolean; // * by Ashaman88
// * function SolveBox: Boolean; // * by Ashaman88

{$I SRL-OSR/SRL/misc/Debug.Simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.Simba}
var
NumberBounds: TBox;

const
DebugBox=False;

{************************************************* ******************************
function GambleNewBox: Boolean;
by: WT-Fakawi (left this in here just in case we want to guess)
Description: A random box clicker. Will try to solve the box ONCE, by a random click
@ any of the three answers. THIS IS NOT A BOXSOLVER, JUST A BOXCLICKER!
************************************************** *****************************}

function GambleBox: Boolean;
var
xb, yb, Choise: Integer;
begin
//if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
Mouse(xb, yb, 0, 0, True);
Wait(2000);
Choise:= Random(3);
TakeScreen('Gambling box Choise - '+IntToStr(Choise));
case Choise of
0: Mouse(145, 295, 4, 4, True);
1: Mouse(270, 295, 4, 4, True);
2: Mouse(381, 295, 4, 4, True);
end;
IdleTime(4000, 2000, 1.0);
// if FindBitmapToleranceIn(Box, xb, yb, MIX1, MIY1, MIX2, MIY2, 40) then
begin
WriteLn('Box Missed');
// NOnewboxes := NOnewboxes + 1;
Result := False;
repeat
Logout;
until (not (LoggedIn));
Exit;
end
//else
begin
WriteLn('Box solved');
// newboxes := newboxes + 1;
Result := True;
end;
end;
end;

{************************************************* ******************************
function OpenBox: Boolean;
by: Ashaman88
Description: Opens the box.
************************************************** *****************************}

function OpenBox : Boolean;
var
x, y, i,BoxDTM : Integer;
begin
Result := False;
GameTab(Tab_Inv);
Wait(100 + Random(50));
BoxDTM:=DTMFromString('mwQAAAHic42RgYHBiYmAwQ8J+SN gZiN2A+BlQ3QMGCP0GiO8C8SMo/wMU97W0AElGvNiIgTDAbwIEwwEAyPkMaQ==');
if FindDTM(BoxDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 4, 4, True);
for i := 0 to 9 do
begin
if (GetColor(487, 39) = 13567) and (GetColor(350, 295) = 2304814) then
begin
Result := True;
Break;
end;
Wait(500);
end;
end;
freedtm(boxdtm);
end;

type
NumberRotate = record
Number, DTM, BMin, BMax, WMin, WMax: integer;
end;
NumberRotateArray = array of NumberRotate;

var
NumberArray: NumberRotateArray;

{************************************************* ******************************
procedure LoadNumbers;
by: Ashaman88
Description: Loadsup all the numbers!
************************************************** *****************************}

Procedure LoadNumbers;
Begin
If Length(NumberArray)<>0 Then
Exit;

SetLength(NumberArray,10);

with NumberArray[0] do {Good2}
begin
Number := 0;
DTM := DTMFromString('mYQMAAHic1c5bCsIwFIThExWr9YJ2F766D9 9dhptRRFREii0i7jDgBH8xFIX2TQMfpyQzaWZm1nNmiXvPvqQf hP2xjGRAtiudSEJ2iJDPZIoJ/VfP4KSFNudp1N8rdpJcLlIyc/aP9sycmTvZIu6G3hVlpR++C87uuFVyh+juNTb8w3tf22q5aKzJ/d/M9c5f5/5A7fUAGciE0g==');
BMin := 125;
BMax := 215;
WMin := 160;
WMax := 30;
end;

with NumberArray[1] do {Good}
begin
Number := 1;
DTM := DTMFromString('mggAAAHicY2NgYGBigABmIGaBshmBmA+Iua FYCirOAcT1mXEMf//8AWMQG4aNgHLYMBMODAEARdcMkQ==');
BMin := 85;
BMax := 130;
WMin := 0;
WMax := 100;
end;

with NumberArray[2] do {Good2}
begin
Number := 2;
DTM := DTMFromString('mygMAAHic1c5bCoJQFIXh43uWkdnNaAY9NK OG0Dyigkq7XyypqCkK/dESojepF4WP7dlu1z5dY4xjGVOGi6pUrHe/BBsFVVt9R72XouZraEgdnjLTLE/ffElnWzp3VNuqTWW6+t9XbnoOufsMcyywxh4RYhxwwgZLrLBFg CnGmOg90MwOR5xxwfVLLNHHrpt2hMp6ZQ4/3OUhSZL8bDToZ/KPnT3unkdWTmV7nhL4nss=');
BMin := 0;
BMax := 1000;
WMin := 0;
WMax := 1000;
end;

with NumberArray[3] do {Good2}
begin
Number := 3;
DTM := DTMFromString('mHgQAAHic3c/PDsFAEAbwGZTwOH0eF2cnT+EiJaJII0gJ4gn92/KNfomN7MVN2uSXndmd/drGIvIAUZGalmuB5Sllr1Rwzvi1412r73SDK+csowktaEMnwPY b+sm5MNu+QXlmGRHUKeKef29KKSwhgxVsIYc9Wb2BNc8zzs9oz t6yJjCihL3tL77yLfcAZ4/1JziS9TvO++9NmTkm59zfSQa9oGG/+xY6i/EvVaAV8fvzApQlvTI=');
BMin := 140;
BMax := 220;
WMin := 300;
WMax := 550;
end;

with NumberArray[4] do {Good2}
begin
Number := 4;
DTM := DTMFromString('mygMAAHic1c5dCoJAFAXga1ipRVnto4eWUg uIVhG0loiIDEn7ISSjvQ11Bs7ALXrxoQcHPgauc49nLCKRJ9Kl iAJoQxN8aEGDt3vfhxhG0FPcPFa5HWa6HJ/ZdhZyb8Asa6i4rFDtv9A7hw1sYQd7SCClDE5whotyVbMjHLh7g wJKKjj7dqcHPKnkt4z/TtjJ9luzY8rOxhhZLWaVLefTj/sXm/0vE3SvI6+mqp033MCMjw==');
BMin := 130;
BMax := 300;
WMin := 200;
WMax := 450;
end;

with NumberArray[5] do {Good2}
begin
Number := 5;
DTM := DTMFromString('mXQQAAHic3c9dDsFAFAXg26pWikosRWIZ3i 3DAhBpCFHx/x8RLJMMzo0jGk9Sb23ypbczp/fOVEXkAZYl4oBHDrlgw1009Mq9a8O35nLgQx4KpGtZcsljLoAr fr/Jp58dk2FWc2X2878UqUQBZ+p5tmi5J60XtKZNrNb1OczgAMcY/d4xt4QpTCCCPoTQoZCzNDeiAXS534YmtJjtcU8zQxizp85YcfY JLnAGY0wijXrtL0nn/qKCe6WNlUKJnifIELAH');
BMin := 230;
BMax := 300;
WMin := 340;
WMax := 900;
end;

with NumberArray[6] do {Good2B}
begin
Number := 6;
DTM := DTMFromString('mSAQAAHic3c/bCgFRFAbgtYcijyOXbr2DZ5Gc0yTKYXI+xptw52GUGIxJ/t38w+QOd7Pra7da/9qHlIgklEgM4hT98EDmDEc40QXu4vUMZkR5XGxXcphxAzmHtT9 jBO6KqHf+xjNs3n8IvMFm3z/XYa0zS1jBHKYwgQFY0IE2daEPY5gxv+A+Yq/HnJ4dMmtRk1rQABPqUIMyFCAPJaiyZ5I/azJfgSLkYA0b/kG/IZtJy363fdH1t4Lz//r3jiT+FCYqZH5ZT1UtpIA=');
BMin := 160;
BMax := 440;
WMin := 300;
WMax := 600;
end;

with NumberArray[7] do {Good2}
begin
Number := 7;
DTM := DTMFromString('mIgMAAHiczc5hCoJAEAXgtyoZQtfwAN2oI3 SD0JCIEiuR8KjiRm/wBUu/8k+48LHsvGFmcwAjwQEJrWWldySQTPWYnGqe10sQ9A6aHbKa9d vMlDaaGe79OGJSSkUXaqiljp7UU0En5Td6KGv1rpVZz1U1y86a a3sOgUKZ7bp/7av3u1m893+x5d+WyC3Ub+cNI6GFkQ==');
BMin := 140;
BMax := 220;
WMin := 200;
WMax := 550;
end;

with NumberArray[8] do {Good2}
begin
Number := 8;
DTM := DTMFromString('mtQMAAHic1c7NCoJAFIbhMyJZVibeR5vuo3 13EAWVVKRUhEVdttA3+AZuhTYKD2eO52dmbmYDZxZJLEPX5CHn CCOZEBPOEX1BS8i87xvTNyXG1HyfiWPXTDKk5CkS3vGbCdhxUL qzJh7lTMzlJg+5c76SV/KSZ6vua6UUuMiJPX7/FvvWPSV7K2LB/5y+jayZ87WPvKWu607y1fLvur5hoXf3jeuhTt8X9gh9aA==');
BMin := 130;
BMax := 400;
WMin := 200;
WMax := 450;
end;

with NumberArray[9] do {Good2}
begin
Number := 9;
DTM := DTMFromString('mdgMAAHic1c7NCgFRGMbxM4U0Jh8TwzVYWs tOuQTltoTEyCShIffAzk15Tv5Tp0aysDH16z3zdOZ5p2uMqXjG VKUuAecyAvJQWtLkXJMG096JnDzkns3a0kFER0inz46SFFB0dv vOtDtW5iWWDTMmW2BJtpUdcy8nOctFrkjJj9xNZE3HTKaOOXnW n/CN7T7QlfL+uN9yxsP+R5PRIJe96/mFrLunf/0H3p/4/nkC/OhyWw==');
BMin := 160;
BMax := 440;
WMin := 300;
WMax := 600;
end;
End;

{************************************************* ******************************
procedure FreeNumbers;
by: Ashaman88
Description: Frees the number dtms!
************************************************** *****************************}

Procedure FreeNumbers;
Var
I: Integer;
Begin
for i := 0 to high(NumberArray) do
FreeDTM(NumberArray[i].DTM);
End;

{************************************************* ******************************
function GetNumber: Integer;
by: Ashaman88.
Description: Gets the number on the side of the box.
************************************************** *****************************}


function GetNumber: Integer;
var
i, maxScore, maxIndex: integer;
CTS,X,Y: Integer;
MidBox: TPoint;
TPA,TPA1,TPA2,TPAW: TPointArray;
ATPA: T2DPointArray;
BrownBox: TBox;
afound: Extended;
scores: TintegerArray;
begin
LoadNumbers;
setLength(scores, length(NumberArray));

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.05, 0.31);
MidBox:=MiddleBox(IntToBox(NumberBounds.X1+5, NumberBounds.Y1+5, NumberBounds.X2-5, NumberBounds.Y2-5));
FindColorsSpiralTolerance(MidBox.X, MidBox.Y, TPA, 6187391, NumberBounds.X1, NumberBounds.Y1, NumberBounds.X2, NumberBounds.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

ATPA:=FloodFillTPA(TPA);

If Length(ATPA)=0 Then
Begin
Writeln('No brown found');
Exit;
End;

If DebugBox Then
Begin
DebugATPABounds(ATPA);
Writeln('Length of Brown Shape: '+ToStr(Length(ATPA[0])));
End;

BrownBox:=GetTPABounds(ATPA[0]);

FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, BrownBox.X1, BrownBox.Y1, BrownBox.X2, BrownBox.Y2, 5);
TPAW:=CombineTPA(TPA1,TPA2);


If DebugBox Then
Writeln('Length of White TPA in Brown: '+ToStr(Length(TPAW)));

// loop through fields, scoring each item
for i := 0 to high(NumberArray) do
begin
if inRange(Length(ATPA[0]), NumberArray[i].Bmin, NumberArray[i].BMax) then
scores[i] := scores[i] + 1;

if inRange(Length(TPAW), NumberArray[i].Wmin, NumberArray[i].WMax) then
scores[i] := scores[i] + 1;

If findDTMrotated(NumberArray[i].DTM, x, y, BrownBox.X1-3, BrownBox.Y1-3, BrownBox.X2+3, BrownBox.Y2+3,-Pi,Pi,Pi/30,aFound) Then
scores[i] := scores[i] + 5;
end;

// get the item with the highest score
maxScore := -1;
maxIndex := -1;
for i := 0 to high(scores) do
if (scores[i] > maxScore) then
begin
maxScore := scores[i];
maxIndex := i;
end;

if maxindex<>-1 then
begin
writeln('NumberScan: '+ToStr(NumberArray[maxIndex].number) + ', with a score of ' + intToStr(scores[maxIndex]));

result := NumberArray[maxIndex].number;
end;

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(TPAW,0);
end;

type
ShapeRotate = record
Shape: String;
SMin, SMax, WMin, WMax, BMin, BMax : integer;
end;
ShapeRotateArray = array of ShapeRotate;

var
ShapeArray: ShapeRotateArray;

{************************************************* ******************************
procedure LoadShapes;
by: Ashaman88
Description: Loadsup all the shapes!
************************************************** *****************************}

Procedure LoadShapes;
Begin
If Length(ShapeArray)<>0 Then
Exit;


SetLength(ShapeArray,5);

with ShapeArray[0] do {Good2}
begin
Shape := 'Triangle';
SMin := 10;
SMax := 13;
WMin := 4600;
WMax := 4900;
BMin := 3200;
BMax := 4500;
end;

with ShapeArray[1] do {Good2}
begin
Shape := 'Square';
SMin := 8;
SMax := 13;
WMin := 5000;
WMax := 5800;
BMin := 100;
BMax := 2500;
end;

with ShapeArray[2] do {Good2}
begin
Shape := 'Star';
SMin := 15;
SMax := 17;
WMin := 4100;
WMax := 4400;
BMin := 7500;
BMax := 8400;
end;

with ShapeArray[3] do {Good2}
begin
Shape := 'Circle';
SMin := 17;
SMax := 20;
WMin := 7000;
WMax := 7500;
BMin := 300;
BMax := 1300;
end;

with ShapeArray[4] do {Good}
begin
Shape := 'Pentagon';
SMin := 8;
SMax := 16;
WMin := 4400;
WMax := 4800;
BMin := 1600;
BMax := 2400;
end;
End;

{************************************************* ******************************
function GetShape: String;
by: Ashaman88.
Description: Gets the shape on the side of the box.
************************************************** *****************************}

Function GetShape: String;
Var
i, maxScore, maxIndex: integer;
CTS: Integer;
TPA,TPA1,TPA2, TPAB: TPointArray;
ATPA,ATPAB: T2DPointArray;
WhiteBox: TBox;
scores: TintegerArray;
Begin
LoadShapes;
setLength(scores, length(shapeArray));

Result:='';
FindColorsSpiralTolerance(MSCX, MSCY, TPA1, 16579837, 172, 45, 352, 225, 5);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, 12764106, 172, 45, 352, 225, 5);
TPA:=CombineTPA(TPA1,TPA2);

ATPA:=FloodFillTPA(TPA);
SortATPASize(ATPA,True);
If DebugBox Then
Writeln('Length of Full White ATPA: '+ToStr(Length(ATPA)));
If Length(ATPA)=0 Then
Begin
Writeln('No white found');
Exit;
End;

If DebugBox Then
DebugATPABounds(ATPA);

CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);

WhiteBox:=GetTPABounds(ATPA[0]);
NumberBounds:=WhiteBox;

SetColorSpeed2Modifiers(0.05, 0.31);
FindColorsSpiralTolerance(MSCX, MSCY, TPAB, 6187391, WhiteBox.X1, WhiteBox.Y1, WhiteBox.X2, WhiteBox.Y2, 16);
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);

SplitTPAWrap(TPAB,10,ATPAB);
SortATPASize(ATPAB,True);

If DebugBox Then
Begin
Writeln('Length of Shape: '+ToStr(Length(ATPA[0])));
Writeln('Length of OutterBox: '+ToStr(Length(ATPAB[0])));
End;

// loop through fields, scoring each item
for i := 0 to high(ShapeArray) do
begin
if inRange(Length(ATPA[0]), ShapeArray[i].Wmin, ShapeArray[i].WMax) then
scores[i] := scores[i] + 2;

if inRange(Length(ATPAB[0]), ShapeArray[i].Bmin, ShapeArray[i].BMax) then
scores[i] := scores[i] + 1;

if inRange(Length(ATPA), ShapeArray[i].Smin, ShapeArray[i].SMax) then
scores[i] := scores[i] + 4;
end;

// get the item with the highest score
maxScore := -1;
maxIndex := -1;
for i := 0 to high(scores) do
if (scores[i] > maxScore) then
begin
maxScore := scores[i];
maxIndex := i;
end;

if maxindex<>-1 then
begin
writeln('ShapeScan: '+ShapeArray[maxIndex].shape + ', with a score of ' + intToStr(scores[maxIndex]));

result := ShapeArray[maxIndex].shape;
end;

SetLength(ATPA,0);
SetLength(TPA,0);
SetLength(TPA1,0);
SetLength(TPA2,0);
SetLength(ATPAB,0);
SetLength(TPAB,0);
End;

{************************************************* ******************************
function GetBoxSide: Integer;
by: pups/Ashaman88
Description: Gets Box side and freezes client
************************************************** *****************************}

Procedure GetBoxSide;
var
X,Y: Integer;
begin
repeat
wait(100);
if FindColorTolerance(x, y, 16579837, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 16579837, 172, 215, 352, 215, 5) then continue;
if FindColorTolerance(x, y, 12764106, 182, 45, 182, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 342, 45, 342, 225, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 55, 352, 55, 5) then continue;
if FindColorTolerance(x, y, 12764106, 172, 215, 352, 215, 5) then continue;
Break;
until False;
Freeze;
end;

{************************************************* ******************************
function GetQuestion(var num: Integer; var shape: String): Integer;
by: pups
Description: Returns number and type.
************************************************** *****************************}

function GetQuestion(var num: Integer; var shape: string): Integer;
var
x, y, i: Integer;
text: string;
begin
num := 10;
shape := '';
for i := 0 to 14 do
begin
case i of
0: text := '0'; //Zero
1: text := '1'; //One
2: text := '2'; //Two
3: text := '3'; //Three
4: text := '4'; //Four
5: text := '5'; //Five
6: text := '6'; //Six
7: text := '7'; //Seven
8: text := '8'; //Eight
9: text := '9'; //Nine
10: text := 'Circle'; //Circle
11: text := 'Triangle'; //Triangle
12: text := 'Square'; //Square
13: text := 'Star'; //Star
14: text := 'Pentagon'; //Pentagon
end;
if (FindText(x, y, Text, upchars07, 110, 250, 415, 275)) then
begin
Result := i;
if (i < 10) then
num := i;
if (i >= 10) then
shape := text;
Exit;
end;
end;
end;


{************************************************* ******************************
function SolveBox: Boolean;
by: Ashaman88
Description: Solves the Box!
************************************************** *****************************}

function SolveBox: Boolean;
var
st2: Integer;
shapeQ, shape, ans: string;
numQ, num: Integer;
x, y: Integer;
begin
while OpenBox do
begin
WriteLn('Found a box, solving...');
Wait(1000);
GetQuestion(numQ, shapeQ);
if (shapeQ = '') and (numQ = 10) then
exit;
WriteLn('Question is:');
if shapeQ = '' then
WriteLn('Which shape has number ' + IntToStr(numQ))
else
WriteLn('What number is the ' + shapeQ);
st2 := GetSystemTime;
repeat
GetBoxSide;
Shape:=GetShape;
Num:=GetNumber;
UnFreeze;
If DebugBox Then
Wait(2000) Else
if (num = numQ) or (shape = shapeQ) then
begin
if num = numQ then
ans := shape
else
ans := IntToStr(num);
WriteLn('Answer is ' + ans);
if FindText(x, y, ans, upchars07, 116, 286, 183, 311) then
Mouse(120, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 235, 286, 302, 311) then
Mouse(240, 290, 30, 10, True);
if FindText(x, y, ans, upchars07, 350, 286, 417, 311) then
Mouse(355, 290, 30, 10, True);
WriteLn('******** SOLVED BOX RANDOM ********');
Result := True;
Break;
end;
until GetSystemTime > st2 + 12000;
Wait(1500 + Random(1000));
end;
If Length(NumberArray)>0 Then
Begin
FreeNumbers;
SetLength(NumberArray,0);
End;
If Length(ShapeArray)>0 Then
SetLength(ShapeArray,0);
end;

Ashaman88
04-05-2013, 12:49 AM
I'm going to keep spamming this thread :P

If nobody else wants to test this bad boy out, imma submit it to the git for live testing and such. It works about 75-80% of the time for each question, and will always eventually get rid of all the boxes (starting with a full inv, takes about 15 mins to do 12 boxes down)

Justin
04-05-2013, 01:35 PM
I'm going to keep spamming this thread :P

If nobody else wants to test this bad boy out, imma submit it to the git for live testing and such. It works about 75-80% of the time for each question, and will always eventually get rid of all the boxes (starting with a full inv, takes about 15 mins to do 12 boxes down)

I didn't notice you posted a solver, I'll give it a test next time I get a box!

Ashaman88
04-05-2013, 01:57 PM
I didn't notice you posted a solver, I'll give it a test next time I get a box!

I've got an account full inventory of them, wanna watch it work on it?

Ashaman88
04-05-2013, 01:57 PM
I didn't notice you posted a solver, I'll give it a test next time I get a box!

I've got an account full inventory of them, wanna watch it work on it?

Justin
04-05-2013, 02:13 PM
I've got an account full inventory of them, wanna watch it work on it?

Sure, why not

Justin
04-05-2013, 04:35 PM
I've got an account full inventory of them, wanna watch it work on it?

Failed some (Expected) but the success rate was higher then failure. Also having 28 boxes compared to starting with 1 would make the random be solved quicker.

I left 4 boxes unsolved in-case you want to replicate 28 for more testing. Overall, I'm quiet happy with the solver

Here's the output:



Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 9, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 8, with a score of 6
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 2
NumberScan: 6, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 9, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 6
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Star, with a score of 1
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 7, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 3
NumberScan: 4, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 6
NumberScan: 3, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 1
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 2
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
Answer is 4
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 1, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 0, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 9, with a score of 7
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 0
ShapeScan: Square, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 0, with a score of 6
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 6
NumberScan: 4, with a score of 7
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Square, with a score of 6
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 9, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 0, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
Which shape has number 8
ShapeScan: Square, with a score of 6
NumberScan: 8, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Successfully executed.
The following DTMs were not freed: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Ashaman88
04-05-2013, 06:08 PM
Failed some (Expected) but the success rate was higher then failure. Also having 28 boxes compared to starting with 1 would make the random be solved quicker.

I left 4 boxes unsolved in-case you want to replicate 28 for more testing. Overall, I'm quiet happy with the solver

Here's the output:



Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 9, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 8, with a score of 6
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 6
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 2
NumberScan: 6, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 4, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 9, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 6
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 1
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 4, with a score of 7
Answer is Triangle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Square, with a score of 6
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Square, with a score of 7
NumberScan: 2, with a score of 2
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Star, with a score of 1
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 1, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Circle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 5
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 7
Answer is 5
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 4
NumberScan: 6, with a score of 7
Answer is 6
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Answer is 8
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Star, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 7, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 3
NumberScan: 4, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Square, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 5
NumberScan: 7, with a score of 7
Answer is 7
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Circle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Circle, with a score of 6
NumberScan: 3, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Star, with a score of 1
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
Answer is 0
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Pentagon, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Pentagon, with a score of 3
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 5
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Star, with a score of 5
NumberScan: 4, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 1, with a score of 2
Answer is 1
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Circle, with a score of 7
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Triangle, with a score of 6
NumberScan: 4, with a score of 7
Answer is 4
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Circle, with a score of 3
NumberScan: 1, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 1, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 8, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 8, with a score of 7
Found a box, solving...
Question is:
Which shape has number 4
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 0, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 4
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 3
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
What number is the Square
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 5, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Star, with a score of 5
NumberScan: 2, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 4, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 9, with a score of 7
Answer is 9
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 0
ShapeScan: Square, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 0, with a score of 6
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Square, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 3
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 6
NumberScan: 4, with a score of 7
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 7, with a score of 6
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Pentagon
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Circle, with a score of 6
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 7, with a score of 7
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Pentagon, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
Found a box, solving...
Question is:
What number is the Triangle
ShapeScan: Circle, with a score of 4
NumberScan: 0, with a score of 6
ShapeScan: Pentagon, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Pentagon, with a score of 6
NumberScan: 2, with a score of 7
Found a box, solving...
Question is:
Which shape has number 2
ShapeScan: Pentagon, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 4
NumberScan: 2, with a score of 7
Answer is Star
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 5
ShapeScan: Square, with a score of 6
NumberScan: 5, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 9
ShapeScan: Triangle, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 7
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 1
NumberScan: 2, with a score of 2
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Square, with a score of 4
NumberScan: 7, with a score of 7
ShapeScan: Circle, with a score of 4
NumberScan: 9, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 3
ShapeScan: Star, with a score of 4
NumberScan: 5, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 6
NumberScan: 5, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 3, with a score of 6
Answer is Pentagon
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Circle
ShapeScan: Triangle, with a score of 5
NumberScan: 1, with a score of 5
ShapeScan: Star, with a score of 2
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 0, with a score of 6
ShapeScan: Triangle, with a score of 5
NumberScan: 0, with a score of 5
ShapeScan: Triangle, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 6
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 7
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 2, with a score of 2
Answer is 2
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 7
ShapeScan: Circle, with a score of 7
NumberScan: 7, with a score of 7
Answer is Circle
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
What number is the Star
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 5
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Pentagon, with a score of 4
NumberScan: 2, with a score of 2
ShapeScan: Square, with a score of 7
NumberScan: 9, with a score of 6
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Triangle, with a score of 7
NumberScan: 7, with a score of 7
ShapeScan: Star, with a score of 1
NumberScan: 3, with a score of 6
Answer is 3
******** SOLVED BOX RANDOM ********
Found a box, solving...
Question is:
Which shape has number 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 6
ShapeScan: Star, with a score of 5
NumberScan: 3, with a score of 7
ShapeScan: Pentagon, with a score of 7
NumberScan: 1, with a score of 5
ShapeScan: Square, with a score of 5
NumberScan: 7, with a score of 6
ShapeScan: Circle, with a score of 4
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Square, with a score of 5
NumberScan: 0, with a score of 6
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 7
NumberScan: 3, with a score of 7
ShapeScan: Star, with a score of 6
NumberScan: 3, with a score of 6
Found a box, solving...
Question is:
Which shape has number 8
ShapeScan: Square, with a score of 6
NumberScan: 8, with a score of 7
Answer is Square
******** SOLVED BOX RANDOM ********
Successfully executed.
The following DTMs were not freed: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]


Great to hear :) How does one add a file to the git?

Le Jingle
04-06-2013, 03:36 PM
Great to hear :) How does one add a file to the git?

I think you fork the latest update to the current OSR files, then, do the thingys in the pictures below b/c I got lazy trying to explain with words :p

http://i.imgur.com/pmM1KVY.png

http://i.imgur.com/c0jWPOe.png

Ashaman88
04-06-2013, 04:26 PM
Like a boss thanks lj, ill submit it today. Another random down!