Commit Graph

1501 Commits

Author SHA1 Message Date
Friedemann Kleint
1b9be30371 Clean headers in lib qmljs and plugins qmljstools, qmljseditor.
Change-Id: I3256db8f4d42b6326d986d754b45e6c6c2030839
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-03-05 08:17:10 +00:00
hjk
46d515529a Tests: Use real project dependencies in memcheck test
Change-Id: Iced26e5b2a4a4ba5e1075e19eeffe96b2e298d0f
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-03-04 14:03:29 +00:00
Christian Stenger
9a798af144 Tests: Fix valgrind test
Change-Id: I5e05575d0858ef1b8e2d5b3fb8b00b006a11c065
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-03-02 14:59:40 +00:00
Orgad Shaneh
79525981dc Tests: Refix MSVC warnings for valgrind tests
Fix in 5a5acd664e was incomplete.

Change-Id: I36a0666d2a6a8ccb514ebf612fbac2eded150102
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-03-02 09:53:14 +00:00
Orgad Shaneh
d63624afe0 C++: Accept language features in BackwardsScanner et al
Change-Id: Id97ca27fa909979573efca12dc0cd14b28eacd17
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-27 15:11:14 +00:00
Francois Ferrand
1336502f58 C++: fix parsing nested C99 designated initializers.
Change-Id: Iaa0e7550abf6be77601b1852652bb3d0731d0323
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-27 14:49:55 +00:00
Przemyslaw Gorszkowski
9e513774b1 C++: resolved self-value reference for enum
Added support for resolving case:
enum E
{
  val1,
  val2 = val1, // val2-4 are not resolved
  val3,
  val4
};

Task-number: QTCREATORBUG-13932
Change-Id: I122c5eb0b0397d6c02bc3db0a5c1ea1c28c5c6e7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-25 15:01:02 +00:00
hjk
c992a9ff08 Debugger: Add dumpers for QPolygon{,F} and QGraphicsPolygonItem
Change-Id: Ic246b28d44312a677c8d41194d4e0c324bda125d
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-02-24 14:48:33 +00:00
Christian Kandeler
05f8a2c813 qbs build: Introduce convenience project property sharedSourcesDir.
Change-Id: I69aacc7391e6e25e66eae1fb54b3c1cfb18679ee
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-18 14:49:06 +00:00
Orgad Shaneh
b6de2d1bd8 QmlDesigner: Remove unneeded qualifications
Mostly done using the following ruby script:
Dir.glob('**/*.cpp').each { |file|
  next if file =~ %r{src/shared/qbs|/qmljs/}
  s = File.read(file)
  s.scan(/^using namespace (.*);$/) {
    ns = $1
    t = s.gsub(/^(.*)\b#{ns}::((?!Const)[A-Z])/) { |m|
      before = $1
      char = $2
      if before =~ /"|\/\/|\\|using|SIGNAL|SLOT|Q_/
        m
      else
        before + char
      end
    }
    if t != s
      puts file
      File.open(file, 'w').write(t)
    end
  }
}

Change-Id: I492792bb9e5655c55795e938031efc557c9a462f
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
2015-02-18 09:53:25 +00:00
Adam Strzelecki
425811291d C++: Basic support for C++11 user-defined literals
1. Extends lexer so digit or string can be followed by underscore '_' and
   alphanumeric defining literal.

2. Extends parser so it accepts operator"" _abc(...) user-defined literal
   definition.

3. Adds Token::Flags.userDefinedLiteral bool flag field representing if token
   carries user-defined literal.

4. Adds C++11 auto tests case with: 12_km, 0.5_Pa, 'c'_X, "abd"_L, u"xyz"_M

5. All optional suffix scanning methods now return boolean if the suffix was
   found.

6. Adds C++ Lexer tests for user-defined literals with C++11 feature enabled.

This change however does not make QtCreator understand user-defined literal
semantics, e.g. properly resolve type when applying custom literal operator.

Change-Id: I30e62f025ec9fb11c39261985ea4d772b1a80949
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-17 09:45:34 +00:00
hjk
5699991a2f Debugger: Remove traces of old autotests
Dysfuncional for a while and mostly replaced by tst_dumper.

