summaryrefslogtreecommitdiff
path: root/desktop
AgeCommit message (Collapse)AuthorFilesLines
2013-03-05Merge branch 'distro/suse/suse-3.6' of ssh://logerrit/core into suse-3.6Petr Mladek2-2/+2
2013-03-04Cleanly remove components from rdb again that fail during live insertionStephan Bergmann1-4/+18
Such failure happens e.g. for components that bring along duplicate UNO implementation names, and if they ever got added to an rdb, LO would afterwards refuse to start forever. Change-Id: Ia62ac496547a45f5a72fdc81543f15a417c09687 (cherry picked from commit 2a31dd4025eff8d09ab207f31bacc0a5b8c36bd9) Reviewed-on: https://gerrit.libreoffice.org/1996 Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
2013-03-04Merge tag 'libreoffice-3.6.5.2' into suse-3.6Petr Mladek4-14/+57
Tag libreoffice-3.6.5.2 Conflicts: editeng/source/editeng/impedit3.cxx instsetoo_native/util/openoffice.lst oovbaapi/UnoApi_oovbaapi.mk sc/source/filter/oox/workbookhelper.cxx sc/source/ui/app/scmod.cxx sc/source/ui/cctrl/checklistmenu.cxx solenv/inc/minor.mk writerfilter/source/dmapper/DomainMapper_Impl.cxx writerfilter/source/dmapper/DomainMapper_Impl.hxx writerfilter/source/dmapper/PropertyMap.cxx Change-Id: I7ea70b82b3b874cbe78354d5dd97307e63842e72
2013-03-04Make LO buildable again after the GraphicFilter move.Jan Holesovsky2-2/+2
Conflicts: cui/source/dialogs/SpellDialog.cxx editeng/source/items/frmitems.cxx filter/qa/cppunit/filters-pict-test.cxx sd/source/filter/grf/sdgrffilter.cxx sd/source/ui/app/sddll.cxx svgio/source/svgreader/svgimagenode.cxx svtools/Library_svt.mk svtools/Module_svtools.mk svtools/Package_inc.mk svtools/source/filter/exportdialog.cxx svx/source/core/graphichelper.cxx svx/source/dialog/compressgraphicdialog.cxx sw/source/ui/shells/grfshex.cxx sw/source/ui/uiview/view2.cxx sw/source/ui/utlui/glbltree.cxx test/source/bootstrapfixture.cxx tubes/source/contacts.cxx vcl/Library_vcl.mk vcl/qa/cppunit/graphicfilter/filters-test.cxx vcl/source/filter/FilterConfigCache.cxx vcl/source/filter/graphicfilter.cxx writerfilter/source/rtftok/rtfdocumentimpl.cxx Change-Id: I3455a7294b136400f32163626d5a7a7f2bfa898c
2013-01-09Resolves: rhbz#838368 --view ignored while -view acceptedCaolán McNamara1-2/+2
and our ooviewdoc script uses --view Change-Id: Ice708f1c72c8d29d411ba21e93cb19876af13881 Signed-off-by: Petr Mladek <pmladek@suse.cz>
2013-01-07fdo#57203 Unknown option: -EmbeddingAurimas Fišeras1-0/+9
Ignore this option on Windows. This work-arounds a regression introduced by f4a4ba9ac Windows appends -Embedding when LibreOffice is called by COM+ Before f4a4ba9ac this option was silently ignored. Change-Id: I8a727895c9ec8fa4b06aea8ad66b2791ada66dd5 Reviewed-on: https://gerrit.libreoffice.org/1514 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 3616640054f4fc18c6e7307ba17e7d89a0f5ae69) Conflicts: desktop/source/app/cmdlineargs.cxx (cherry picked from commit abf0ed8400d7787fec906b21de74698936d40e28) Signed-off-by: Michael Stahl <mstahl@redhat.com>
2012-12-21Resolves: fdo#51638 In "unopkg gui" dispose component context from DeInitVCLStephan Bergmann6-81/+57
...the same way it is done in soffice.bin. framework's Desktop::dispose() requires the solar mutex to be still alive, which is destroyed in DeInitVCL, so if the component context/service manager is only disposed afterwards, the solar mutex is already gone. This required moving disposeBridges() around, but it allowed to get rid of DisposeGuard. (cherry picked from commit 37cc83e594fa8ca131fc5fb98506287b7daedffd) Conflicts: desktop/source/pkgchk/unopkg/unopkg_app.cxx desktop/source/pkgchk/unopkg/unopkg_shared.h Change-Id: Ibec3d19040fdae23f492cd1e29084e673403e00b Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2012-12-15Take extra cache/uno_packages/*.tmp_/*properties files into accountStephan Bergmann1-11/+14
...when migrating user extensions from an old user profile. Change-Id: I4425eba1e840bfdb33782bb3ed0542ce48b2f75f (cherry picked from commit bd9c4510ff13ab7e935ed12c5b6d1f132c6f2b79) Reviewed-on: https://gerrit.libreoffice.org/1313 Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
2012-12-07Resolves: fdo#51638 In "unopkg gui" dispose component context from DeInitVCLStephan Bergmann6-81/+57
...the same way it is done in soffice.bin. framework's Desktop::dispose() requires the solar mutex to be still alive, which is destroyed in DeInitVCL, so if the component context/service manager is only disposed afterwards, the solar mutex is already gone. This required moving disposeBridges() around, but it allowed to get rid of DisposeGuard. (cherry picked from commit 37cc83e594fa8ca131fc5fb98506287b7daedffd) Conflicts: desktop/source/pkgchk/unopkg/unopkg_app.cxx desktop/source/pkgchk/unopkg/unopkg_shared.h Change-Id: Ibec3d19040fdae23f492cd1e29084e673403e00b Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2012-12-03-Werror=unused-parameterStephan Bergmann1-0/+3
Change-Id: If1aad98965a90ac6b2e5488f21fe0d84c9b4af47 (cherry picked from commit c2500a004dbb4830202b49d8031e35e66c7c739d) Reviewed-on: https://gerrit.libreoffice.org/1228 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2012-11-21fdo#57224: Preserve disabled-state across reinstallDeployedExtensionsStephan Bergmann1-1/+29
(cherry picked from commit 6f9c3bc8edc93be07273d9de13dda19ea6c1da4a plus follow- up a05e1e4967a21f3dd5a49215d97df99a7ec84f18 "fdo#57224: Fix logic of considering optional/ambiguous value as 'disabled'") Change-Id: Ic4f6cda4de758df4789e80b48b30f11ef810d2bd Reviewed-on: https://gerrit.libreoffice.org/1119 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2012-11-05deb#690717 fix bashism in /bin/sh scriptRene Engelhard1-1/+1
Change-Id: I43b0065e56b234a5aa748ac1593c29a44fdb1647 Reviewed-on: https://gerrit.libreoffice.org/886 Reviewed-by: Petr Mladek <pmladek@suse.cz> Tested-by: Petr Mladek <pmladek@suse.cz>
2012-11-05Merge remote-tracking branch 'origin/libreoffice-3-6-3' into suse-3.6Petr Mladek16-363/+390
Conflicts: desktop/source/app/sofficemain.cxx instsetoo_native/util/openoffice.lst solenv/inc/minor.mk Change-Id: I3e9510067c7173f6c71368e70ba6dfe168c5318e
2012-10-19deb#690717 fix bashism in /bin/sh scriptRene Engelhard1-1/+1
Change-Id: I43b0065e56b234a5aa748ac1593c29a44fdb1647 Reviewed-on: https://gerrit.libreoffice.org/886 Reviewed-by: Petr Mladek <pmladek@suse.cz> Tested-by: Petr Mladek <pmladek@suse.cz>
2012-10-13[mono] cli-mono-common.diff: add mono supportPetr Mladek1-0/+10
2012-10-03splash screen: fix RTL modeIvan Timofeev1-0/+1
Change-Id: I6a00cba8fda11351ed5340f21678c330ce028a2d Signed-off-by: Jan Holesovsky <kendy@suse.cz>
2012-10-02fdo#52268: splash: change color and position of messagesIvan Timofeev1-2/+44
Change-Id: If6c607fc9f0be1f7a71eda8d555399451938c5fc Signed-off-by: Jan Holesovsky <kendy@suse.cz>
2012-09-26Clean up option processingStephan Bergmann11-241/+253
* Support --version on non-UNX, too. * Consistently show the first unknown option and the help blob in the presence of any unknown options. * There is no need to tunnel --help/--version past oosplash in the soffice script, as oosplash is prepared to treat them adequately (esp. not pass them over any pipe); this only added unnecessary variance to what spellings exactly are supported and how mixtures of --help, --version, and unknown options are handled. (cherry picked from commit f4a4ba9ac1b58b4726825400e1edd1bf47d4080a) Change-Id: I617f2e727e2f0eafd34a2de3b85d441c6783ec4f Reviewed-on: https://gerrit.libreoffice.org/700 Reviewed-by: Noel Power <noel.power@suse.com> Tested-by: Noel Power <noel.power@suse.com>
2012-09-25fdo#54385: Displaying help/version early on UNX requires service managerStephan Bergmann4-8/+11
This regression was introduced with 6c6358a6822d3562b9b8c7668a7d60d6c644dfe8 "Related fdo#53006: Do not instantiate service manager too early." Change-Id: If22ea3ac6474188bf0792246620e5c705a813445 (cherry picked from commit 2f14e2e67c58fe6948501d57a38cd0d2ad84dfff) Reviewed-on: https://gerrit.libreoffice.org/694 Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
2012-09-25fdo#54385: Displaying help/version early on UNX requires service managerStephan Bergmann1-0/+2
This regression was introduced with 6c6358a6822d3562b9b8c7668a7d60d6c644dfe8 "Related fdo#53006: Do not instantiate service manager too early." (cherry picked from commit 2f14e2e67c58fe6948501d57a38cd0d2ad84dfff) (cherry picked from commit 7b33d564bc0079e5d8309e4b5081b1d44e1efd12) Conflicts: desktop/inc/app.hxx desktop/source/app/app.cxx desktop/source/app/appinit.cxx desktop/source/app/sofficemain.cxx (with ensureProcessServiceManager still available in libreoffice-3-6-2, this cherry-pick shrinks up dramatically) Change-Id: If22ea3ac6474188bf0792246620e5c705a813445 Reviewed-on: https://gerrit.libreoffice.org/695 Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org> Reviewed-by: David Tardon <dave.tardon@gmail.com> Reviewed-by: Tor Lillqvist <tml@iki.fi> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2012-09-21Properly check cmdline args in oosplashStephan Bergmann1-3/+5
...so that e.g. --headless (starting with a "h") is not also mistaken as -h and disables pagein and javaldx. Change-Id: I8a7b2b0373d96ec586975e07e17e7eabe201dcd0 (cherry picked from commit b247950eeeb2ea2345633ee018fbe2c55c1942c0) Reviewed-on: https://gerrit.libreoffice.org/666 Reviewed-by: Michael Meeks <michael.meeks@suse.com> Tested-by: Michael Meeks <michael.meeks@suse.com>
2012-09-20Don't access broken service mgr during bootstrap failureStephan Bergmann5-108/+77
...so that displaying a (non-translated) error box upon BE_UNO_SERVICEMANAGER works after all. Augment the error text with an exception message where appropriate. This allows to revert fdfb7a3c4b3a89b73ab5546b9620348bc4984d8f "Related fdo#51252: Report uncaught exceptions with MessageBox on Windows" as that was to catch and display failures from instantiating the service mgr. (cherry picked from commit cccc6bcfa095121c91e8bbc396f5bcf7e95424b9) Change-Id: I049a38e95342634796eb0e940e2ee8e55193c9d3 Reviewed-on: https://gerrit.libreoffice.org/654 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
2012-09-10deb#681185: wait for InternalIPC::ProcessingDone in oosplashStephan Bergmann1-0/+11
Change-Id: I9606ec34ad0d8d24dca71d060bf5e1d37152903c (cherry picked from commit 5c804dce946a928adcaf97533f5345b33e688ff5) Reviewed-on: https://gerrit.libreoffice.org/569 Reviewed-by: Michael Meeks <michael.meeks@suse.com> Tested-by: Michael Meeks <michael.meeks@suse.com>
2012-08-29fdo#53968 etc.: Fix more "doesn't start after upgrade" problemsStephan Bergmann11-121/+171
* fdo#53968 revealed that multiple soffice.bin instances can run removeTree in parallel. Therefore, demoted failures from exceptions to SAL_WARNs. (And keeping fingers crossed.) * a8cdce148c76c93c5d41820610d6e6ac175e03a7 "fdo#53655: Ignore failure to remove directories (as happens on Windows XP)" was due to a forgotten osl::Directory::close before calling osl::Directory::remove after all. * UserInstallations have been seen in the wild where no extensions were installed per-user (any longer), but user/uno_packages/cache/registry/ com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files contained data nevertheless. To reliably clean out any old junk, refreshBundledExtensionsDir has been extended to cleanExtensionsCache which in tandem with an extended Desktop::SynchronizeExtensionRepositories now cleanly re-installs all bundled, shared, and per-user extensions after a LO upgrade. Change-Id: Ic6b5b6c1945d76eb3a65b6cd4512a657b7a835a0 Reviewed-on: https://gerrit.libreoffice.org/477 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Tested-by: Norbert Thiebaud <nthiebaud@gmail.com>
2012-08-22TypoStephan Bergmann1-1/+1
Change-Id: I41fd1463b6432818ee36e7f90e920a5fd98c7106 (cherry picked from commit 1316cfe8a72f7c7bc2f5ad7644a2d4c54b77fc8b) Signed-off-by: Eike Rathke <erack@redhat.com>
2012-08-21fdo#53655: Ignore failure to remove directories (as happens on Windows XP)Stephan Bergmann1-10/+17
...plus, add error codes to other failure's exception strings, just in case... Change-Id: Ic21c52e0ab52ed1752745e86bde214aee7c3c208 Signed-off-by: Michael Meeks <michael.meeks@suse.com>
2012-08-13fdo#53006: And detect LO downgrading scenarios...Stephan Bergmann2-27/+55
...that reinstall potentially broken prereg data but do not touch the buildid file. Change-Id: I1b02d2c265523dd751d8ef7f2dccb59ed048f568 Signed-off-by: Petr Mladek <pmladek@suse.cz>
2012-08-13Related fdo#51252: No more prereg, no more unopkg syncStephan Bergmann13-542/+15
Now that 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4 "fdo#51252 Disable copying share/prereg/bundled to avoid startup crashes" removed the use of share/prereg, there is no longer need to generate it in the first place (by calling "unopkg sync" at build or installation time), and so no need for the "unopkg sync" sub- command, either. This also allows to simplify some of the jvmfwk code that was only there so that "unopkg sync" (which can require a JVM) can work in "hostile" environments (during build and installation). Conflicts: setup_native/prj/d.lst Change-Id: I52657384f4561bf27948ba4f0f88f4498e90987f Signed-off-by: Andras Timar <atimar@suse.com>
2012-08-13fdo#53006: Remove directories too, not just plain filesStephan Bergmann1-1/+6
... that was an oversight in 5300f6f711c2167931d45248c1b72dbce3a7df38; thanks Petr for spotting it. Change-Id: I4d0179165bc3b29d698cd776f7e1aa51fa73ebe3 Signed-off-by: Petr Mladek <pmladek@suse.cz>
2012-08-10fdo#53006: Remove user/extensions/bundled cache after upgradeStephan Bergmann8-26/+164
... to clean out all sorts of inconsitencies that can have accrued there over time apparently due to how the mechanism of copying share/prereg/bundled worked, and to work around stale $BUNDLED_EXTENSIONS_PREREG references in a better way than the previous 81fd6b084b0f3c0eb5a97c77592f5ceb21d2dfb1 "fdo#53006 Force reinstall of all bundled extensions on upgrade." See the comment on refreshBundledExtensionsDir for how, at least in theory, that functionality could be removed again in the future. This effectively reverts 2d2b19dea1ab401b1b4971ff5b12b87bb11fd666 "Force ExtensionManager resync when the implementation changes" and 81fd6b084b0f3c0eb5a97c77592f5ceb21d2dfb1 "fdo#53006 Force reinstall of all bundled extensions on upgrade" (the latter at least on master; it had never been cherry-picked to libreoffice-3-6), which it obsoletes. Change-Id: I8f80c07a06ec9d53b03813338eeff7d7757c9d4d Signed-off-by: Petr Mladek <pmladek@suse.cz>
2012-08-10Related fdo#53006: Do not instantiate service manager too earlyStephan Bergmann3-54/+55
... in soffice_main calling GetCommandLineArgs, before Desktop::Init takes care of synchronization of the per-user bundled/shared extension information (as the latter potentially modifies data that the service manager consumes upon instantiation; this e.g. lead to bundled extensions not working during first start after an upgrade). The only reason GetCommandLineArgs needed ensureProcessServiceFactory appears to be the ExternalUriReferenceTranslator. So defer its usage to when the relevant cmd line args are actually processed (which, luckily, does not yet happen in soffice_main's usage of GetCommandLineArgs). Change-Id: I6ebbf0a4ad1c6f64c8fbbe2b0d7628fa42a1afb6 Signed-off-by: Petr Mladek <pmladek@suse.cz>
2012-08-10Check for ComponentPackageImpl::isRegistered_ in the current rdbStephan Bergmann1-81/+16
...not the old one that does not contain the changes from the current session. Otherwise, actively registered components in bundled extensions would not necessarily be re-registered upon start up. Any old instance would be removed, but the new instance would not be registered as isRegistered_ would still return true. To me it looks like 7a400caaa6946399ea31614d056d435350f42dc1 "jl145: #i99257# Extension Manager prevents running of multiple instances which acces the same shared data" erroneously introduced a call to getRDB_RO instead of getRDB into isRegistered_. That (only) call of getRDB_RO gone allowed some clean up, incl. renaming remaining variables from ..._RO to ..._orig. Change-Id: I7eccac699e6fa5799f77b038b15d62e0a9c1ad17 Signed-off-by: Petr Mladek <pmladek@suse.cz>
2012-08-10fdo#42470: Do not show backing window on --nodefaultStephan Bergmann1-0/+4
Change-Id: Id265dc84de454568ea8194703687c68449e9a32b (cherry picked from commit 0cfed166261968068abbed485ceffd67ca5cbf61) Signed-off-by: Michael Stahl <mstahl@redhat.com>
2012-08-09warning C4702: unreachable codeMichael Stahl1-0/+6
Change-Id: Icec8f9e37fa679b25d9bd44de56c98477d758abc (cherry picked from commit e940b0f5e2b57c67b93ffadd7063ec650aa7bcbf) Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2012-07-30fdo#43989: Revert "win32-dont-attempt-restart.diff: Don't attempt to restart ↵Stephan Bergmann3-72/+78
OOo after crash" This reverts commit f8e1d2438199c4a76ceeb36352678c415e25272c, which erroneously disabled automatic restart on Windows completely and has now been addressed in a better way with 150bf2c95c193b30e050ac1c54d64b5485af088d "bnc#524250: Show backing component after cancelled recovery." bnc#524250: Show backing component after cancelled recovery ...instead of an empty Writer document, which is non-intuitive when the user had worked on something other than a Writer document before the crash. f8e1d2438199c4a76ceeb36352678c415e25272c "win32-dont-attempt-restart.diff: Don't attempt to restart OOo after crash" had previously attempted to fix this with a sledgehammer approach of not restarting at all after a crash on Windows, under the wrong assumption that there would be no restart after crash at all on Linux either (which was apparently rather a bug caused by the newly introduced oosplash at that time). Change-Id: If65d2e21640d56262c486d887c4a29137cabcd0a
2012-07-26fdo#51252 Disable copying share/prereg/bundled to avoid startup crashesStephan Bergmann1-1/+1
...see <https://bugs.freedesktop.org/show_bug.cgi?id=51252#c35>, comment 35 to "LO cannot start (reports runtime error with Visual C++ Runtime Library)" for all the details. This commit is intended as a band aid, to be backported to libreoffice-3-6-0. It can be cleaned up later on. Change-Id: I2984cdd7efc279e3ef482a762b614e1d625a697f (cherry picked from commit 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4) Signed-off-by: Caolán McNamara <caolanm@redhat.com>
2012-07-25Related fdo#51252: Report uncaught exceptions with MessageBox on WindowsStephan Bergmann1-2/+20
...as stderr is not generally visible there to the user (and vcl's Application::ShowNativeErrorBox might not yet be functional during early start up). Change-Id: I1b99a77f7add967579d726462aa0a7b83a5d2d0a Signed-off-by: Fridrich Štrba <fridrich.strba@bluewin.ch>
2012-07-13Hide information about failure during very early startup a little lessStephan Bergmann1-3/+9
Change-Id: I4ecbcf7e19c642bbb98f66d127050361fdb6136a (cherry picked from commit 91404d1d379fbdc3b1c7286dafd2519b68b08c97) Signed-off-by: Eike Rathke <erack@redhat.com>
2012-06-28use defines from systools/win32/qswin32.h instead of duplicationAndras Timar1-7/+4
Change-Id: I3d52308087412d1250b8ad64ffc308ca7cc414fd
2012-06-28fdo#46510 optionally turn on Quickstarter by installerAndras Timar1-0/+36
Change-Id: Ie002ab01a804cceea06e0a2ba7e6b2fe2a495344
2012-06-22Fix X Session Management supportStephan Bergmann1-0/+3
...passing -session= into soffice was no longer supported. The way I tested this with Gnome 3.4 (Fedora 17) is with: * Run gnome-session-properties to select "Options - Automatically remember running applications when logging out" * Create ~/.local/share/applications/lodev.desktop: [Desktop Entry] Exec=.../core/solver/unxlngx6/installation/opt/program/soffice Icon=libreoffice-startcenter Name=LOdev Type=Application * Run "startx /usr/bin/gnome-session -- /usr/bin/Xephyr :1" Change-Id: Id8a6e431e4c355caafa6c7111a435ebc0d35f78a (cherry picked from commit 0f12c5de67869593cfbc36760957467a122bf81a)
2012-06-04fdo#46808, Adapt UNO services to new style, Part 7, updating ::createNoel Grandin2-12/+10
Update calls to factories to use new ::create methods Change-Id: I01d4417820f52718836c92faf3c2fae0dc96b30d Signed-off-by: Stephan Bergmann <sbergman@redhat.com>, added some tweaks.
2012-06-04Make sure all the required headers are thereJesús Corrius1-0/+1
2012-06-04Make sure the symbols are foundJesús Corrius2-2/+2
2012-06-04Move the AppUserModelID code to the launcherJesús Corrius12-180/+37
2012-06-02targeted string re-workNorbert Thiebaud12-159/+155
Change-Id: Ia9fe54a5198811d648bb32a2ebb3ab7f9cde77c7
2012-06-01nuke unused namespaceTakeshi Abe8-10/+0
Change-Id: Ic00cdfce4172af0a2f0aa1aa33ef5e386d407976
2012-05-31Force --headless argument when LIBO_HEADLESS is definedRiccardo Magliocchetti1-0/+4
When LIBO_HEADLESS is set we are not supposed to run libo without --headless; doing so will throw an UNO exception. So better use a sensible default.
2012-05-31More headless build workRiccardo Magliocchetti1-2/+0
Remove hack in sofficemain we really don't want and don't install a lib we are not building.
2012-05-29rename functions for consistency with the rest of gbuildDavid Tardon10-38/+29
Change-Id: I572a8a6dc9da4f63b7c937748b3013bab60bb6bb