-
Notifications
You must be signed in to change notification settings - Fork 49
/
hashcatlauncher.go
156 lines (133 loc) · 43.2 KB
/
hashcatlauncher.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package hashcatlauncher
import (
"os"
"fmt"
"errors"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/theme"
"github.com/s77rt/hashcat.launcher/pkg/xfyne/xsettings"
"github.com/s77rt/hashcat.launcher/pkg/xfyne/xwidget"
)
const Version = "0.5.1"
const hashcat_min_version = "v6.0.0"
var Icon = fyne.NewStaticResource("Icon.png",
[]byte{137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1, 0, 0, 0, 1, 0, 8, 6, 0, 0, 0, 92, 114, 168, 102, 0, 0, 1, 134, 105, 67, 67, 80, 73, 67, 67, 32, 112, 114, 111, 102, 105, 108, 101, 0, 0, 40, 145, 125, 145, 59, 72, 3, 65, 20, 69, 79, 162, 162, 136, 162, 96, 10, 17, 139, 45, 212, 202, 128, 168, 136, 165, 70, 33, 8, 10, 33, 70, 136, 159, 194, 221, 141, 137, 129, 236, 26, 118, 19, 108, 44, 5, 91, 193, 194, 79, 227, 175, 176, 177, 214, 214, 194, 86, 16, 4, 63, 32, 86, 150, 86, 138, 54, 18, 214, 55, 27, 49, 22, 198, 7, 143, 57, 220, 153, 251, 152, 185, 3, 193, 131, 156, 105, 185, 181, 125, 96, 217, 5, 39, 30, 141, 104, 201, 217, 57, 173, 254, 153, 90, 218, 104, 37, 76, 64, 55, 221, 252, 104, 44, 54, 73, 213, 250, 184, 37, 160, 214, 155, 176, 154, 85, 253, 220, 159, 213, 156, 90, 114, 77, 8, 104, 194, 35, 102, 222, 41, 8, 47, 10, 15, 173, 22, 242, 138, 119, 132, 67, 230, 178, 158, 18, 62, 21, 238, 117, 228, 130, 194, 247, 74, 55, 202, 252, 162, 56, 227, 115, 80, 205, 12, 57, 137, 248, 152, 112, 72, 88, 203, 252, 98, 227, 23, 155, 203, 142, 37, 60, 40, 220, 149, 178, 108, 153, 31, 76, 150, 57, 165, 120, 77, 177, 149, 43, 202, 221, 252, 82, 47, 108, 90, 178, 103, 166, 149, 46, 221, 73, 148, 9, 166, 136, 161, 97, 80, 36, 75, 142, 130, 228, 149, 197, 22, 197, 37, 46, 251, 145, 42, 254, 14, 223, 31, 19, 151, 33, 174, 44, 166, 56, 198, 89, 193, 66, 247, 253, 168, 63, 192, 175, 74, 182, 110, 122, 160, 223, 151, 2, 77, 17, 168, 123, 242, 188, 183, 110, 168, 223, 130, 210, 166, 231, 125, 30, 122, 94, 233, 8, 106, 30, 225, 194, 174, 248, 87, 14, 96, 248, 93, 244, 205, 138, 214, 181, 15, 45, 235, 112, 118, 89, 209, 140, 109, 56, 223, 128, 246, 135, 188, 238, 232, 190, 84, 35, 29, 76, 167, 225, 245, 68, 190, 105, 22, 218, 174, 161, 113, 190, 156, 219, 247, 62, 199, 119, 144, 144, 172, 38, 175, 96, 119, 15, 122, 50, 50, 123, 161, 202, 187, 27, 164, 127, 114, 251, 247, 204, 119, 126, 95, 62, 204, 114, 146, 217, 26, 115, 157, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0, 249, 67, 187, 127, 0, 0, 32, 0, 73, 68, 65, 84, 120, 1, 237, 93, 107, 144, 21, 197, 21, 62, 187, 236, 2, 194, 178, 44, 176, 188, 92, 118, 89, 163, 134, 135, 26, 69, 113, 75, 1, 49, 16, 45, 139, 10, 150, 86, 8, 74, 170, 98, 82, 18, 148, 164, 252, 161, 149, 42, 49, 166, 42, 130, 150, 165, 248, 72, 66, 197, 196, 96, 196, 71, 8, 150, 229, 170, 20, 74, 80, 4, 95, 128, 11, 42, 225, 185, 34, 162, 145, 199, 242, 18, 80, 216, 7, 236, 46, 46, 238, 164, 206, 13, 119, 189, 123, 189, 51, 211, 51, 211, 61, 115, 186, 251, 116, 213, 173, 153, 59, 211, 125, 186, 251, 59, 103, 190, 57, 221, 211, 143, 60, 0, 112, 128, 3, 35, 192, 8, 88, 137, 64, 190, 149, 181, 230, 74, 51, 2, 140, 64, 10, 1, 38, 0, 54, 4, 70, 192, 98, 4, 10, 44, 174, 187, 148, 170, 231, 231, 231, 195, 140, 25, 51, 164, 200, 98, 33, 193, 17, 88, 176, 96, 1, 180, 183, 183, 7, 79, 200, 41, 82, 8, 228, 113, 31, 64, 52, 75, 40, 47, 47, 135, 186, 186, 186, 104, 66, 56, 117, 104, 4, 16, 255, 125, 251, 246, 133, 78, 111, 123, 66, 110, 2, 68, 180, 128, 179, 206, 58, 43, 162, 4, 78, 30, 5, 1, 198, 63, 10, 122, 0, 76, 0, 209, 240, 131, 239, 125, 239, 123, 17, 37, 112, 242, 40, 8, 48, 254, 81, 208, 99, 2, 136, 134, 30, 0, 240, 27, 40, 50, 132, 145, 4, 48, 254, 145, 224, 99, 15, 32, 26, 124, 192, 30, 64, 84, 0, 35, 166, 103, 15, 32, 26, 128, 220, 4, 136, 134, 31, 123, 0, 17, 241, 139, 154, 156, 61, 128, 104, 8, 50, 1, 68, 195, 143, 61, 128, 136, 248, 69, 77, 206, 30, 64, 52, 4, 249, 51, 96, 4, 252, 186, 119, 239, 14, 205, 205, 205, 144, 151, 135, 48, 114, 72, 2, 1, 199, 113, 160, 103, 207, 158, 208, 210, 210, 146, 68, 246, 218, 231, 201, 30, 64, 4, 21, 226, 219, 135, 31, 254, 8, 0, 74, 72, 138, 248, 87, 86, 86, 74, 144, 100, 167, 8, 38, 128, 8, 122, 231, 246, 103, 4, 240, 36, 38, 101, 61, 132, 7, 147, 9, 32, 60, 118, 220, 254, 143, 128, 157, 204, 164, 220, 15, 16, 30, 77, 38, 128, 240, 216, 241, 23, 128, 8, 216, 201, 76, 202, 30, 64, 120, 52, 153, 0, 194, 99, 199, 30, 64, 4, 236, 100, 38, 101, 15, 32, 60, 154, 76, 0, 225, 177, 99, 15, 32, 2, 118, 50, 147, 178, 7, 16, 30, 77, 254, 12, 24, 30, 59, 104, 108, 108, 132, 94, 189, 122, 69, 144, 192, 73, 101, 32, 208, 212, 212, 4, 197, 197, 197, 50, 68, 89, 39, 131, 61, 128, 144, 42, 239, 223, 191, 63, 63, 252, 33, 177, 147, 157, 12, 73, 184, 180, 180, 84, 182, 88, 43, 228, 49, 1, 132, 84, 51, 183, 59, 67, 2, 167, 40, 25, 235, 35, 28, 176, 76, 0, 225, 112, 227, 246, 127, 72, 220, 84, 37, 227, 126, 128, 112, 200, 50, 1, 132, 195, 141, 191, 0, 132, 196, 77, 85, 50, 246, 0, 194, 33, 203, 4, 16, 14, 55, 246, 0, 66, 226, 166, 42, 25, 123, 0, 225, 144, 101, 2, 8, 135, 27, 19, 64, 72, 220, 84, 37, 99, 2, 8, 135, 44, 19, 64, 56, 220, 184, 9, 16, 18, 55, 85, 201, 184, 9, 16, 14, 89, 30, 7, 16, 2, 183, 130, 130, 130, 212, 244, 83, 60, 114, 160, 129, 192, 169, 83, 167, 224, 140, 51, 206, 0, 60, 114, 16, 71, 128, 61, 0, 113, 172, 58, 98, 86, 84, 84, 0, 63, 252, 29, 112, 144, 56, 65, 125, 224, 18, 225, 28, 130, 33, 192, 4, 16, 12, 175, 84, 108, 110, 111, 134, 0, 45, 134, 36, 172, 151, 224, 32, 51, 1, 4, 199, 140, 219, 255, 33, 48, 139, 35, 9, 247, 3, 4, 71, 153, 9, 32, 56, 102, 252, 5, 32, 4, 102, 113, 36, 97, 15, 32, 56, 202, 76, 0, 193, 49, 99, 15, 32, 4, 102, 113, 36, 97, 15, 32, 56, 202, 76, 0, 193, 49, 99, 15, 32, 4, 102, 113, 36, 97, 15, 32, 56, 202, 76, 0, 193, 49, 99, 15, 32, 4, 102, 113, 36, 97, 15, 32, 56, 202, 60, 14, 32, 32, 102, 56, 245, 20, 215, 1, 224, 64, 19, 1, 92, 23, 0, 215, 7, 224, 32, 134, 0, 123, 0, 98, 56, 117, 196, 226, 183, 76, 7, 20, 36, 79, 184, 25, 16, 76, 45, 76, 0, 193, 240, 226, 246, 127, 64, 188, 226, 142, 206, 4, 16, 12, 113, 38, 128, 96, 120, 113, 251, 63, 32, 94, 113, 71, 103, 15, 45, 24, 226, 76, 0, 193, 240, 98, 15, 32, 32, 94, 113, 71, 103, 15, 32, 24, 226, 76, 0, 193, 240, 98, 15, 32, 32, 94, 113, 71, 103, 15, 32, 24, 226, 76, 0, 193, 240, 98, 15, 32, 32, 94, 113, 71, 103, 15, 32, 24, 226, 252, 25, 48, 0, 94, 184, 17, 229, 241, 227, 199, 161, 71, 143, 30, 1, 82, 113, 212, 56, 17, 192, 93, 130, 113, 183, 96, 220, 53, 152, 131, 63, 2, 236, 1, 248, 99, 212, 17, 99, 240, 224, 193, 252, 240, 119, 160, 65, 243, 4, 215, 4, 24, 52, 104, 16, 205, 194, 17, 44, 21, 19, 64, 0, 165, 112, 251, 50, 0, 88, 9, 70, 101, 61, 137, 131, 207, 4, 32, 142, 21, 183, 255, 3, 96, 149, 100, 84, 238, 7, 16, 71, 159, 9, 64, 28, 43, 254, 2, 16, 0, 171, 36, 163, 178, 7, 32, 142, 62, 19, 128, 56, 86, 236, 1, 4, 192, 42, 201, 168, 236, 1, 136, 163, 207, 4, 32, 142, 21, 19, 64, 0, 172, 146, 140, 202, 4, 32, 142, 62, 19, 128, 56, 86, 220, 4, 8, 128, 85, 146, 81, 185, 9, 32, 142, 62, 143, 3, 16, 196, 170, 91, 183, 110, 208, 220, 220, 12, 249, 249, 204, 153, 130, 144, 37, 22, 173, 189, 189, 61, 245, 185, 246, 228, 201, 147, 137, 149, 65, 151, 140, 217, 154, 5, 53, 85, 89, 89, 201, 15, 191, 32, 86, 73, 71, 67, 146, 30, 58, 116, 104, 210, 197, 208, 34, 127, 38, 0, 65, 53, 113, 187, 82, 16, 40, 34, 209, 88, 95, 98, 138, 96, 2, 16, 195, 137, 219, 255, 130, 56, 81, 137, 198, 253, 0, 98, 154, 96, 2, 16, 195, 137, 191, 0, 8, 226, 68, 37, 26, 123, 0, 98, 154, 96, 2, 16, 195, 137, 61, 0, 65, 156, 168, 68, 99, 15, 64, 76, 19, 188, 187, 165, 24, 78, 198, 121, 0, 223, 124, 243, 13, 212, 215, 215, 67, 67, 67, 3, 148, 148, 148, 64, 239, 222, 189, 161, 75, 151, 46, 130, 104, 208, 143, 198, 30, 128, 152, 142, 248, 51, 160, 24, 78, 112, 236, 216, 177, 212, 131, 34, 24, 157, 76, 180, 189, 123, 247, 194, 250, 245, 235, 97, 243, 230, 205, 176, 101, 203, 22, 168, 173, 173, 133, 47, 191, 252, 50, 231, 202, 185, 184, 226, 113, 105, 105, 41, 92, 112, 193, 5, 112, 209, 69, 23, 193, 133, 23, 94, 8, 85, 85, 85, 48, 100, 200, 16, 50, 245, 17, 45, 72, 154, 216, 68, 227, 219, 26, 143, 9, 64, 64, 243, 125, 251, 246, 133, 175, 190, 250, 74, 32, 38, 141, 40, 219, 182, 109, 131, 127, 255, 251, 223, 176, 116, 233, 82, 88, 187, 118, 109, 228, 185, 241, 35, 71, 142, 132, 107, 175, 189, 22, 38, 79, 158, 12, 99, 199, 142, 5, 92, 23, 65, 135, 128, 122, 67, 226, 230, 224, 141, 0, 174, 156, 192, 63, 15, 12, 70, 143, 30, 237, 80, 15, 199, 143, 31, 119, 254, 246, 183, 191, 57, 195, 134, 13, 83, 170, 203, 225, 195, 135, 59, 143, 63, 254, 184, 131, 249, 81, 15, 151, 92, 114, 137, 82, 44, 12, 121, 110, 248, 225, 247, 83, 228, 212, 169, 83, 201, 218, 122, 93, 93, 157, 115, 215, 93, 119, 57, 125, 250, 244, 137, 213, 216, 49, 63, 204, 23, 243, 167, 26, 126, 250, 211, 159, 198, 138, 137, 159, 29, 17, 189, 207, 4, 224, 167, 24, 52, 116, 106, 225, 63, 255, 249, 143, 115, 211, 77, 55, 57, 133, 133, 133, 137, 26, 121, 126, 126, 190, 51, 121, 242, 100, 103, 229, 202, 149, 212, 32, 114, 102, 205, 154, 149, 40, 54, 126, 118, 69, 228, 62, 19, 128, 159, 34, 166, 77, 155, 70, 226, 77, 215, 220, 220, 236, 60, 245, 212, 83, 206, 69, 23, 93, 68, 210, 176, 71, 141, 26, 229, 60, 253, 244, 211, 78, 75, 75, 75, 226, 100, 128, 158, 201, 141, 55, 222, 72, 18, 39, 63, 123, 139, 249, 62, 19, 128, 40, 224, 35, 71, 142, 116, 102, 207, 158, 237, 224, 219, 55, 174, 112, 244, 232, 81, 167, 186, 186, 58, 245, 182, 47, 46, 46, 214, 194, 160, 207, 56, 227, 140, 148, 87, 240, 196, 19, 79, 56, 135, 14, 29, 138, 11, 42, 231, 243, 207, 63, 119, 230, 205, 155, 231, 140, 29, 59, 214, 201, 203, 203, 211, 2, 43, 81, 219, 83, 21, 143, 191, 2, 120, 119, 144, 166, 238, 226, 76, 192, 236, 153, 101, 56, 217, 100, 204, 152, 49, 112, 217, 101, 151, 193, 229, 151, 95, 158, 250, 108, 86, 88, 88, 40, 32, 205, 59, 10, 126, 109, 216, 184, 113, 35, 108, 216, 176, 1, 222, 124, 243, 77, 88, 181, 106, 21, 156, 58, 117, 202, 59, 17, 225, 187, 136, 201, 248, 241, 227, 225, 234, 171, 175, 134, 75, 46, 185, 4, 46, 190, 248, 98, 192, 222, 249, 168, 161, 173, 173, 13, 54, 109, 218, 4, 239, 191, 255, 126, 234, 87, 83, 83, 3, 117, 117, 117, 157, 196, 230, 210, 91, 167, 8, 252, 7, 152, 0, 124, 140, 0, 7, 199, 188, 251, 238, 187, 48, 109, 218, 52, 216, 191, 127, 191, 107, 108, 92, 141, 118, 196, 136, 17, 128, 179, 6, 145, 28, 240, 136, 191, 126, 253, 250, 65, 247, 238, 221, 83, 233, 208, 32, 113, 73, 113, 92, 90, 252, 208, 161, 67, 169, 223, 145, 35, 71, 224, 240, 225, 195, 176, 99, 199, 142, 212, 131, 191, 103, 207, 30, 215, 60, 76, 185, 129, 248, 32, 17, 12, 27, 54, 12, 6, 14, 28, 152, 26, 123, 128, 71, 252, 21, 21, 21, 165, 166, 93, 167, 9, 183, 181, 181, 53, 245, 9, 118, 247, 238, 221, 144, 254, 33, 70, 219, 183, 111, 7, 92, 2, 220, 45, 148, 149, 149, 193, 11, 47, 188, 0, 87, 94, 121, 37, 224, 160, 39, 14, 238, 8, 176, 171, 228, 241, 9, 112, 232, 208, 161, 41, 23, 246, 240, 225, 195, 206, 15, 127, 248, 67, 198, 202, 3, 43, 85, 110, 106, 80, 185, 216, 4, 56, 112, 224, 64, 74, 111, 21, 21, 21, 172, 51, 111, 157, 113, 31, 128, 151, 129, 77, 152, 48, 161, 163, 13, 219, 214, 214, 150, 250, 244, 229, 21, 159, 239, 37, 107, 79, 183, 222, 122, 171, 115, 242, 228, 201, 14, 157, 49, 105, 251, 234, 195, 55, 130, 213, 12, 58, 125, 250, 244, 14, 99, 74, 159, 224, 64, 152, 130, 130, 2, 171, 113, 161, 70, 116, 168, 143, 249, 243, 231, 167, 85, 212, 113, 188, 249, 230, 155, 89, 79, 30, 30, 0, 207, 6, 116, 111, 26, 165, 238, 228, 154, 84, 242, 155, 223, 252, 6, 94, 123, 237, 181, 212, 4, 26, 159, 228, 124, 59, 6, 4, 112, 14, 195, 146, 37, 75, 96, 230, 204, 153, 223, 201, 45, 151, 254, 190, 19, 201, 226, 11, 76, 0, 62, 202, 119, 155, 86, 138, 189, 218, 216, 243, 140, 29, 125, 28, 146, 67, 0, 31, 240, 117, 235, 214, 193, 143, 127, 252, 227, 156, 133, 112, 211, 95, 206, 200, 150, 94, 100, 23, 201, 195, 69, 90, 187, 118, 109, 135, 59, 153, 235, 228, 139, 47, 190, 112, 112, 174, 0, 53, 151, 216, 134, 242, 84, 85, 85, 249, 142, 51, 168, 169, 169, 97, 221, 120, 216, 55, 114, 30, 3, 228, 129, 1, 62, 224, 126, 161, 169, 169, 201, 153, 56, 113, 34, 227, 232, 129, 163, 108, 59, 187, 226, 138, 43, 156, 134, 134, 6, 63, 213, 56, 7, 15, 30, 100, 189, 120, 235, 133, 9, 192, 205, 56, 123, 244, 232, 225, 180, 183, 183, 251, 26, 25, 70, 56, 113, 226, 132, 115, 205, 53, 215, 176, 177, 121, 27, 155, 20, 124, 38, 77, 154, 228, 224, 176, 104, 145, 128, 250, 67, 61, 186, 233, 152, 175, 199, 160, 48, 93, 65, 62, 255, 252, 243, 69, 108, 172, 35, 78, 107, 107, 171, 115, 253, 245, 215, 179, 177, 41, 180, 169, 159, 252, 228, 39, 157, 62, 243, 117, 128, 239, 113, 114, 222, 121, 231, 177, 78, 92, 116, 194, 157, 128, 30, 29, 63, 65, 123, 144, 113, 164, 95, 117, 117, 53, 92, 115, 205, 53, 30, 82, 249, 86, 88, 4, 38, 78, 156, 8, 207, 63, 255, 60, 116, 237, 218, 53, 144, 136, 160, 122, 12, 36, 92, 243, 200, 76, 0, 30, 10, 12, 211, 131, 140, 99, 223, 95, 124, 241, 69, 24, 53, 106, 148, 135, 100, 190, 21, 20, 1, 92, 166, 108, 241, 226, 197, 129, 31, 126, 204, 39, 140, 30, 131, 150, 79, 215, 248, 76, 0, 30, 154, 11, 251, 230, 192, 239, 210, 203, 150, 45, 227, 79, 132, 30, 216, 6, 185, 133, 122, 88, 177, 98, 69, 232, 113, 23, 97, 245, 24, 164, 140, 186, 198, 101, 2, 240, 208, 92, 148, 55, 199, 224, 193, 131, 225, 245, 215, 95, 135, 226, 226, 98, 143, 28, 248, 150, 31, 2, 184, 90, 49, 226, 56, 104, 208, 32, 191, 168, 174, 247, 163, 232, 209, 85, 168, 33, 55, 152, 0, 60, 20, 25, 245, 205, 49, 124, 248, 112, 120, 242, 201, 39, 61, 114, 224, 91, 126, 8, 44, 88, 176, 32, 53, 107, 208, 47, 158, 215, 253, 168, 122, 244, 146, 109, 194, 61, 238, 33, 117, 233, 33, 197, 239, 251, 50, 194, 175, 126, 245, 43, 198, 216, 5, 99, 175, 47, 68, 51, 103, 206, 148, 1, 127, 106, 1, 83, 175, 124, 44, 191, 199, 227, 0, 114, 25, 192, 192, 129, 3, 165, 24, 31, 10, 193, 1, 43, 229, 229, 229, 76, 2, 1, 72, 0, 167, 241, 54, 54, 54, 74, 211, 193, 128, 1, 3, 24, 255, 28, 248, 115, 19, 192, 197, 135, 147, 217, 110, 196, 126, 128, 63, 255, 249, 207, 46, 57, 241, 229, 92, 8, 252, 229, 47, 127, 1, 236, 76, 149, 21, 100, 234, 83, 86, 153, 40, 200, 97, 2, 112, 209, 130, 236, 118, 227, 148, 41, 83, 82, 75, 99, 185, 100, 199, 151, 51, 16, 152, 48, 97, 2, 92, 119, 221, 117, 25, 87, 162, 159, 202, 214, 103, 244, 18, 209, 144, 192, 4, 224, 162, 7, 21, 111, 140, 7, 30, 120, 192, 37, 55, 190, 156, 137, 192, 220, 185, 115, 51, 255, 74, 57, 87, 161, 79, 41, 5, 75, 88, 8, 19, 128, 139, 2, 84, 188, 49, 112, 91, 173, 113, 227, 198, 185, 228, 200, 151, 17, 1, 28, 237, 135, 251, 17, 202, 14, 42, 244, 41, 187, 140, 73, 200, 99, 2, 112, 65, 93, 149, 193, 252, 246, 183, 191, 117, 201, 145, 47, 35, 2, 183, 223, 126, 187, 18, 32, 84, 233, 83, 73, 97, 99, 20, 202, 171, 2, 187, 128, 141, 43, 208, 226, 234, 181, 178, 3, 46, 103, 141, 43, 214, 226, 106, 192, 28, 58, 35, 128, 171, 2, 227, 110, 198, 50, 150, 87, 239, 44, 25, 82, 43, 10, 51, 9, 100, 163, 2, 192, 30, 192, 119, 49, 73, 25, 160, 170, 45, 177, 209, 184, 111, 184, 225, 134, 28, 185, 242, 165, 159, 253, 236, 103, 74, 30, 126, 68, 182, 188, 188, 92, 153, 108, 157, 53, 199, 4, 144, 67, 123, 248, 230, 199, 253, 0, 84, 5, 183, 229, 171, 84, 229, 167, 139, 92, 220, 126, 92, 85, 64, 125, 86, 84, 84, 168, 18, 175, 173, 92, 38, 128, 28, 170, 83, 221, 99, 140, 159, 185, 112, 35, 17, 14, 223, 34, 208, 179, 103, 79, 229, 29, 164, 170, 245, 250, 109, 109, 244, 57, 99, 2, 200, 161, 43, 213, 109, 69, 220, 41, 8, 119, 198, 225, 240, 45, 2, 163, 71, 143, 6, 92, 79, 65, 101, 80, 173, 87, 149, 101, 87, 37, 155, 9, 32, 7, 178, 113, 24, 10, 26, 60, 135, 111, 17, 136, 3, 143, 56, 244, 250, 109, 141, 244, 56, 99, 2, 200, 161, 167, 56, 92, 197, 243, 207, 63, 63, 71, 206, 246, 94, 26, 57, 114, 164, 242, 202, 199, 161, 87, 229, 149, 144, 156, 1, 19, 64, 14, 64, 227, 120, 83, 168, 248, 196, 152, 163, 42, 218, 92, 138, 99, 127, 133, 56, 244, 170, 13, 224, 167, 11, 202, 4, 144, 67, 99, 113, 188, 41, 226, 48, 248, 28, 85, 35, 123, 41, 142, 30, 250, 56, 244, 74, 22, 96, 151, 130, 241, 64, 160, 44, 96, 112, 5, 154, 250, 250, 250, 172, 171, 242, 255, 226, 246, 215, 248, 37, 192, 113, 112, 150, 170, 221, 33, 47, 47, 47, 181, 37, 120, 122, 27, 117, 149, 104, 148, 148, 148, 64, 67, 67, 131, 202, 44, 180, 146, 205, 30, 64, 150, 186, 226, 122, 75, 96, 143, 119, 255, 254, 253, 179, 114, 183, 243, 47, 46, 247, 21, 199, 195, 143, 232, 114, 51, 160, 179, 141, 49, 1, 116, 198, 35, 86, 3, 193, 37, 195, 56, 0, 140, 24, 49, 34, 54, 24, 152, 0, 58, 67, 205, 4, 208, 25, 143, 88, 151, 144, 230, 177, 0, 255, 7, 63, 78, 28, 226, 242, 240, 178, 204, 138, 236, 95, 38, 128, 44, 213, 196, 249, 134, 184, 252, 242, 203, 179, 114, 255, 238, 95, 108, 42, 96, 27, 89, 199, 128, 229, 22, 25, 220, 115, 217, 101, 151, 197, 86, 189, 56, 245, 27, 91, 165, 34, 100, 196, 4, 144, 5, 94, 156, 111, 136, 31, 253, 232, 71, 144, 159, 239, 173, 2, 236, 36, 92, 180, 104, 17, 92, 121, 229, 149, 89, 37, 165, 253, 23, 31, 234, 103, 158, 121, 198, 183, 144, 56, 70, 31, 215, 0, 136, 43, 196, 169, 223, 184, 234, 20, 53, 31, 94, 44, 49, 99, 177, 196, 79, 62, 249, 68, 218, 66, 148, 34, 130, 198, 141, 27, 231, 139, 255, 117, 215, 93, 151, 18, 181, 114, 229, 74, 7, 247, 43, 204, 181, 136, 41, 149, 107, 223, 255, 254, 247, 157, 234, 234, 234, 212, 166, 170, 147, 39, 79, 246, 45, 235, 132, 9, 19, 68, 96, 146, 22, 103, 251, 246, 237, 190, 101, 162, 130, 101, 76, 229, 224, 85, 129, 211, 64, 231, 229, 229, 57, 45, 45, 45, 210, 140, 77, 68, 208, 252, 249, 243, 133, 12, 114, 217, 178, 101, 41, 113, 109, 109, 109, 206, 227, 143, 63, 238, 80, 91, 229, 22, 203, 131, 229, 194, 242, 97, 88, 186, 116, 169, 80, 189, 22, 44, 88, 32, 2, 147, 180, 56, 168, 223, 252, 252, 124, 161, 178, 165, 237, 194, 240, 35, 19, 64, 90, 193, 67, 134, 12, 145, 102, 104, 162, 130, 234, 235, 235, 157, 94, 189, 122, 249, 26, 228, 153, 103, 158, 233, 28, 61, 122, 180, 67, 236, 241, 227, 199, 157, 185, 115, 231, 10, 165, 77, 215, 79, 197, 17, 183, 222, 190, 235, 174, 187, 28, 172, 71, 58, 224, 57, 98, 233, 151, 95, 239, 222, 189, 83, 75, 166, 167, 211, 197, 117, 44, 43, 43, 243, 45, 155, 95, 217, 13, 186, 207, 4, 144, 86, 230, 248, 241, 227, 227, 178, 193, 78, 249, 220, 113, 199, 29, 66, 6, 249, 203, 95, 254, 178, 83, 58, 252, 179, 111, 223, 62, 103, 198, 140, 25, 78, 65, 65, 129, 144, 140, 116, 93, 163, 30, 49, 191, 91, 110, 185, 37, 149, 127, 118, 161, 126, 254, 243, 159, 11, 149, 101, 214, 172, 89, 217, 73, 99, 249, 127, 197, 21, 87, 8, 149, 47, 42, 70, 154, 164, 103, 2, 72, 43, 42, 215, 3, 22, 135, 69, 226, 67, 140, 111, 210, 116, 57, 188, 142, 243, 230, 205, 203, 89, 164, 93, 187, 118, 57, 183, 222, 122, 171, 211, 165, 75, 23, 33, 57, 94, 121, 120, 221, 67, 247, 121, 234, 212, 169, 206, 167, 159, 126, 154, 179, 28, 143, 62, 250, 168, 80, 254, 69, 69, 69, 206, 193, 131, 7, 115, 202, 80, 125, 241, 23, 191, 248, 133, 80, 25, 189, 112, 48, 232, 30, 19, 64, 90, 153, 115, 230, 204, 81, 109, 123, 174, 242, 127, 255, 251, 223, 11, 25, 37, 62, 224, 75, 150, 44, 113, 149, 243, 209, 71, 31, 57, 83, 166, 76, 113, 176, 63, 35, 93, 47, 25, 71, 148, 135, 114, 81, 190, 91, 88, 188, 120, 177, 48, 1, 205, 158, 61, 219, 77, 140, 242, 235, 168, 103, 25, 152, 24, 34, 131, 9, 32, 173, 200, 133, 11, 23, 42, 55, 62, 183, 12, 176, 115, 234, 188, 243, 206, 19, 50, 76, 36, 129, 199, 30, 123, 204, 77, 84, 234, 122, 109, 109, 109, 234, 77, 45, 131, 8, 174, 186, 234, 42, 103, 253, 250, 245, 158, 249, 61, 241, 196, 19, 194, 205, 144, 17, 35, 70, 56, 205, 205, 205, 158, 242, 84, 222, 252, 231, 63, 255, 41, 132, 115, 218, 46, 12, 63, 50, 1, 164, 21, 188, 102, 205, 26, 149, 118, 231, 43, 123, 195, 134, 13, 78, 97, 97, 161, 176, 113, 98, 27, 252, 216, 177, 99, 158, 114, 107, 106, 106, 156, 137, 19, 39, 10, 203, 76, 99, 129, 71, 76, 135, 233, 189, 2, 118, 76, 6, 217, 252, 20, 251, 14, 62, 252, 240, 67, 47, 145, 202, 239, 173, 94, 189, 58, 20, 30, 153, 216, 24, 116, 206, 4, 144, 86, 230, 254, 253, 251, 149, 27, 159, 95, 6, 247, 222, 123, 111, 32, 227, 236, 211, 167, 143, 115, 247, 221, 119, 59, 91, 183, 110, 117, 21, 141, 189, 242, 119, 222, 121, 167, 240, 231, 47, 108, 231, 99, 252, 204, 158, 253, 108, 225, 91, 182, 108, 113, 126, 247, 187, 223, 57, 37, 37, 37, 129, 202, 123, 255, 253, 247, 103, 139, 138, 253, 63, 246, 185, 164, 117, 110, 251, 145, 167, 3, 159, 30, 70, 133, 179, 209, 154, 155, 155, 19, 31, 118, 123, 234, 212, 41, 192, 213, 113, 223, 120, 227, 141, 192, 3, 188, 250, 246, 237, 11, 184, 178, 78, 159, 62, 125, 160, 189, 189, 29, 154, 154, 154, 96, 215, 174, 93, 176, 111, 223, 190, 80, 211, 142, 113, 40, 47, 46, 143, 142, 195, 103, 113, 163, 78, 28, 181, 120, 236, 216, 49, 216, 182, 109, 91, 234, 24, 180, 128, 147, 38, 77, 130, 87, 95, 125, 21, 10, 10, 10, 130, 38, 149, 26, 31, 71, 87, 246, 232, 209, 3, 90, 91, 91, 165, 202, 213, 85, 24, 179, 33, 128, 131, 237, 82, 42, 225, 196, 137, 19, 206, 152, 49, 99, 140, 210, 75, 85, 85, 149, 211, 212, 212, 68, 5, 98, 103, 248, 240, 225, 70, 225, 27, 214, 147, 241, 30, 136, 174, 43, 165, 133, 40, 55, 165, 73, 34, 248, 118, 122, 229, 149, 87, 192, 148, 233, 194, 231, 158, 123, 46, 44, 93, 186, 20, 138, 138, 138, 66, 104, 70, 77, 18, 74, 250, 86, 83, 67, 49, 169, 76, 0, 167, 113, 162, 54, 73, 164, 180, 180, 20, 150, 47, 95, 14, 195, 134, 13, 19, 211, 36, 209, 88, 56, 215, 255, 173, 183, 222, 130, 1, 3, 6, 144, 42, 33, 53, 125, 39, 5, 14, 19, 192, 105, 228, 41, 190, 17, 112, 225, 208, 117, 235, 214, 193, 248, 241, 227, 147, 178, 143, 72, 249, 226, 116, 231, 213, 171, 87, 167, 182, 229, 138, 36, 72, 65, 98, 138, 250, 86, 80, 77, 95, 145, 76, 0, 167, 33, 162, 250, 70, 192, 14, 189, 21, 43, 86, 0, 238, 155, 167, 83, 152, 50, 101, 74, 234, 205, 143, 158, 12, 197, 64, 85, 223, 113, 99, 197, 4, 112, 26, 113, 202, 111, 4, 92, 84, 3, 215, 4, 120, 224, 129, 7, 200, 111, 112, 137, 155, 159, 62, 248, 224, 131, 80, 93, 93, 77, 122, 251, 51, 202, 250, 142, 155, 4, 184, 55, 20, 32, 145, 89, 105, 97, 186, 196, 113, 16, 205, 185, 231, 158, 75, 82, 103, 149, 149, 149, 190, 3, 135, 194, 212, 89, 69, 154, 198, 198, 70, 146, 24, 134, 237, 205, 143, 144, 142, 7, 2, 149, 150, 150, 170, 176, 49, 101, 50, 209, 120, 113, 226, 146, 140, 97, 190, 17, 12, 167, 227, 1, 194, 114, 220, 124, 243, 205, 14, 150, 75, 167, 208, 175, 95, 191, 142, 58, 200, 192, 65, 83, 25, 76, 0, 248, 141, 90, 199, 176, 106, 213, 170, 196, 87, 8, 194, 21, 128, 86, 172, 88, 161, 35, 124, 206, 165, 151, 94, 106, 61, 1, 112, 31, 128, 198, 107, 197, 227, 215, 129, 77, 155, 54, 193, 188, 121, 243, 160, 184, 184, 56, 214, 166, 35, 142, 85, 152, 61, 123, 54, 212, 214, 214, 194, 213, 87, 95, 29, 107, 222, 178, 50, 227, 126, 0, 0, 38, 0, 128, 88, 151, 2, 151, 101, 188, 105, 57, 56, 172, 246, 246, 219, 111, 135, 79, 63, 253, 20, 238, 188, 243, 78, 232, 218, 181, 107, 250, 150, 146, 35, 202, 159, 53, 107, 22, 236, 220, 185, 19, 230, 204, 153, 163, 60, 63, 37, 149, 56, 45, 148, 191, 4, 48, 1, 164, 76, 193, 132, 55, 193, 192, 129, 3, 225, 225, 135, 31, 134, 53, 107, 214, 128, 170, 79, 111, 184, 147, 81, 77, 77, 13, 60, 244, 208, 67, 128, 249, 233, 30, 76, 208, 123, 84, 29, 176, 7, 160, 185, 7, 144, 109, 0, 85, 85, 85, 169, 97, 196, 184, 220, 182, 204, 128, 158, 6, 78, 228, 25, 61, 122, 180, 76, 177, 137, 202, 98, 15, 128, 61, 128, 148, 1, 154, 246, 38, 24, 51, 102, 12, 76, 159, 62, 93, 234, 195, 53, 99, 198, 12, 136, 115, 3, 15, 169, 133, 119, 17, 102, 154, 222, 93, 170, 233, 121, 217, 250, 233, 192, 248, 102, 195, 105, 192, 56, 128, 197, 164, 176, 121, 243, 102, 24, 53, 106, 148, 180, 42, 109, 221, 186, 21, 46, 184, 224, 2, 105, 242, 40, 8, 194, 169, 215, 184, 67, 51, 30, 109, 13, 214, 55, 1, 202, 203, 203, 141, 123, 248, 209, 152, 47, 188, 240, 66, 192, 245, 1, 100, 4, 236, 83, 48, 237, 225, 71, 92, 144, 252, 113, 189, 3, 155, 131, 245, 4, 96, 106, 59, 16, 23, 243, 168, 168, 168, 144, 98, 219, 178, 228, 72, 41, 140, 100, 33, 166, 234, 95, 20, 38, 235, 9, 192, 228, 118, 160, 172, 158, 122, 236, 253, 55, 53, 152, 172, 127, 17, 157, 49, 1, 156, 117, 150, 8, 78, 90, 198, 241, 219, 120, 84, 180, 82, 178, 191, 40, 136, 230, 27, 71, 60, 38, 128, 56, 80, 38, 156, 135, 237, 46, 32, 97, 213, 196, 82, 52, 219, 245, 207, 30, 128, 193, 30, 0, 46, 126, 201, 193, 27, 1, 246, 0, 188, 241, 49, 254, 174, 237, 111, 0, 227, 21, 236, 83, 65, 219, 245, 111, 181, 7, 128, 139, 84, 154, 220, 193, 229, 99, 251, 124, 27, 32, 181, 86, 33, 165, 197, 74, 227, 86, 138, 213, 4, 96, 58, 251, 115, 19, 64, 236, 113, 178, 185, 25, 96, 53, 1, 216, 172, 120, 177, 71, 195, 142, 88, 54, 219, 129, 213, 4, 96, 186, 7, 96, 199, 227, 27, 189, 150, 54, 219, 129, 213, 4, 96, 51, 243, 71, 127, 108, 204, 145, 96, 179, 29, 88, 77, 0, 166, 51, 127, 91, 91, 155, 148, 167, 244, 235, 175, 191, 150, 34, 135, 170, 16, 211, 237, 192, 11, 119, 171, 9, 192, 116, 230, 175, 175, 175, 247, 210, 189, 240, 189, 134, 134, 6, 225, 184, 58, 70, 52, 221, 14, 188, 116, 98, 45, 1, 224, 100, 153, 202, 202, 74, 47, 108, 180, 191, 39, 235, 193, 149, 37, 135, 42, 160, 232, 1, 160, 61, 216, 24, 172, 37, 128, 65, 131, 6, 165, 182, 136, 54, 89, 233, 178, 60, 0, 89, 114, 168, 98, 141, 107, 2, 200, 154, 56, 69, 181, 142, 110, 229, 178, 150, 0, 108, 104, 247, 53, 54, 54, 186, 233, 61, 208, 117, 211, 61, 0, 4, 195, 6, 123, 200, 165, 116, 107, 9, 192, 244, 118, 31, 174, 114, 36, 171, 19, 240, 228, 201, 147, 128, 63, 147, 131, 233, 246, 224, 166, 59, 107, 9, 192, 116, 198, 151, 253, 214, 150, 45, 207, 205, 32, 147, 186, 110, 186, 61, 184, 225, 106, 45, 1, 152, 206, 248, 178, 219, 237, 178, 229, 185, 25, 100, 82, 215, 77, 183, 7, 55, 92, 173, 37, 0, 211, 25, 95, 246, 27, 91, 182, 60, 55, 131, 76, 234, 186, 233, 246, 224, 134, 171, 181, 4, 96, 58, 227, 203, 234, 0, 76, 27, 142, 233, 4, 96, 186, 61, 164, 245, 152, 125, 180, 146, 0, 112, 123, 171, 178, 178, 178, 108, 44, 140, 250, 127, 224, 192, 1, 169, 245, 57, 120, 240, 160, 84, 121, 212, 132, 225, 234, 192, 221, 186, 117, 163, 86, 44, 229, 229, 177, 146, 0, 112, 0, 144, 172, 245, 242, 148, 107, 40, 100, 6, 123, 246, 236, 9, 153, 50, 119, 50, 217, 242, 114, 231, 146, 220, 85, 180, 7, 147, 87, 63, 118, 67, 214, 74, 2, 176, 161, 189, 87, 87, 87, 231, 166, 243, 80, 215, 247, 238, 221, 27, 42, 157, 78, 137, 108, 176, 139, 108, 125, 88, 73, 0, 54, 180, 247, 100, 19, 128, 108, 121, 217, 134, 72, 225, 191, 13, 118, 145, 141, 51, 19, 64, 54, 34, 134, 252, 151, 253, 192, 154, 222, 4, 64, 181, 51, 1, 24, 98, 252, 126, 213, 48, 221, 213, 195, 165, 192, 100, 187, 236, 54, 16, 128, 233, 118, 145, 235, 185, 96, 15, 32, 23, 42, 154, 95, 59, 124, 248, 48, 180, 180, 180, 72, 173, 5, 14, 45, 254, 234, 171, 175, 164, 202, 164, 38, 140, 61, 0, 106, 26, 81, 84, 30, 211, 153, 94, 182, 251, 159, 86, 131, 42, 185, 105, 249, 73, 31, 207, 62, 251, 236, 164, 139, 16, 123, 254, 214, 121, 0, 125, 250, 244, 129, 146, 146, 146, 216, 129, 142, 51, 67, 85, 15, 170, 233, 205, 0, 180, 11, 211, 109, 35, 219, 14, 173, 35, 0, 211, 223, 254, 168, 224, 93, 187, 118, 101, 235, 89, 202, 255, 157, 59, 119, 74, 145, 67, 89, 136, 13, 246, 145, 137, 191, 117, 4, 96, 67, 59, 111, 235, 214, 173, 153, 58, 150, 118, 254, 209, 71, 31, 73, 147, 69, 85, 144, 13, 246, 145, 137, 189, 117, 4, 96, 3, 195, 171, 34, 0, 85, 114, 51, 13, 50, 233, 115, 27, 236, 35, 19, 99, 235, 8, 192, 116, 134, 63, 117, 234, 20, 124, 242, 201, 39, 153, 58, 150, 118, 190, 109, 219, 54, 248, 230, 155, 111, 164, 201, 163, 40, 200, 116, 251, 200, 198, 220, 58, 2, 48, 157, 225, 119, 236, 216, 161, 108, 245, 158, 214, 214, 86, 248, 236, 179, 207, 178, 109, 200, 168, 255, 166, 219, 71, 182, 178, 172, 35, 0, 211, 25, 94, 181, 155, 174, 90, 126, 182, 129, 198, 253, 223, 116, 251, 200, 198, 211, 42, 2, 176, 97, 198, 87, 109, 109, 109, 182, 142, 165, 254, 87, 45, 95, 106, 97, 67, 8, 179, 97, 166, 104, 38, 44, 86, 17, 128, 13, 115, 190, 85, 63, 160, 166, 123, 0, 54, 172, 21, 97, 45, 1, 216, 208, 190, 83, 253, 128, 170, 38, 152, 76, 227, 76, 234, 220, 6, 59, 73, 99, 107, 149, 7, 96, 122, 251, 14, 151, 237, 146, 61, 9, 40, 109, 40, 233, 227, 238, 221, 187, 129, 151, 7, 75, 163, 161, 255, 145, 9, 64, 127, 29, 118, 212, 96, 221, 186, 117, 128, 51, 1, 85, 6, 148, 255, 193, 7, 31, 168, 204, 34, 113, 217, 166, 191, 40, 50, 1, 182, 138, 0, 76, 119, 237, 214, 172, 89, 147, 169, 91, 101, 231, 113, 229, 163, 172, 2, 62, 130, 77, 183, 147, 204, 234, 91, 69, 0, 166, 51, 123, 92, 15, 102, 92, 249, 100, 26, 106, 156, 231, 166, 219, 73, 38, 150, 184, 37, 170, 90, 159, 49, 51, 183, 132, 207, 113, 101, 91, 220, 20, 212, 196, 128, 91, 119, 225, 76, 54, 28, 172, 163, 58, 116, 239, 222, 29, 112, 163, 16, 83, 87, 209, 69, 59, 57, 243, 204, 51, 85, 195, 72, 66, 190, 53, 30, 128, 233, 59, 192, 98, 187, 60, 142, 135, 31, 173, 22, 243, 217, 176, 97, 3, 9, 3, 86, 81, 8, 27, 118, 142, 78, 227, 102, 13, 1, 96, 187, 206, 228, 61, 224, 227, 118, 203, 87, 175, 94, 157, 182, 33, 227, 142, 104, 39, 56, 32, 200, 134, 96, 21, 1, 152, 172, 208, 184, 9, 32, 238, 252, 226, 214, 157, 45, 29, 129, 214, 16, 128, 201, 29, 59, 56, 67, 239, 253, 247, 223, 143, 245, 25, 169, 169, 169, 49, 122, 102, 160, 201, 246, 146, 105, 40, 76, 0, 153, 104, 104, 122, 190, 121, 243, 230, 216, 7, 231, 224, 96, 32, 147, 23, 8, 97, 2, 208, 244, 97, 112, 43, 182, 201, 46, 221, 202, 149, 43, 221, 170, 173, 244, 122, 82, 249, 42, 173, 212, 105, 225, 38, 219, 75, 38, 126, 236, 1, 100, 162, 161, 233, 249, 210, 165, 75, 19, 41, 121, 82, 249, 198, 81, 89, 91, 60, 0, 107, 198, 1, 52, 53, 53, 65, 81, 81, 81, 28, 182, 19, 107, 30, 71, 142, 28, 129, 193, 131, 7, 39, 210, 30, 239, 210, 165, 11, 28, 58, 116, 8, 250, 245, 235, 23, 107, 157, 227, 200, 236, 248, 241, 227, 208, 171, 87, 175, 56, 178, 74, 52, 15, 43, 60, 128, 1, 3, 6, 24, 249, 240, 163, 229, 188, 246, 218, 107, 137, 60, 252, 152, 55, 118, 62, 46, 95, 190, 60, 81, 3, 86, 149, 57, 190, 44, 250, 247, 239, 175, 74, 60, 25, 185, 86, 16, 128, 201, 237, 185, 164, 221, 240, 164, 243, 87, 249, 36, 153, 108, 55, 105, 220, 172, 32, 0, 83, 219, 115, 95, 127, 253, 53, 172, 88, 177, 34, 173, 203, 68, 142, 232, 1, 96, 57, 76, 12, 166, 218, 77, 166, 174, 172, 32, 0, 83, 153, 252, 221, 119, 223, 5, 236, 219, 72, 50, 224, 231, 192, 247, 222, 123, 47, 201, 34, 40, 203, 219, 84, 187, 201, 4, 204, 10, 2, 48, 149, 201, 169, 184, 223, 84, 202, 145, 105, 216, 50, 206, 77, 181, 155, 76, 108, 172, 32, 0, 83, 153, 124, 217, 178, 101, 153, 186, 76, 236, 252, 213, 87, 95, 77, 44, 111, 149, 25, 155, 106, 55, 153, 152, 89, 65, 0, 38, 50, 249, 166, 77, 155, 148, 237, 1, 152, 105, 32, 34, 231, 184, 103, 160, 234, 181, 8, 69, 202, 33, 59, 142, 137, 118, 147, 141, 145, 241, 4, 80, 80, 80, 0, 184, 26, 176, 105, 225, 95, 255, 250, 23, 169, 42, 45, 90, 180, 136, 84, 121, 100, 20, 166, 188, 188, 28, 10, 11, 11, 101, 136, 34, 43, 195, 120, 2, 24, 58, 116, 40, 32, 9, 152, 20, 112, 251, 175, 231, 159, 127, 158, 84, 149, 158, 123, 238, 185, 196, 198, 35, 168, 2, 2, 237, 6, 73, 192, 228, 96, 60, 1, 152, 216, 142, 195, 49, 248, 95, 124, 241, 5, 41, 187, 60, 112, 224, 0, 188, 253, 246, 219, 164, 202, 36, 163, 48, 38, 218, 79, 38, 46, 198, 19, 128, 137, 237, 56, 106, 238, 127, 218, 160, 168, 150, 43, 93, 190, 48, 71, 19, 237, 39, 19, 7, 38, 128, 76, 52, 52, 56, 199, 239, 254, 175, 188, 242, 10, 201, 146, 46, 94, 188, 24, 112, 12, 189, 73, 129, 9, 64, 115, 109, 154, 230, 194, 189, 252, 242, 203, 208, 220, 220, 76, 82, 43, 39, 78, 156, 128, 37, 75, 150, 144, 44, 91, 216, 66, 153, 102, 63, 217, 56, 176, 7, 144, 141, 8, 241, 255, 212, 221, 108, 234, 229, 11, 170, 94, 211, 61, 0, 227, 167, 3, 127, 249, 229, 151, 198, 76, 87, 221, 191, 127, 63, 224, 87, 13, 156, 133, 71, 53, 224, 14, 204, 123, 246, 236, 49, 230, 211, 43, 218, 143, 201, 179, 2, 141, 246, 0, 112, 62, 183, 73, 115, 213, 159, 125, 246, 89, 210, 15, 63, 146, 82, 123, 123, 59, 152, 52, 38, 160, 180, 180, 20, 138, 139, 139, 169, 242, 109, 228, 114, 25, 77, 0, 103, 159, 125, 118, 100, 128, 168, 8, 192, 111, 255, 243, 231, 207, 167, 82, 28, 207, 114, 252, 253, 239, 127, 7, 44, 175, 41, 193, 228, 102, 128, 209, 4, 96, 146, 226, 176, 135, 125, 223, 190, 125, 90, 60, 83, 117, 117, 117, 100, 191, 84, 132, 1, 208, 36, 59, 202, 174, 191, 209, 4, 96, 82, 15, 238, 99, 143, 61, 150, 173, 59, 210, 255, 117, 43, 175, 23, 152, 38, 217, 81, 118, 61, 141, 38, 0, 83, 152, 27, 151, 253, 214, 109, 206, 253, 170, 85, 171, 96, 203, 150, 45, 217, 246, 166, 229, 127, 83, 236, 40, 23, 248, 70, 19, 128, 41, 204, 173, 235, 219, 244, 175, 127, 253, 107, 46, 155, 211, 238, 154, 41, 118, 148, 11, 120, 163, 63, 3, 110, 223, 190, 29, 134, 15, 31, 158, 171, 222, 218, 92, 59, 122, 244, 104, 106, 66, 10, 213, 193, 63, 94, 64, 226, 134, 172, 123, 247, 238, 213, 254, 75, 12, 218, 209, 200, 145, 35, 189, 170, 170, 237, 61, 99, 61, 0, 83, 54, 120, 252, 199, 63, 254, 65, 118, 228, 159, 159, 213, 183, 180, 180, 192, 130, 5, 11, 252, 162, 145, 191, 143, 77, 0, 28, 223, 96, 98, 48, 214, 3, 40, 43, 43, 211, 166, 215, 220, 205, 176, 112, 192, 207, 57, 231, 156, 3, 187, 119, 239, 118, 139, 66, 254, 122, 69, 69, 5, 124, 254, 249, 231, 218, 79, 201, 70, 123, 194, 25, 143, 166, 5, 51, 105, 13, 0, 76, 104, 183, 225, 184, 127, 157, 31, 126, 124, 88, 240, 147, 32, 126, 194, 212, 61, 152, 96, 79, 185, 116, 96, 44, 1, 232, 222, 115, 139, 35, 234, 238, 191, 255, 254, 92, 58, 211, 238, 218, 125, 247, 221, 151, 26, 33, 168, 93, 193, 51, 10, 172, 187, 61, 101, 84, 165, 211, 169, 177, 4, 160, 59, 99, 227, 138, 63, 181, 181, 181, 157, 148, 165, 235, 159, 109, 219, 182, 193, 11, 47, 188, 160, 107, 241, 83, 229, 214, 221, 158, 220, 192, 55, 150, 0, 116, 102, 108, 220, 104, 227, 222, 123, 239, 117, 211, 153, 150, 215, 177, 62, 58, 111, 32, 162, 179, 61, 121, 25, 140, 177, 4, 160, 51, 99, 207, 157, 59, 23, 62, 251, 236, 51, 47, 189, 105, 119, 111, 199, 142, 29, 240, 200, 35, 143, 104, 87, 238, 116, 129, 117, 182, 167, 116, 29, 114, 29, 141, 253, 10, 128, 227, 230, 177, 231, 86, 183, 128, 15, 254, 15, 126, 240, 3, 104, 109, 109, 213, 173, 232, 190, 229, 237, 214, 173, 91, 106, 116, 224, 176, 97, 195, 124, 227, 82, 139, 128, 246, 100, 226, 2, 161, 70, 122, 0, 221, 187, 119, 79, 109, 153, 77, 205, 136, 252, 202, 131, 29, 127, 51, 103, 206, 52, 242, 225, 199, 186, 159, 60, 121, 18, 110, 187, 237, 54, 112, 28, 199, 15, 10, 114, 247, 241, 101, 130, 118, 101, 90, 48, 146, 0, 42, 43, 43, 181, 28, 184, 241, 232, 163, 143, 194, 59, 239, 188, 99, 154, 141, 117, 170, 207, 91, 111, 189, 5, 127, 250, 211, 159, 58, 93, 211, 225, 15, 14, 44, 195, 197, 88, 76, 11, 70, 18, 128, 142, 237, 181, 141, 27, 55, 194, 31, 254, 240, 7, 211, 236, 43, 103, 125, 238, 190, 251, 110, 88, 191, 126, 125, 206, 123, 148, 47, 234, 104, 87, 126, 120, 26, 73, 0, 186, 245, 216, 54, 54, 54, 194, 180, 105, 211, 180, 238, 37, 247, 51, 180, 204, 251, 109, 109, 109, 112, 211, 77, 55, 37, 190, 179, 113, 102, 153, 68, 206, 117, 179, 43, 145, 58, 49, 1, 136, 160, 164, 48, 14, 182, 135, 167, 79, 159, 110, 92, 175, 191, 31, 100, 248, 85, 0, 73, 64, 167, 254, 0, 38, 0, 63, 173, 18, 185, 175, 147, 171, 246, 240, 195, 15, 3, 14, 249, 181, 49, 224, 254, 6, 58, 125, 26, 212, 201, 174, 130, 216, 19, 118, 201, 26, 245, 219, 180, 105, 147, 163, 67, 120, 231, 157, 119, 156, 130, 130, 2, 163, 176, 15, 106, 75, 88, 127, 196, 65, 135, 176, 113, 227, 70, 227, 116, 101, 228, 56, 128, 250, 250, 122, 232, 221, 187, 119, 16, 18, 140, 61, 46, 238, 237, 119, 241, 197, 23, 195, 193, 131, 7, 99, 207, 155, 90, 134, 3, 7, 14, 132, 13, 27, 54, 144, 31, 183, 209, 208, 208, 0, 37, 37, 37, 212, 224, 139, 84, 30, 227, 250, 0, 112, 25, 112, 234, 15, 63, 174, 152, 123, 195, 13, 55, 240, 195, 127, 218, 116, 15, 29, 58, 4, 83, 167, 78, 5, 236, 28, 164, 28, 208, 174, 250, 246, 237, 75, 185, 136, 129, 203, 102, 28, 1, 232, 208, 78, 195, 207, 125, 107, 214, 172, 9, 172, 44, 147, 19, 172, 91, 183, 14, 230, 204, 153, 67, 190, 138, 58, 216, 87, 16, 16, 141, 35, 0, 234, 61, 181, 56, 195, 239, 143, 127, 252, 99, 16, 29, 89, 19, 23, 59, 68, 169, 47, 36, 74, 221, 190, 130, 26, 139, 113, 4, 64, 153, 161, 113, 168, 239, 175, 127, 253, 107, 242, 174, 110, 80, 35, 146, 21, 31, 155, 70, 56, 20, 26, 113, 162, 26, 40, 219, 87, 24, 204, 140, 35, 0, 202, 12, 253, 228, 147, 79, 194, 218, 181, 107, 195, 232, 201, 154, 52, 31, 124, 240, 1, 60, 245, 212, 83, 100, 235, 75, 217, 190, 194, 128, 102, 28, 1, 80, 101, 104, 156, 8, 131, 43, 227, 112, 240, 71, 224, 158, 123, 238, 33, 59, 33, 138, 170, 125, 249, 163, 154, 59, 134, 113, 4, 64, 149, 161, 241, 173, 102, 226, 162, 146, 185, 205, 42, 218, 85, 252, 68, 186, 112, 225, 194, 104, 66, 20, 165, 166, 106, 95, 97, 171, 107, 212, 56, 128, 46, 93, 186, 0, 46, 69, 93, 88, 88, 24, 22, 15, 37, 233, 112, 117, 95, 156, 3, 143, 171, 227, 114, 16, 67, 0, 223, 180, 56, 92, 184, 160, 160, 64, 44, 65, 76, 177, 240, 83, 37, 238, 119, 64, 121, 139, 246, 32, 80, 24, 229, 1, 224, 130, 13, 212, 30, 126, 84, 70, 117, 117, 53, 63, 252, 65, 172, 18, 0, 118, 238, 220, 73, 114, 53, 97, 180, 175, 33, 67, 134, 4, 172, 13, 221, 232, 70, 17, 0, 213, 246, 217, 162, 69, 139, 232, 90, 0, 225, 146, 61, 247, 220, 115, 36, 75, 71, 213, 206, 194, 128, 101, 20, 1, 80, 108, 159, 29, 59, 118, 12, 222, 124, 243, 205, 48, 186, 177, 62, 205, 242, 229, 203, 1, 183, 70, 163, 22, 40, 218, 89, 88, 140, 152, 0, 194, 34, 39, 152, 14, 55, 197, 208, 121, 53, 92, 193, 106, 42, 137, 134, 184, 225, 140, 65, 106, 129, 9, 128, 154, 70, 78, 151, 135, 162, 107, 102, 235, 84, 95, 89, 38, 242, 210, 75, 47, 201, 18, 37, 77, 14, 69, 59, 11, 91, 57, 163, 60, 0, 106, 138, 193, 158, 98, 30, 248, 19, 214, 52, 255, 159, 238, 189, 247, 222, 35, 215, 227, 78, 205, 206, 162, 32, 108, 20, 1, 80, 115, 205, 112, 220, 63, 78, 33, 229, 16, 30, 1, 92, 46, 237, 227, 143, 63, 14, 47, 64, 65, 74, 106, 118, 22, 165, 138, 198, 16, 64, 207, 158, 61, 97, 192, 128, 1, 81, 176, 144, 158, 150, 223, 254, 114, 32, 165, 134, 35, 174, 95, 80, 84, 84, 36, 167, 114, 9, 75, 49, 134, 0, 40, 186, 101, 53, 53, 53, 9, 171, 215, 140, 236, 169, 17, 0, 162, 138, 75, 207, 155, 16, 152, 0, 20, 106, 209, 148, 205, 61, 21, 66, 36, 36, 154, 34, 142, 20, 95, 56, 66, 96, 102, 69, 50, 134, 0, 168, 181, 203, 112, 181, 91, 28, 205, 198, 33, 58, 2, 255, 253, 239, 127, 163, 11, 145, 44, 129, 154, 189, 133, 173, 30, 19, 64, 88, 228, 124, 210, 225, 132, 150, 19, 39, 78, 248, 196, 226, 219, 34, 8, 52, 53, 53, 193, 145, 35, 71, 68, 162, 198, 22, 135, 9, 32, 54, 168, 197, 50, 162, 230, 146, 241, 196, 31, 49, 189, 137, 198, 162, 230, 5, 80, 179, 55, 81, 28, 179, 227, 177, 7, 144, 141, 136, 164, 255, 76, 0, 146, 128, 60, 45, 134, 26, 158, 236, 1, 200, 213, 111, 36, 105, 184, 113, 35, 53, 133, 236, 223, 191, 63, 82, 157, 56, 113, 103, 4, 112, 123, 110, 74, 1, 61, 0, 180, 59, 221, 131, 17, 30, 0, 126, 151, 237, 209, 163, 7, 41, 93, 80, 156, 196, 66, 10, 160, 128, 133, 193, 73, 85, 148, 2, 218, 27, 181, 113, 39, 97, 240, 49, 130, 0, 40, 182, 199, 152, 0, 194, 152, 163, 123, 26, 138, 120, 82, 180, 59, 119, 4, 115, 223, 49, 130, 0, 168, 185, 255, 8, 53, 181, 55, 86, 110, 245, 235, 115, 149, 34, 158, 20, 237, 46, 168, 70, 141, 32, 0, 138, 76, 76, 241, 141, 21, 212, 56, 40, 197, 167, 136, 39, 69, 187, 11, 170, 51, 35, 8, 128, 34, 19, 227, 254, 132, 28, 228, 33, 192, 30, 128, 60, 44, 51, 37, 25, 65, 0, 20, 153, 184, 185, 185, 57, 19, 103, 62, 143, 136, 0, 46, 246, 74, 45, 80, 180, 187, 160, 24, 25, 65, 0, 20, 61, 0, 234, 27, 93, 6, 53, 148, 164, 227, 83, 92, 85, 137, 162, 221, 5, 213, 147, 246, 4, 128, 171, 180, 150, 149, 149, 5, 173, 183, 242, 248, 76, 0, 114, 33, 166, 136, 39, 174, 14, 220, 181, 107, 87, 185, 21, 141, 89, 154, 246, 4, 128, 211, 50, 113, 63, 0, 106, 129, 162, 193, 82, 195, 40, 72, 121, 40, 226, 137, 118, 87, 81, 81, 17, 164, 26, 228, 226, 106, 79, 0, 84, 219, 97, 184, 209, 37, 7, 121, 8, 80, 36, 0, 172, 29, 85, 251, 19, 69, 94, 123, 2, 160, 218, 14, 163, 106, 176, 162, 134, 65, 45, 30, 85, 60, 169, 218, 159, 168, 254, 180, 223, 26, 108, 220, 184, 113, 48, 118, 236, 88, 209, 250, 198, 22, 239, 195, 15, 63, 36, 189, 205, 117, 108, 64, 72, 202, 40, 63, 63, 31, 170, 170, 170, 36, 73, 147, 39, 6, 87, 125, 194, 133, 75, 117, 13, 218, 19, 128, 174, 192, 115, 116, 198, 188, 136, 0, 0, 0, 44, 73, 68, 65, 84, 185, 25, 1, 10, 8, 104, 223, 4, 160, 0, 34, 151, 129, 17, 208, 21, 1, 38, 0, 93, 53, 199, 229, 102, 4, 36, 32, 192, 4, 32, 1, 68, 22, 193, 8, 232, 138, 192, 255, 0, 16, 3, 16, 9, 122, 152, 50, 183, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130},
)
type hcl_gui struct {
window fyne.Window
Icon fyne.Resource
Settings *xsettings.Settings
dialog_handler string
tabs map[string]*container.TabItem
tabs_container *container.AppTabs
tasks_content *fyne.Container
tasks_tree *widget.Tree
hc_hash_file *widget.Select
hc_hash_type *xwidget.Selector
hc_dictionary_attack_conf *fyne.Container
hc_combinator_attack_conf *fyne.Container
hc_mask_attack_conf *fyne.Container
hc_hybrid1_attack_conf *fyne.Container
hc_hybrid2_attack_conf *fyne.Container
hc_attack_mode *widget.Select
hc_separator *widget.Entry
hc_disable_monitor *widget.Check
hc_devices_types *widget.Select
hc_wordload_profiles *widget.Select
hc_temp_abort *widget.Select
hc_outfile *widget.Select
hc_binary_file_select *widget.Select
hc_status_timer_select *widget.Select
hc_extra_args *widget.Entry
hashcat hashcat
next_task_id int
sessions map[string]*Session
count_sessions_running int
count_sessions_queued int
count_sessions_paused int
count_sessions_failed int
count_sessions_finished int
max_active_sessions_select *widget.Select
max_active_sessions int
autostart_sessions_select *widget.Select
autostart_sessions bool
monitor hcl_gui_monitor
data hcl_data
}
type hcl_data struct {
dictionaries FileList
rules FileList
}
func (hcl_gui *hcl_gui) Pre(app fyne.App) {
fmt.Println("Welcome to hashcat.launcher v"+Version)
hcl_gui.dialog_handler = GetPreference_dialog_handler(app)
hcl_gui.Settings = xsettings.NewSettings()
hcl_gui.sessions = make(map[string]*Session)
hcl_gui.count_sessions_running = 0
hcl_gui.count_sessions_queued = 0
hcl_gui.count_sessions_paused = 0
hcl_gui.count_sessions_failed = 0
hcl_gui.count_sessions_finished = 0
hcl_gui.next_task_id = GetPreference_next_task_id(app)
}
func (hcl_gui *hcl_gui) LoadUI(app fyne.App) {
hcl_gui.monitor.Init()
hcl_gui.Icon = Icon
hcl_gui.window = app.NewWindow("hashcat.launcher v"+Version)
hcl_gui.window.SetIcon(hcl_gui.Icon)
hcl_gui.tabs = map[string]*container.TabItem{
"New Task": container.NewTabItemWithIcon("New Task", theme.ContentAddIcon(), launcherScreen(app, hcl_gui)),
"Tasks": container.NewTabItemWithIcon(fmt.Sprintf("Tasks (%d)", len(hcl_gui.sessions)), theme.MenuIcon(), tasksScreen(hcl_gui)),
"Monitor": container.NewTabItemWithIcon("Monitor", theme.VisibilityIcon(), monitorScreen(hcl_gui)),
"Settings": container.NewTabItemWithIcon("Settings", theme.SettingsIcon(), optionsScreen(app, hcl_gui)),
"About": container.NewTabItemWithIcon("About", theme.InfoIcon(), aboutScreen()),
}
hcl_gui.tabs_container = container.NewAppTabs(
hcl_gui.tabs["New Task"],
hcl_gui.tabs["Tasks"],
hcl_gui.tabs["Monitor"],
hcl_gui.tabs["Settings"],
hcl_gui.tabs["About"],
)
hcl_gui.tabs_container.SetTabLocation(container.TabLocationTop)
hcl_gui.window.SetContent(hcl_gui.tabs_container)
hcl_gui.window.Show()
}
func (hcl_gui *hcl_gui) Post(app fyne.App) {
hcl_gui.hashcat.binary_file = GetPreference_hashcat_binary_file(app)
if _, err := os.Stat(hcl_gui.hashcat.binary_file); err == nil {
hcl_gui.hc_binary_file_select.Selected = hcl_gui.hashcat.binary_file
hcl_gui.hc_binary_file_select.Refresh()
} else {
dialog.ShowError(errors.New("Can't detect hashcat. Please specify hashcat bin/exe file"), hcl_gui.window)
hcl_gui.tabs_container.SelectTab(hcl_gui.tabs["Settings"])
}
hcl_gui.hashcat.args.status_timer = GetPreference_hashcat_status_timer(app)
if hcl_gui.hashcat.args.status_timer == 0 {
hcl_gui.hc_status_timer_select.SetSelected("Disabled")
} else {
hcl_gui.hc_status_timer_select.SetSelected(fmt.Sprintf("%ds", hcl_gui.hashcat.args.status_timer))
}
hcl_gui.hc_extra_args.SetText(GetPreference_hashcat_extra_args(app))
hcl_gui.max_active_sessions = GetPreference_max_active_sessions(app)
hcl_gui.max_active_sessions_select.SetSelected(fmt.Sprintf("%d", hcl_gui.max_active_sessions))
hcl_gui.autostart_sessions = GetPreference_autostart_sessions(app)
if hcl_gui.autostart_sessions == true {
hcl_gui.autostart_sessions_select.SetSelected("Enable")
} else {
hcl_gui.autostart_sessions_select.SetSelected("Disable")
}
hashcat_init(hcl_gui)
}
func (hcl_gui *hcl_gui) Clean() {
for _, session := range hcl_gui.sessions {
session.Process.Kill()
}
}
func NewGUI() (*hcl_gui) {
hcl_gui := &hcl_gui{}
return hcl_gui
}