Change-Id: I8266f2a680be23bd37d29233b91ce5a9a151163b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-02-17 08:34:59 +00:00
Orgad Shaneh
88e7f935f4 ProjectExplorer: Use FileName for Node::path
Change-Id: I4a41cfb629be8bb06b4b0616cd4475525e617a51
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-02-13 13:14:03 +00:00
Eike Ziller
56aadc407d Merge remote-tracking branch 'origin/3.3'
Conflicts:
	src/plugins/debugger/watchhandler.cpp
	src/plugins/projectexplorer/kitmodel.cpp
	src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
	src/shared/qbs

Change-Id: I6a68090993a264e93ac7850858cc24ba6bdb5602
2015-02-12 17:36:29 +01:00
Eike Ziller
9926fc2ab1 Merge commit '3c85058694ee2e41658d17f524fb48f0b187d2fe'
Conflicts:
	src/libs/utils/tooltip/tipcontents.cpp
	src/libs/utils/tooltip/tipcontents.h
	src/plugins/android/androiddeployqtstep.cpp
	src/plugins/baremetal/baremetalconstants.h
	src/plugins/baremetal/baremetaldevice.cpp
	src/plugins/baremetal/baremetaldevice.h
	src/plugins/baremetal/baremetaldeviceconfigurationwidget.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwidget.h
	src/plugins/baremetal/baremetaldeviceconfigurationwizard.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.cpp
	src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.h
	src/plugins/baremetal/baremetalplugin.cpp
	src/plugins/baremetal/baremetalplugin.h
	src/plugins/baremetal/baremetalruncontrolfactory.cpp
	src/plugins/baremetal/baremetalruncontrolfactory.h
	src/plugins/cppeditor/cppcodemodelinspectordialog.cpp
	src/plugins/cppeditor/cppdoxygen_test.cpp
	src/plugins/cppeditor/cppdoxygen_test.h
	src/plugins/debugger/breakpointmarker.cpp
	src/plugins/debugger/debuggeritemmodel.cpp
	src/plugins/debugger/debuggeritemmodel.h
	src/plugins/debugger/loadcoredialog.cpp
	src/plugins/genericprojectmanager/cppmodelmanagerhelper.cpp
	src/plugins/projectexplorer/addnewmodel.cpp
	src/plugins/projectexplorer/addnewmodel.h
	src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp
	src/plugins/qmlprofiler/abstracttimelinemodel.cpp
	src/plugins/qmlprofiler/abstracttimelinemodel.h
	src/plugins/qmlprofiler/notesmodel.cpp
	src/plugins/qmlprofiler/qml/CategoryLabel.qml
	src/plugins/qmlprofiler/qml/MainView.qml
	src/plugins/qmlprofiler/qml/Overview.js
	src/plugins/qmlprofiler/qml/Overview.qml
	src/plugins/qmlprofiler/qml/TimeDisplay.qml
	src/plugins/qmlprofiler/qml/TimeMarks.qml
	src/plugins/qmlprofiler/qmlprofilertimelinemodelproxy.cpp
	src/plugins/qmlprofiler/sortedtimelinemodel.cpp
	src/plugins/qmlprofiler/sortedtimelinemodel.h
	src/plugins/qmlprofiler/timelinemodelaggregator.cpp
	src/plugins/qmlprofiler/timelinemodelaggregator.h
	src/plugins/qmlprofiler/timelinerenderer.cpp
	src/plugins/qmlprofiler/timelinerenderer.h
	src/plugins/qmlprojectmanager/QmlProjectManager.json.in
	src/plugins/texteditor/findinfiles.cpp
	src/plugins/vcsbase/vcsconfigurationpage.cpp
	src/shared/qbs
	src/shared/scriptwrapper/interface_wrap_helpers.h
	src/shared/scriptwrapper/wrap_helpers.h
	tests/auto/qmlprofiler/abstracttimelinemodel/tst_abstracttimelinemodel.cpp
	tests/system/suite_debugger/tst_debug_empty_main/test.py
	tests/system/suite_debugger/tst_qml_js_console/test.py
	tests/system/suite_debugger/tst_qml_locals/test.py

