lanscape 2.3.0b1__tar.gz → 2.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lanscape-2.3.0b1/lanscape.egg-info → lanscape-2.3.1}/PKG-INFO +1 -1
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/net_tools.py +4 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/css/style.css +23 -8
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/core.js +14 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/quietReload.js +3 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/main.html +30 -32
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/config.html +1 -1
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/ip-table-row.html +6 -6
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/ip-table.html +4 -4
- {lanscape-2.3.0b1 → lanscape-2.3.1/lanscape.egg-info}/PKG-INFO +1 -1
- {lanscape-2.3.0b1 → lanscape-2.3.1}/pyproject.toml +1 -1
- {lanscape-2.3.0b1 → lanscape-2.3.1}/LICENSE +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/MANIFEST.in +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/README.md +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/__main__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/app_scope.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/decorators.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/device_alive.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/errors.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/ip_parser.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/logger.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/mac_lookup.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/port_manager.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/runtime_args.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/scan_config.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/service_scan.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/subnet_scan.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/core/version_manager.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/mac_addresses/convert_csv.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/mac_addresses/mac_db.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/convert_csv.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/full.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/large.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/medium.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/small.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/ports/test_port_list_scan.json +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/resources/services/definitions.jsonc +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/app.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/api/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/api/port.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/api/scan.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/api/tools.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/web/__init__.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/blueprints/web/routes.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/main.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/shutdown_handler.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/android-chrome-192x192.png +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/android-chrome-512x512.png +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/apple-touch-icon.png +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/favicon-16x16.png +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/favicon-32x32.png +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/favicon.ico +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/img/ico/site.webmanifest +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/layout-sizing.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/main.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/on-tab-close.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/scan-config.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/shutdown-server.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/subnet-info.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/js/subnet-selector.js +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/static/lanscape.webmanifest +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/base.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/core/head.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/core/scripts.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/error.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/info.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/device-detail.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/export.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/overview.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan/scan-error.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/scan.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape/ui/templates/shutdown.html +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape.egg-info/SOURCES.txt +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape.egg-info/dependency_links.txt +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape.egg-info/entry_points.txt +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape.egg-info/requires.txt +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/lanscape.egg-info/top_level.txt +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/setup.cfg +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_api.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_decorators.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_env.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_globals.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_library.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_logging.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_port_scan.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_port_scan_linux_fd_exhaustion.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_service_scan.py +0 -0
- {lanscape-2.3.0b1 → lanscape-2.3.1}/tests/test_utils.py +0 -0
|
@@ -98,6 +98,10 @@ class Device(BaseModel):
|
|
|
98
98
|
if self.alive:
|
|
99
99
|
self.hostname = self._get_hostname()
|
|
100
100
|
self._get_mac_addresses()
|
|
101
|
+
if not self.manufacturer:
|
|
102
|
+
self.manufacturer = self._get_manufacturer(
|
|
103
|
+
self.get_mac()
|
|
104
|
+
)
|
|
101
105
|
|
|
102
106
|
# Fallback for pydantic v1: use dict() and enrich output
|
|
103
107
|
if not _PYD_V2:
|
|
@@ -66,13 +66,16 @@ body:has(.submodule) footer {
|
|
|
66
66
|
|
|
67
67
|
#header {
|
|
68
68
|
background-color: var(--primary-bg);
|
|
69
|
-
padding: 8px
|
|
69
|
+
padding: 8px 2%;
|
|
70
70
|
margin: 0;
|
|
71
71
|
display: block;
|
|
72
72
|
position: relative;
|
|
73
73
|
box-shadow: 0 0 10px var(--box-shadow);
|
|
74
74
|
width: 100vw;
|
|
75
75
|
}
|
|
76
|
+
#header .title {
|
|
77
|
+
font-size: 36px;
|
|
78
|
+
}
|
|
76
79
|
|
|
77
80
|
footer {
|
|
78
81
|
position: sticky;
|
|
@@ -163,7 +166,12 @@ details {
|
|
|
163
166
|
|
|
164
167
|
|
|
165
168
|
#scan-form {
|
|
166
|
-
width:
|
|
169
|
+
width: 60vw;
|
|
170
|
+
margin: 0;
|
|
171
|
+
min-width: 300px;
|
|
172
|
+
max-width: 700px;
|
|
173
|
+
}
|
|
174
|
+
#scan-form .form-group {
|
|
167
175
|
margin: 0;
|
|
168
176
|
}
|
|
169
177
|
#scan-form label {
|
|
@@ -304,6 +312,9 @@ details {
|
|
|
304
312
|
}
|
|
305
313
|
#advanced-modal label {
|
|
306
314
|
font-size: 12px;
|
|
315
|
+
text-overflow: ellipsis;
|
|
316
|
+
overflow: hidden;
|
|
317
|
+
white-space: nowrap;
|
|
307
318
|
}
|
|
308
319
|
#advanced-modal .form-check {
|
|
309
320
|
width: fit-content;
|
|
@@ -447,8 +458,10 @@ button {
|
|
|
447
458
|
|
|
448
459
|
#scan-form #scan-submit {
|
|
449
460
|
border: none;
|
|
450
|
-
padding: 10px
|
|
451
|
-
margin
|
|
461
|
+
padding: 10px 3%;
|
|
462
|
+
margin: 0 15px;
|
|
463
|
+
min-width: 55px;
|
|
464
|
+
height: 42px;
|
|
452
465
|
}
|
|
453
466
|
|
|
454
467
|
/* Button Styling */
|
|
@@ -657,10 +670,6 @@ input[type="range"] {
|
|
|
657
670
|
.table thead tr th.detail-col
|
|
658
671
|
{
|
|
659
672
|
width: 30px;
|
|
660
|
-
/*
|
|
661
|
-
background-color: var(--body-bg);
|
|
662
|
-
border: 1px solid var(--text-almost-hidden);
|
|
663
|
-
*/
|
|
664
673
|
}
|
|
665
674
|
.table td:has(.info-icon-container) {
|
|
666
675
|
width: 30px;
|
|
@@ -709,6 +718,12 @@ input[type="range"] {
|
|
|
709
718
|
span.alt {
|
|
710
719
|
color: var(--text-accent-color);
|
|
711
720
|
}
|
|
721
|
+
span.no-wrap {
|
|
722
|
+
white-space: nowrap;
|
|
723
|
+
overflow: hidden;
|
|
724
|
+
text-overflow: ellipsis;
|
|
725
|
+
display: block;
|
|
726
|
+
}
|
|
712
727
|
.colorful-buttons a{
|
|
713
728
|
margin:2px;
|
|
714
729
|
color: var(--text-color);
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
$(document).ready(function() {
|
|
2
2
|
rightSizeDocLayout(0,showFooter);
|
|
3
3
|
initTooltips();
|
|
4
|
+
adjustNoWrap();
|
|
4
5
|
})
|
|
5
6
|
|
|
6
7
|
$(window).on('resize', function() {
|
|
7
8
|
rightSizeDocLayout();
|
|
9
|
+
adjustNoWrap();
|
|
8
10
|
});
|
|
9
11
|
|
|
10
12
|
|
|
@@ -36,4 +38,16 @@ function initTooltips() {
|
|
|
36
38
|
tooltipTriggerList.map(function (tooltipTriggerEl) {
|
|
37
39
|
return new bootstrap.Tooltip(tooltipTriggerEl)
|
|
38
40
|
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
An imperfect approach to adjusting
|
|
45
|
+
text field width within a table
|
|
46
|
+
*/
|
|
47
|
+
function adjustNoWrap() {
|
|
48
|
+
$('.no-wrap').width(0);
|
|
49
|
+
$('.no-wrap').each(function() {
|
|
50
|
+
var parentWidth = $(this).parent().width();
|
|
51
|
+
$(this).width(parseInt(parentWidth));
|
|
52
|
+
});
|
|
39
53
|
}
|
|
@@ -8,6 +8,9 @@ function quietReload() {
|
|
|
8
8
|
var newDoc = new DOMParser().parseFromString(data, 'text/html');
|
|
9
9
|
// replace current body with the new body content
|
|
10
10
|
$('body').html($(newDoc.body).html());
|
|
11
|
+
if (typeof adjustNoWrap === 'function') {
|
|
12
|
+
adjustNoWrap();
|
|
13
|
+
}
|
|
11
14
|
});
|
|
12
15
|
}
|
|
13
16
|
setTimeout(function() {
|
|
@@ -3,45 +3,43 @@
|
|
|
3
3
|
{% block content %}
|
|
4
4
|
<div id="header">
|
|
5
5
|
<!-- Header and Scan Submission Inline -->
|
|
6
|
-
<div class="d-flex justify-content-between align-items-center flex-
|
|
6
|
+
<div class="d-flex justify-content-between align-items-center flex-wrap">
|
|
7
7
|
<a href="/" class="text-decoration-none" aria-label="Go to homepage">
|
|
8
8
|
<h1 class="title">
|
|
9
9
|
<span>LAN</span>scape
|
|
10
10
|
</h1>
|
|
11
11
|
</a>
|
|
12
12
|
<!-- Right side: settings + form -->
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
<div id="subnet-info"></div>
|
|
20
|
-
</div>
|
|
21
|
-
<!-- Subnet input with dropdown -->
|
|
22
|
-
<div class="input-group">
|
|
23
|
-
<button
|
|
24
|
-
type="button"
|
|
25
|
-
id="settings-btn"
|
|
26
|
-
class="btn btn-secondary start"
|
|
27
|
-
data-bs-toggle="tooltip"
|
|
28
|
-
data-bs-placement="bottom"
|
|
29
|
-
title="Advanced scan settings"
|
|
30
|
-
>
|
|
31
|
-
<i class="fa-solid fa-gear"></i>
|
|
32
|
-
</button>
|
|
33
|
-
<input type="text" id="subnet" name="subnet" class="form-control" value="{{ subnet }}" placeholder="Enter subnet">
|
|
34
|
-
<button class="btn btn-secondary dropdown-toggle end" type="button" id="subnet-dropdown" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
|
35
|
-
<ul class="dropdown-menu" aria-labelledby="subnet-dropdown" id="dropdown-list">
|
|
36
|
-
{% for subnet_option in alternate_subnets %}
|
|
37
|
-
<li><a class="dropdown-item" href="#">{{ subnet_option['subnet'] }}</a></li>
|
|
38
|
-
{% endfor %}
|
|
39
|
-
</ul>
|
|
40
|
-
</div>
|
|
13
|
+
<form id="scan-form" class="d-flex align-items-end">
|
|
14
|
+
<div class="form-group me-2">
|
|
15
|
+
<!-- Above subnet input -->
|
|
16
|
+
<div class="label-container">
|
|
17
|
+
<label for="subnet">Subnet:</label>
|
|
18
|
+
<div id="subnet-info"></div>
|
|
41
19
|
</div>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
20
|
+
<!-- Subnet input with dropdown -->
|
|
21
|
+
<div class="input-group">
|
|
22
|
+
<button
|
|
23
|
+
type="button"
|
|
24
|
+
id="settings-btn"
|
|
25
|
+
class="btn btn-secondary start"
|
|
26
|
+
data-bs-toggle="tooltip"
|
|
27
|
+
data-bs-placement="bottom"
|
|
28
|
+
title="Advanced scan settings"
|
|
29
|
+
>
|
|
30
|
+
<i class="fa-solid fa-gear"></i>
|
|
31
|
+
</button>
|
|
32
|
+
<input type="text" id="subnet" name="subnet" class="form-control" value="{{ subnet }}" placeholder="Enter subnet">
|
|
33
|
+
<button class="btn btn-secondary dropdown-toggle end" type="button" id="subnet-dropdown" data-bs-toggle="dropdown" aria-expanded="false"></button>
|
|
34
|
+
<ul class="dropdown-menu" aria-labelledby="subnet-dropdown" id="dropdown-list">
|
|
35
|
+
{% for subnet_option in alternate_subnets %}
|
|
36
|
+
<li><a class="dropdown-item" href="#">{{ subnet_option['subnet'] }}</a></li>
|
|
37
|
+
{% endfor %}
|
|
38
|
+
</ul>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
<button type="submit" id="scan-submit" class="btn btn-primary">Scan</button>
|
|
42
|
+
</form>
|
|
45
43
|
</div>
|
|
46
44
|
|
|
47
45
|
<div id="scan-progress-bar"></div>
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
</div>
|
|
95
95
|
<div class="col-1 descriptor">=</div>
|
|
96
96
|
<div class="col-3">
|
|
97
|
-
<label for="total-ping-attempts">Max pings per device</label>
|
|
97
|
+
<label for="total-ping-attempts" id="tpa-label">Max pings per device</label>
|
|
98
98
|
<input type="number" id="total-ping-attempts" class="form-control" readonly>
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
@@ -7,20 +7,20 @@
|
|
|
7
7
|
></i>
|
|
8
8
|
</div>
|
|
9
9
|
</td>
|
|
10
|
-
<td>
|
|
10
|
+
<td class="ip">
|
|
11
11
|
<div>{{ device.ip }}</div>
|
|
12
12
|
{% if device.hostname %}
|
|
13
|
-
<
|
|
13
|
+
<span class="alt no-wrap">{{device.hostname}}</span>
|
|
14
14
|
{% endif %}
|
|
15
15
|
</td>
|
|
16
|
-
<td>
|
|
16
|
+
<td class="mac">
|
|
17
17
|
<div>{{ device.mac_addr or 'Unknown' }}</div>
|
|
18
18
|
{% if device.manufacturer %}
|
|
19
|
-
<
|
|
19
|
+
<span class="alt no-wrap">{{device.manufacturer}}</span>
|
|
20
20
|
{% endif %}
|
|
21
21
|
</td>
|
|
22
|
-
<td>{{ device.ports | join(", ") }}</td>
|
|
23
|
-
<td>
|
|
22
|
+
<td class="ports">{{ device.ports | join(", ") }}</td>
|
|
23
|
+
<td class="stage">
|
|
24
24
|
{% if device.stage == 'complete' %}
|
|
25
25
|
<span class="badge badge-success">complete</span>
|
|
26
26
|
{% elif device.stage == 'found' %}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
<thead>
|
|
10
10
|
<tr>
|
|
11
11
|
<th class="detail-col" scope="col"></th>
|
|
12
|
-
<th scope="col">IP / <span class="alt">Host</span></th>
|
|
13
|
-
<th scope="col">MAC / <span class="alt">Manufacturer</span></th>
|
|
14
|
-
<th scope="col">Open Ports</th>
|
|
15
|
-
<th scope="col">Stage</th>
|
|
12
|
+
<th class="ip" scope="col">IP / <span class="alt">Host</span></th>
|
|
13
|
+
<th class="mac" scope="col">MAC / <span class="alt">Manufacturer</span></th>
|
|
14
|
+
<th class="ports" scope="col">Open Ports</th>
|
|
15
|
+
<th class="stage" scope="col">Stage</th>
|
|
16
16
|
</tr>
|
|
17
17
|
</thead>
|
|
18
18
|
<tbody>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|