diff --git a/.gitignore b/.gitignore
index d0139cc..82bfe9c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ gimp-help-2.4.2.tar.bz2
/gimp-help-2.8.1.tar.bz2
/gimp-help-2.8.2.tar.bz2
/gimp-help-2.10.0.tar.bz2
+/gimp-help-2.10.34.tar.bz2
diff --git a/gimp-help-2.10.0-python3.patch b/gimp-help-2.10.0-python3.patch
deleted file mode 100644
index 66a22bf..0000000
--- a/gimp-help-2.10.0-python3.patch
+++ /dev/null
@@ -1,314 +0,0 @@
-diff -urNp a/tools/xml2po/__init__.py b/tools/xml2po/__init__.py
---- a/tools/xml2po/__init__.py 2019-11-28 11:45:00.889048989 +0100
-+++ b/tools/xml2po/__init__.py 2020-01-06 13:24:24.715787902 +0100
-@@ -86,14 +86,14 @@ class MessageOutput:
- self.messages.append(t)
- if spacepreserve:
- self.nowrap[t] = True
-- if t in self.linenos.keys():
-+ if t in list(self.linenos.keys()):
- self.linenos[t].append((self.filename, tag, lineno))
- else:
- self.linenos[t] = [ (self.filename, tag, lineno) ]
- if (not self.do_translations) and comment and not t in self.comments:
- self.comments[t] = comment
- else:
-- if t in self.linenos.keys():
-+ if t in list(self.linenos.keys()):
- self.linenos[t].append((self.filename, tag, lineno))
- else:
- self.linenos[t] = [ (self.filename, tag, lineno) ]
-@@ -166,7 +166,7 @@ class XMLDocument(object):
- elif node.isText():
- if node.isBlankNode():
- if self.app.options.get('expand_entities') or \
-- (not (node.prev and not node.prev.isBlankNode() and node.next and not node.next.isBlankNode()) ):
-+ (not (node.prev and not node.prev.isBlankNode() and node.nextElementSibling() and not node.next.isBlankNode()) ):
- #print >>sys.stderr, "BLANK"
- node.setContent('')
- else:
-@@ -200,7 +200,7 @@ class XMLDocument(object):
- tree = ctxt.doc()
- newnode = tree.getRootElement()
- except:
-- print >> sys.stderr, """Error while normalizing string as XML:\n"%s"\n""" % (text)
-+ print("""Error while normalizing string as XML:\n"%s"\n""" % (text), file=sys.stderr)
- return text
-
- self.normalizeNode(newnode)
-@@ -259,7 +259,7 @@ class XMLDocument(object):
- if not self.expand_entities:
- result += '&' + child.name + ';'
- else:
-- result += child.content.decode('utf-8')
-+ result += child.content
- else:
- result += self.myAttributeSerialize(child)
- child = child.next
-@@ -326,7 +326,7 @@ class XMLDocument(object):
- pass
-
- content = '<%s>%s%s>' % (starttag, text, endtag)
-- tmp = tmp + content.encode('utf-8')
-+ tmp = tmp + content
-
- newnode = None
- try:
-@@ -338,7 +338,7 @@ class XMLDocument(object):
- pass
-
- if not newnode:
-- print >> sys.stderr, """Error while parsing translation as XML:\n"%s"\n""" % (text.encode('utf-8'))
-+ print("""Error while parsing translation as XML:\n"%s"\n""" % (text), file=sys.stderr)
- return
-
- newelem = newnode.getRootElement()
-@@ -354,7 +354,7 @@ class XMLDocument(object):
- copy = newelem.copyNodeList()
- next = node.next
- node.replaceNode(newelem.copyNodeList())
-- node.next = next
-+ node.__next__ = next
-
- else:
- # In practice, this happens with tags such as " " (only whitespace in between)
-@@ -406,7 +406,7 @@ class XMLDocument(object):
- translation = self.app.getTranslation(outtxt) # unicode or None
- if translation is not None:
- self.replaceAttributeContentsWithText(attr,
-- translation.encode('utf-8'))
-+ translation)
- else:
- self.app.msg.outputMessage(outtxt, node.lineNo(), "", spacepreserve=False,
- tag = node.name + ":" + attr.name)
-@@ -447,14 +447,14 @@ class XMLDocument(object):
- norm_outtxt = self.normalizeString(outtxt, self.app.isSpacePreserveNode(node))
- translation = self.app.getTranslation(norm_outtxt)
- else:
-- translation = outtxt.decode('utf-8')
-+ translation = outtxt
-
- starttag = self.startTagForNode(node)
- endtag = self.endTagForNode(node)
-
- worth = self.worthOutputting(node)
- if not translation:
-- translation = outtxt.decode('utf-8')
-+ translation = outtxt
- if worth and self.app.options.get('mark_untranslated'):
- node.setLang('C')
-
-@@ -463,7 +463,7 @@ class XMLDocument(object):
- # repl[0] may contain translated attributes with
- # non-ASCII chars, so implicit conversion to may fail
- replacement = '<%s>%s%s>' % \
-- (repl[0].decode('utf-8'), repl[3], repl[2])
-+ (repl[0], repl[3], repl[2])
- translation = translation.replace('' % (i+1), replacement)
-
- if worth:
-@@ -542,7 +542,7 @@ class Main(object):
- elif output == '-':
- self.out = sys.stdout
- else:
-- self.out = file(output, 'w')
-+ self.out = open(output, 'w')
-
- def load_mode(self, modename):
- try:
-@@ -565,7 +565,7 @@ class Main(object):
- try:
- doc = XMLDocument(xmlfile, self)
- except Exception as e:
-- print >> sys.stderr, "Unable to parse XML file '%s': %s" % (xmlfile, str(e))
-+ print("Unable to parse XML file '%s': %s" % (xmlfile, str(e)), file=sys.stderr)
- sys.exit(1)
- self.current_mode.preProcessXml(doc.doc, self.msg)
- doc.generate_messages()
-@@ -578,13 +578,13 @@ class Main(object):
- try:
- doc = XMLDocument(xmlfile, self)
- except Exception as e:
-- print >> sys.stderr, str(e)
-+ print(str(e), file=sys.stderr)
- sys.exit(1)
-
- try:
- mfile = open(mofile, "rb")
- except:
-- print >> sys.stderr, "Can't open MO file '%s'." % (mofile)
-+ print("Can't open MO file '%s'." % (mofile), file=sys.stderr)
- self.gt = gettext.GNUTranslations(mfile)
- self.gt.add_fallback(NoneTranslations())
- # Has preProcessXml use cases for merge?
-@@ -607,7 +607,7 @@ class Main(object):
- try:
- doc = XMLDocument(xmlfile, self)
- except Exception as e:
-- print >> sys.stderr, str(e)
-+ print(str(e), file=sys.stderr)
- sys.exit(1)
- doc.generate_messages()
-
-@@ -615,7 +615,7 @@ class Main(object):
- try:
- doc = XMLDocument(origxml, self)
- except Exception as e:
-- print >> sys.stderr, str(e)
-+ print(str(e), file=sys.stderr)
- sys.exit(1)
- doc.generate_messages()
- self.output_po()
-@@ -646,11 +646,11 @@ class Main(object):
-
- text should be a string to look for.
- """
-- #print >>sys.stderr,"getTranslation('%s')" % (text.encode('utf-8'))
-+ #print >>sys.stderr,"getTranslation('%s')" % (text)
- if not text or text.strip() == '':
- return text
- if self.gt:
-- res = self.gt.ugettext(text.decode('utf-8'))
-+ res = self.gt.gettext(text)
- return res
-
- return text
-diff -urNp a/tools/xml2po/modes/docbook.py b/tools/xml2po/modes/docbook.py
---- a/tools/xml2po/modes/docbook.py 2019-11-28 11:45:00.889048989 +0100
-+++ b/tools/xml2po/modes/docbook.py 2020-01-06 13:10:18.324679751 +0100
-@@ -43,7 +43,7 @@ try:
- except ImportError:
- from md5 import new as md5_new
-
--from basic import basicXmlMode
-+from .basic import basicXmlMode
-
- class docbookXmlMode(basicXmlMode):
- """Class for special handling of DocBook document types.
-@@ -131,7 +131,7 @@ class docbookXmlMode(basicXmlMode):
- hash = self._md5_for_file(fullpath)
- else:
- hash = "THIS FILE DOESN'T EXIST"
-- print >>sys.stderr, "Warning: image file '%s' not found." % fullpath
-+ print("Warning: image file '%s' not found." % fullpath, file=sys.stderr)
-
- msg.outputMessage("@@image: '%s'; md5=%s" % (attr, hash), node.lineNo(),
- "When image changes, this message will be marked fuzzy or untranslated for you.\n"+
-@@ -184,7 +184,7 @@ class docbookXmlMode(basicXmlMode):
- else:
- ai.addChild(copy)
- if match.group(3):
-- copy.newChild(None, "year", match.group(3).encode('utf-8'))
-+ copy.newChild(None, "year", match.group(3))
- if match.group(1) and match.group(2):
- holder = match.group(1)+"(%s)" % match.group(2)
- elif match.group(1):
-@@ -193,15 +193,15 @@ class docbookXmlMode(basicXmlMode):
- holder = match.group(2)
- else:
- holder = "???"
-- copy.newChild(None, "holder", holder.encode('utf-8'))
-+ copy.newChild(None, "holder", holder)
-
- # Perform some tests when ran standalone
- if __name__ == '__main__':
- test = docbookXmlMode()
-- print "Ignored tags : " + repr(test.getIgnoredTags())
-- print "Final tags : " + repr(test.getFinalTags())
-- print "Space-preserve tags: " + repr(test.getSpacePreserveTags())
-+ print("Ignored tags : " + repr(test.getIgnoredTags()))
-+ print("Final tags : " + repr(test.getFinalTags()))
-+ print("Space-preserve tags: " + repr(test.getSpacePreserveTags()))
-
-- print "Credits from string: '%s'" % test.getStringForTranslators()
-- print "Explanation for credits:\n\t'%s'" % test.getCommentForTranslators()
-+ print("Credits from string: '%s'" % test.getStringForTranslators())
-+ print("Explanation for credits:\n\t'%s'" % test.getCommentForTranslators())
-
-diff -urNp a/tools/xml2po/modes/gimphelp.py b/tools/xml2po/modes/gimphelp.py
---- a/tools/xml2po/modes/gimphelp.py 2019-11-28 11:45:00.889048989 +0100
-+++ b/tools/xml2po/modes/gimphelp.py 2020-01-06 11:59:17.387855373 +0100
-@@ -31,7 +31,7 @@ try:
- except ImportError:
- from md5 import new as md5_new
-
--from docbook import docbookXmlMode
-+from .docbook import docbookXmlMode
-
- class gimphelpXmlMode(docbookXmlMode):
- """Class for special handling of gimp-help DocBook document types.
-@@ -91,10 +91,10 @@ class gimphelpXmlMode(docbookXmlMode):
- # Perform some tests when ran standalone
- if __name__ == '__main__':
- test = gimphelpXmlMode()
-- print "Ignored tags : " + repr(test.getIgnoredTags())
-- print "Final tags : " + repr(test.getFinalTags())
-- print "Space-preserve tags: " + repr(test.getSpacePreserveTags())
-+ print("Ignored tags : " + repr(test.getIgnoredTags()))
-+ print("Final tags : " + repr(test.getFinalTags()))
-+ print("Space-preserve tags: " + repr(test.getSpacePreserveTags()))
-
-- print "Credits from string: '%s'" % test.getStringForTranslators()
-- print "Explanation for credits:\n\t'%s'" % test.getCommentForTranslators()
-+ print("Credits from string: '%s'" % test.getStringForTranslators())
-+ print("Explanation for credits:\n\t'%s'" % test.getCommentForTranslators())
-
-diff -urNp a/tools/xml2po.py b/tools/xml2po.py
---- a/tools/xml2po.py 2019-11-28 11:45:00.889048989 +0100
-+++ b/tools/xml2po.py 2020-01-06 11:59:17.387855373 +0100
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python2
-+#!/usr/bin/env python3
- # -*- encoding: utf-8 -*-
- # Copyright (c) 2004, 2005, 2006 Danilo Ĺ egan .
- # Copyright (c) 2009 Claude Paroz .
-@@ -41,9 +41,9 @@ NULL_STRING = '/dev/null'
- if not os.path.exists('/dev/null'): NULL_STRING = 'NUL'
-
- def usage (with_help = False):
-- print >> sys.stderr, "Usage: %s [OPTIONS] [XMLFILE]..." % (sys.argv[0])
-+ print("Usage: %s [OPTIONS] [XMLFILE]..." % (sys.argv[0]), file=sys.stderr)
- if with_help:
-- print >> sys.stderr, """
-+ print("""
- OPTIONS may be some of:
- -a --automatic-tags Automatically decides if tags are to be considered
- "final" or not
-@@ -72,7 +72,7 @@ EXAMPLES:
- using -p option for each XML file:
- %(command)s -p de.po chapter1.xml > chapter1.de.xml
- %(command)s -p de.po chapter2.xml > chapter2.de.xml
--""" % {'command': sys.argv[0]}
-+""" % {'command': sys.argv[0]}, file=sys.stderr)
-
-
- def main(argv):
-@@ -148,7 +148,7 @@ def main(argv):
- sys.exit(0)
-
- if operation == 'update' and output != "-":
-- print >> sys.stderr, "Option '-o' is not yet supported when updating translations directly. Ignoring this option."
-+ print("Option '-o' is not yet supported when updating translations directly. Ignoring this option.", file=sys.stderr)
-
- # Treat remaining arguments as XML files
- filenames = []
-@@ -158,16 +158,16 @@ def main(argv):
- try:
- xml2po_main = Main(default_mode, operation, output, options)
- except IOError:
-- print >> sys.stderr, "Error: cannot open file %s for writing." % (output)
-+ print("Error: cannot open file %s for writing." % (output), file=sys.stderr)
- sys.exit(5)
-
- if operation == 'merge':
- if len(filenames) > 1:
-- print >> sys.stderr, "Error: You can merge translations with only one XML file at a time."
-+ print("Error: You can merge translations with only one XML file at a time.", file=sys.stderr)
- sys.exit(2)
-
- if not mofile:
-- print >> sys.stderr, "Error: You must specify MO file when merging translations."
-+ print("Error: You must specify MO file when merging translations.", file=sys.stderr)
- sys.exit(3)
-
- xml2po_main.merge(mofile, filenames[0])
diff --git a/gimp-help.spec b/gimp-help.spec
index 8d1add6..81a7510 100644
--- a/gimp-help.spec
+++ b/gimp-help.spec
@@ -1,14 +1,14 @@
# NOTE: en/English is in the main package
-# LANGUAGES: ca,Catalan da,Danish de,German el,Greek en_GB,British_English es,Spanish fr,French it,Italian ja,Japanese ko,Korean nl,Dutch nn,Norwegian_Nynorsk pt_BR,Brazilian_Portuguese ru,Russian sl,Slovenian sv,Swedish zh_CN,Simplified_Chinese
+# LANGUAGES: ca,Catalan cs,Czech da,Danish de,German el,Greek en_GB,British_English es,Spanish fa,Farsi fi,Finnish fr,French hr,Croatian hu,Hungarian it,Italian ja,Japanese ko,Korean lt,Lithuanian nl,Dutch nn,Norwegian_Nynorsk pt,Portuguese pt_BR,Brazilian_Portuguese ro,Romanian ru,Russian sl,Slovenian sv,Swedish uk,Ukrainian zh_CN,Simplified_Chinese
%global gimpsubver 2.0
Summary: Help files for GIMP
Name: gimp-help
-Version: 2.10.0
+Version: 2.10.34
Release: %autorelease
License: GFDL-1.2-invariants-only
-URL: http://docs.gimp.org/
-Source0: http://download.gimp.org/pub/gimp/help/gimp-help-%{version}.tar.bz2
+URL: https://docs.gimp.org/
+Source0: https://download.gimp.org/pub/gimp/help/gimp-help-%{version}.tar.bz2
BuildArch: noarch
BuildRequires: dblatex
# BuildRequires: docbook2odf [orphaned]
@@ -26,18 +26,9 @@ BuildRequires: python3
BuildRequires: make
Requires: gimp >= 2:2.10
# BEGIN: OBSOLETE LANGUAGES
-Obsoletes: gimp-help-sl < 2.10.0-1%{?dist}
-Conflicts: gimp-help-sl < 2.10.0-1%{?dist}
-Obsoletes: gimp-help-sv < 2.10.0-1%{?dist}
-Conflicts: gimp-help-sv < 2.10.0-1%{?dist}
-Obsoletes: gimp-help-hr < 2.10.0-1%{?dist}
-Conflicts: gimp-help-hr < 2.10.0-1%{?dist}
-Obsoletes: gimp-help-lt < 2.10.0-1%{?dist}
-Conflicts: gimp-help-lt < 2.10.0-1%{?dist}
Obsoletes: gimp-help-pl < 2.10.0-1%{?dist}
Conflicts: gimp-help-pl < 2.10.0-1%{?dist}
# END: OBSOLETE LANGUAGES
-Patch1: gimp-help-2.10.0-python3.patch
%description
This package contains a user manual written for the GNU Image Manipulation
Program.
@@ -51,6 +42,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-c
%description ca
Catalan language support for gimp-help.
+%package cs
+Summary: Czech (cs) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-cs)
+
+%description cs
+Czech language support for gimp-help.
+
%package da
Summary: Danish (da) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -91,6 +90,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-e
%description es
Spanish language support for gimp-help.
+%package fa
+Summary: Farsi (fa) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-fa)
+
+%description fa
+Farsi language support for gimp-help.
+
%package fi
Summary: Finnish (fi) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -107,6 +114,22 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-f
%description fr
French language support for gimp-help.
+%package hr
+Summary: Croatian (hr) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-hr)
+
+%description hr
+Croatian language support for gimp-help.
+
+%package hu
+Summary: Hungarian (hu) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-hu)
+
+%description hu
+Hungarian language support for gimp-help.
+
%package it
Summary: Italian (it) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -131,6 +154,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-k
%description ko
Korean language support for gimp-help.
+%package lt
+Summary: Lithuanian (lt) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-lt)
+
+%description lt
+Lithuanian language support for gimp-help.
+
%package nl
Summary: Dutch (nl) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -147,6 +178,14 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-n
%description nn
Norwegian Nynorsk language support for gimp-help.
+%package pt
+Summary: Portuguese (pt) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-pt)
+
+%description pt
+Portuguese language support for gimp-help.
+
%package pt_BR
Summary: Brazilian Portuguese (pt_BR) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -171,6 +210,30 @@ Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-r
%description ru
Russian language support for gimp-help.
+%package sl
+Summary: Slovenian (sl) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-sl)
+
+%description sl
+Slovenian language support for gimp-help.
+
+%package sv
+Summary: Swedish (sv) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-sv)
+
+%description sv
+Swedish language support for gimp-help.
+
+%package uk
+Summary: Ukrainian (uk) language support for gimp-help
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Supplements: (%{name} = %{?epoch:%{epoch}:}%{version}-%{release} and langpacks-uk)
+
+%description uk
+Ukrainian language support for gimp-help.
+
%package zh_CN
Summary: Simplified Chinese (zh_CN) language support for gimp-help
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -183,13 +246,10 @@ Simplified Chinese language support for gimp-help.
%prep
%setup -q
-%patch 1 -p1
%build
%configure
-# don't attempt parallel builds, they tend to produce bad output without
-# failing
-make
+make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install
@@ -199,8 +259,19 @@ f="$PWD/files.list"
pushd %{buildroot}%{_datadir}/gimp/%{gimpsubver}/help
for lang in *; do
+ [ "$lang" = "pdf" ] && continue
echo "%%lang($lang) %%{_datadir}/gimp/%%{gimpsubver}/help/$lang" > "$f.$lang"
done
+cd pdf
+for pdf in *.pdf; do
+ l="${pdf%.pdf}"
+ l="${l#gimp-keys-}"
+ if [ ! -d "../$l" ]; then
+ rm -f "$pdf"
+ else
+ echo "%%lang($lang) %%{_datadir}/gimp/%%{gimpsubver}/help/$pdf" >> "$f.$lang"
+ fi
+done
popd
%files
@@ -211,21 +282,30 @@ popd
# BEGIN: LANGUAGE FILE LISTS
%files ca -f files.list.ca
+%files cs -f files.list.cs
%files da -f files.list.da
%files de -f files.list.de
%files el -f files.list.el
%files en_GB -f files.list.en_GB
%files es -f files.list.es
+%files fa -f files.list.fa
%files fi -f files.list.fi
%files fr -f files.list.fr
+%files hr -f files.list.hr
+%files hu -f files.list.hu
%files it -f files.list.it
%files ja -f files.list.ja
%files ko -f files.list.ko
+%files lt -f files.list.lt
%files nl -f files.list.nl
%files nn -f files.list.nn
+%files pt -f files.list.pt
%files pt_BR -f files.list.pt_BR
%files ro -f files.list.ro
%files ru -f files.list.ru
+%files sl -f files.list.sl
+%files sv -f files.list.sv
+%files uk -f files.list.uk
%files zh_CN -f files.list.zh_CN
# END: LANGUAGE FILE LISTS
diff --git a/sources b/sources
index dc4dc00..af0735e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (gimp-help-2.10.0.tar.bz2) = 2f6d5e7cf0c3b4960c92074ef02d51a1d089c148f6453a66e453a3084cdede280f72c6b77d35f66777adbda8aa273ec2a472fb538142e51bb263c3077eec473a
+SHA512 (gimp-help-2.10.34.tar.bz2) = 316d558f66c96a0d2d0f17baf700020b76aa221f9e220ddfc3e85b10c82b20b9c1cf36893776a342e90af5170e0102eb743b79663451581444d4f881256cf377