Change-Id: I67540b648f8b162496f4aa606b04d50c7c9125c6
2015-02-12 17:29:21 +01:00
Nikolai Kosjar
921ec6da5a C++: Cache parsing of template ids
...in order to stop memory intensive parsing for invalid code.

Parsing the test data/snippet "hard" led to a memory consumption of
about 5.5MB and this could easily get up to hundreds/gigabytes by adding
some more "if_<bool_<true>,\n" lines. With the caching, we are at about
1.0MB, even if more lines are added.

The "memory consumption" was measured with valgrind-massif. The stated
numbers are the reported peaks.

Task-number: QTCREATORBUG-12890
Change-Id: Ie7eb00cfc7915552d29bb27410a6b13a486f486e
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-02-12 10:40:14 +00:00
Nikolai Kosjar
ae3aa07c4d C++: Remove workaround for crashing if parsing invalid code
This reverts the changes

    commit beac7b9539
    C++: Fix highlighting after "invalid code"

    commit 78ab287fc6
    C++: Stop parsing a declaration after two tries

which were a work around for QTCREATORBUG-12890.

A follow-up patch provides a proper fix.

Task-number: QTCREATORBUG-12890
Change-Id: I2650a8e41c8ff1180cad9f069e463fc51bd2f1b1
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-02-12 10:39:51 +00:00
hjk
9df463da84 Debugger: Convert bb extension to use runCommand
Change-Id: I528c51d2b02dccd91429778ef8c940fe5565345f
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-02-12 10:27:33 +00:00
hjk
875d889082 Debugger: Move bbsetup over to runCommand()
Change-Id: I0a19b28d24cb570651ea84bf7cdbc9a761f85a0b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-02-12 07:19:48 +00:00
Orgad Shaneh
74ed591db3 Misc: Remove unneeded qualifications
Mostly done using the following ruby script:
Dir.glob('**/*.cpp').each { |file|
  next if file =~ %r{src/shared/qbs|/qmljs/}
  s = File.read(file)
  s.scan(/^using namespace (.*);$/) {
    ns = $1
    t = s.gsub(/^(.*)\b#{ns}::((?!Const)[A-Z])/) { |m|
      before = $1
      char = $2
      if before =~ /"|\/\/|\\|using|SIGNAL|SLOT|Q_/
        m
      else
        before + char
      end
    }
    if t != s
      puts file
      File.open(file, 'w').write(t)
    end
  }
}

Change-Id: I919da493d0629b719d328e5e71c96a29d230dfd1
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-02-06 12:20:28 +00:00
Ulf Hermann
d2070c8fc8 Timeline: test TimelineItemsRenderPass
Change-Id: I324a9a1733d1d0a38bf73c8178d5a97cd60c25c1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-04 16:16:19 +00:00
Orgad Shaneh
65e7db42b8 C++: Remove unneeded qualifications
Mostly done using the following ruby script:
Dir.glob('**/*.cpp').each { |file|
  next if file =~ %r{src/shared/qbs|/qmljs/}
  s = File.read(file)
  s.scan(/^using namespace (.*);$/) {
    ns = $1
    t = s.gsub(/^(.*)\b#{ns}::((?!Const)[A-Z])/) { |m|
      before = $1
      char = $2
      if before =~ /"|\/\/|\\|using|SIGNAL|SLOT|Q_/
        m
      else
        before + char
      end
    }
    if t != s
      puts file
      File.open(file, 'w').write(t)
    end
  }
}

Change-Id: I6fbe13ddc1485efe95c3156097bf41d90c0febac
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-04 15:27:22 +00:00
Orgad Shaneh
75a943ef57 C++: Fix crash when #if[def] nesting is deeper than 512 levels
Change-Id: I5e86da3a36514545834f554470b147ad8be43344
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-03 12:03:29 +00:00
Orgad Shaneh
156228aeb8 Tests: Break trigraphs
Change-Id: I9bc0e5f6080adfb518ff6e4d22052013728e6458
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-03 10:10:37 +00:00
Orgad Shaneh
349f415067 Valgrind: Replace QDir::separator with slash
Change-Id: I8f8192dc065702cb1c6bb218b8d992bb9775cd10
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-02-02 08:43:04 +00:00
hjk
aa39916c41 Debugger: Invert LLDB/Python startup order
Instead of starting LLDB through a Python script this now starts
LLDB directly. This did not work a while ago but seems fine nowaday.

Change-Id: I20e915070cd6addf260817c311f4160d010aa861
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-30 15:35:20 +00:00
hjk
e0842b2d3f Debugger: Test compile fix
Change-Id: Ice03e5fd61970f86b99ce3b9122acb5ae0eb2cea
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-29 15:47:39 +00:00
Ulf Hermann
c6628f7ee3 Timeline: Add exception for parenting ranges with equal start times
Also, in contrast to the 5 previous times this piece of code has been
broken and fixed, this time add an elaborate comment about the problem
and a test case to check for future regressions.

Change-Id: I2babf7c6e98d7ab12ee53362229f30f6d9e5d7d5
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-01-29 15:20:48 +00:00
Christian Stenger
4780f0edbf Tests: Fix offsets test for Qt5.4
Change-Id: I1517bfbde852af5db7088fa21b33a27e20f2db61
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-29 12:04:43 +00:00
hjk
e9237c20c6 Debugger: Work on LLDB auto-test on Linux
Write the full command to a temporary file for easier re-use.
Un-ignore the first stop, this does not seem to be needed in
the new async setup.

In some cases LLDB is not able to extract the even the top most
frame of the stopped thread (happened 2 out of 100 runs of the
QDateTime dumper). It's unclear why. For now just report the fact.

Change-Id: I76a63bc288f1ae6f5bd9b9604a47f051912b93d7
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-28 16:29:10 +00:00
Orgad Shaneh
97d957e3e3 Utils: Introduce FileName::fileName()
* Replacement for QFileInfo::fileName()
* Supports additional path components

Change-Id: I2b3e3dfb02617c8f98f1d67e16396bed97f97526
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-01-28 11:42:41 +00:00
hjk
962649317b Debugger: Make LLDB autotest produce output on Linux again
Change-Id: I0ea21b248b51a871753f66e386fd125df1d1ead5
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-26 22:09:24 +01:00
Christian Kandeler
cdc6d45a8a qbs build: Add the possibility to include additional autotests.
For plugins that don't live in the main repo.

Change-Id: Iebe4b05bfb60f86531ec82a4ae555fdfaac39ead
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-01-26 12:38:10 +01:00
hjk
e2f12fa02b Debugger: Fix gdb auto tests
cca10304 made dumper detection lazier, the bbsetup needs now to
be trigger separately.

Change-Id: I7f78c5e4b3a6981dbd1c292654a48eac0b5b58e7
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-23 18:45:50 +01:00
Nikolai Kosjar
56dab9e931 C++: Check for cycled parents
In the struct _Wrap_alloc (see test code) the rebind struct has
_Wrap_alloc as parent. However, within rebind the typedef of type
_Wrap_alloc has rebind as parent.

We will refactor that in master by introducing a "parent iterator"
class checking for cycles, so the client code looks less noisy.

Task-number: QTCREATORBUG-13703
Change-Id: I7b6cf819ea869139d2403e15ba085d8fba19763e
Reviewed-by: Cristian Adam <cristian.adam@gmail.com>
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-01-23 11:41:36 +01:00
Christian Stenger
642dc36ecb Tests: Fix valgrind tests
Issue was introduced with 5a5acd664e

Change-Id: I30ed199e7471cbb71bd185c6a6e1db223339da75
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-21 14:10:25 +01:00
Orgad Shaneh
c24ffc4dee C++: Expand arguments in nested function-like macros
Task-number: QTCREATORBUG-13219
Change-Id: I319fe39d696ccc28230d421b1395faf4dd452b03
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-01-21 13:23:38 +01:00
Orgad Shaneh
8ab7f673d0 Fix qbs build
Change-Id: I8f3aeee7c45cffb839bc44109da107ee6b91c1ad
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-01-19 14:00:55 +01:00
hjk
7fec1199f3 Tests: Add a basic tree model iteration test
Change-Id: I6b4dff0909e87ab727cb8c5b5be6f6c25b687bf0
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-16 14:57:16 +01:00
hjk
4f6279256d Tests: Move auto/utils_stringutils to auto/utils/stringutils
Change-Id: I475a5914f3b65656dc12cf7619bfed34e9fc8b74
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-16 13:32:41 +01:00
Eike Ziller
3c85058694 Update License
Change-Id: I711d5fb475ef814a1dc9d2822740e827f3f67125
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2015-01-16 12:37:56 +01:00
Orgad Shaneh
50a5056b10 Fix test compilation
Change-Id: Iac9aa792c65c8d35b16ea23d9e20d909ef59eec6
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-16 08:06:30 +01:00
hjk
fdc260f14f Debugger: Work around clang limitation in auto test
Clang 3.5 runs out of memory when trying to optimize
tst_Dumpers::dumper_data. So don't optimize.

This is a backport of 58c694577f.

Change-Id: Ia81aa6e491e132ee04bb51e9d443e836b5a7635a
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-14 11:07:00 +01:00
hjk
58c694577f Debugger: Work around clang limitation in auto test
Clang 3.5 runs out of memory when trying to optimize
tst_Dumpers::dumper_data. So don't optimize.

Change-Id: Ic81aa6e491e132ee04bb51e9d443e836b5a7635a
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-14 10:46:27 +01:00
Przemyslaw Gorszkowski
9e159d87a8 C++: display enum value in tooltip for simplest case
If it is possible lets calculate enum value for the simplest case.
Example where it works:
enum
{
  enum_val1, // tooltip = "enum_val1 = 0"
  enum_val2 // tooltip = "enum_val2 = 1"
};

enum
{
  enum_val1=10, // tooltip = "enum_val1 = 10"
  enum_val2 // tooltip = "enum_val2 = 11"
};

enum
{
  enum_val1, // tooltip = "enum_val1 = 0"
  enum_val2=10, // tooltip = "enum_val2 = 10"
  enum_val3 // tooltip = "enum_val3 = 11"
};

Example where it does not work:
enum
{
  enum_val1=10+1, // tooltip = "enum_val1 = 10+1"
  enum_val2 // tooltip = "enum_val2"
};

Task-number: QTCREATORBUG-4529
Change-Id: Idd85ed7304018f73f2b068bf1ac28f1abde02f93
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-01-14 08:10:58 +01:00
Christian Kandeler
90a2665737 Generic highlighter: Fix autotest build for qbs.
Change-Id: I2cae3d3256820f34d6d3bd7a8a9701c68cad1c53
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-01-13 16:04:40 +01:00
Orgad Shaneh
5a5acd664e Tests: Fix MSVC warnings
Change-Id: If7f67ffc68ef725554e9ebaf8a8db5a64b7309cb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-13 12:08:13 +01:00
Nikita Baryshnikov
20e4f62eb3 Fix linker error in HighlighterEngine test
Complains on highlighter.cpp:213: error: undefined reference to
`Core::MessageManager::write(QString const&,
QFlags<Core::MessageManager::PrintToOutputPaneFlag>)'

Change-Id: I296a105a8322e8b6ac1ab4a7085500f76acfcdeb
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-01-12 15:22:11 +01:00
Orgad Shaneh
e62e47f0d0 Tests: Cleanup FileUtils test
QTestData converts raw string as Utf8.

Change-Id: I201f283ce16732dfc85927fdcc9bb15c230ec16f
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-01-12 12:03:37 +01:00
Eike Ziller
b5b47f7df2 Merge remote-tracking branch 'origin/3.3'
Conflicts:
	src/plugins/cppeditor/cppdocumentationcommenthelper.cpp

Change-Id: I2cf25eba1de149765a6c44ad354d606ce9de512d
2015-01-08 10:38:20 +01:00