NGPIris 5.2.0__tar.gz → 5.2.0.dev1__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.
Files changed (131) hide show
  1. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/cli/__init__.py +1 -3
  2. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hcp/hcp.py +0 -3
  3. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris.egg-info/PKG-INFO +2 -2
  4. ngpiris-5.2.0.dev1/NGPIris.egg-info/SOURCES.txt +127 -0
  5. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/PKG-INFO +2 -2
  6. ngpiris-5.2.0.dev1/docs/_build/.DS_Store +0 -0
  7. ngpiris-5.2.0.dev1/docs/_build/doctrees/IRIS_5_changelog.doctree +0 -0
  8. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.cli.doctree +0 -0
  9. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.doctree +0 -0
  10. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.hci.doctree +0 -0
  11. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.hcp.doctree +0 -0
  12. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.parse_credentials.doctree +0 -0
  13. ngpiris-5.2.0.dev1/docs/_build/doctrees/NGPIris.utils.doctree +0 -0
  14. ngpiris-5.2.0.dev1/docs/_build/doctrees/README.doctree +0 -0
  15. ngpiris-5.2.0.dev1/docs/_build/doctrees/Tutorial.doctree +0 -0
  16. ngpiris-5.2.0.dev1/docs/_build/doctrees/environment.pickle +0 -0
  17. ngpiris-5.2.0.dev1/docs/_build/doctrees/index.doctree +0 -0
  18. ngpiris-5.2.0.dev1/docs/_build/doctrees/modules.doctree +0 -0
  19. ngpiris-5.2.0.dev1/docs/_build/html/.buildinfo +4 -0
  20. ngpiris-5.2.0.dev1/docs/_build/html/IRIS_5_changelog.html +462 -0
  21. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.cli.html +137 -0
  22. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.hci.html +280 -0
  23. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.hcp.html +357 -0
  24. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.html +236 -0
  25. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.parse_credentials.html +156 -0
  26. ngpiris-5.2.0.dev1/docs/_build/html/NGPIris.utils.html +143 -0
  27. ngpiris-5.2.0.dev1/docs/_build/html/README.html +681 -0
  28. ngpiris-5.2.0.dev1/docs/_build/html/Tutorial.html +796 -0
  29. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/cli.html +338 -0
  30. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hci/exceptions.html +106 -0
  31. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hci/hci.html +250 -0
  32. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hci/helpers.html +204 -0
  33. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hcp/exceptions.html +117 -0
  34. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hcp/hcp.html +655 -0
  35. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hcp/helpers.html +148 -0
  36. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/hcp/statistics.html +137 -0
  37. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/parse_credentials/parse_credentials.html +170 -0
  38. ngpiris-5.2.0.dev1/docs/_build/html/_modules/NGPIris/utils/utils.html +115 -0
  39. ngpiris-5.2.0.dev1/docs/_build/html/_modules/index.html +108 -0
  40. ngpiris-5.2.0.dev1/docs/_build/html/_sources/IRIS_5_changelog.md.txt +43 -0
  41. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.cli.rst.txt +10 -0
  42. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.hci.rst.txt +37 -0
  43. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.hcp.rst.txt +45 -0
  44. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.parse_credentials.rst.txt +21 -0
  45. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.rst.txt +22 -0
  46. ngpiris-5.2.0.dev1/docs/_build/html/_sources/NGPIris.utils.rst.txt +21 -0
  47. ngpiris-5.2.0.dev1/docs/_build/html/_sources/README.md.txt +274 -0
  48. ngpiris-5.2.0.dev1/docs/_build/html/_sources/Tutorial.md.txt +326 -0
  49. ngpiris-5.2.0.dev1/docs/_build/html/_static/alabaster.css +708 -0
  50. ngpiris-5.2.0.dev1/docs/_build/html/_static/basic.css +925 -0
  51. ngpiris-5.2.0.dev1/docs/_build/html/_static/custom.css +1 -0
  52. ngpiris-5.2.0.dev1/docs/_build/html/_static/debug.css +69 -0
  53. ngpiris-5.2.0.dev1/docs/_build/html/_static/doctools.js +156 -0
  54. ngpiris-5.2.0.dev1/docs/_build/html/_static/documentation_options.js +13 -0
  55. ngpiris-5.2.0.dev1/docs/_build/html/_static/file.png +0 -0
  56. ngpiris-5.2.0.dev1/docs/_build/html/_static/language_data.js +199 -0
  57. ngpiris-5.2.0.dev1/docs/_build/html/_static/minus.png +0 -0
  58. ngpiris-5.2.0.dev1/docs/_build/html/_static/plus.png +0 -0
  59. ngpiris-5.2.0.dev1/docs/_build/html/_static/pygments.css +83 -0
  60. ngpiris-5.2.0.dev1/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  61. ngpiris-5.2.0.dev1/docs/_build/html/_static/scripts/furo.js +3 -0
  62. ngpiris-5.2.0.dev1/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
  63. ngpiris-5.2.0.dev1/docs/_build/html/_static/scripts/furo.js.map +1 -0
  64. ngpiris-5.2.0.dev1/docs/_build/html/_static/searchtools.js +619 -0
  65. ngpiris-5.2.0.dev1/docs/_build/html/_static/skeleton.css +296 -0
  66. ngpiris-5.2.0.dev1/docs/_build/html/_static/sphinx_highlight.js +154 -0
  67. ngpiris-5.2.0.dev1/docs/_build/html/_static/styles/furo-extensions.css +2 -0
  68. ngpiris-5.2.0.dev1/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
  69. ngpiris-5.2.0.dev1/docs/_build/html/_static/styles/furo.css +2 -0
  70. ngpiris-5.2.0.dev1/docs/_build/html/_static/styles/furo.css.map +1 -0
  71. ngpiris-5.2.0.dev1/docs/_build/html/genindex.html +476 -0
  72. ngpiris-5.2.0.dev1/docs/_build/html/index.html +159 -0
  73. ngpiris-5.2.0.dev1/docs/_build/html/modules.html +148 -0
  74. ngpiris-5.2.0.dev1/docs/_build/html/objects.inv +0 -0
  75. ngpiris-5.2.0.dev1/docs/_build/html/py-modindex.html +188 -0
  76. ngpiris-5.2.0.dev1/docs/_build/html/search.html +120 -0
  77. ngpiris-5.2.0.dev1/docs/_build/html/searchindex.js +1 -0
  78. ngpiris-5.2.0.dev1/docs/index.rst +21 -0
  79. ngpiris-5.2.0.dev1/docs/modules.rst +7 -0
  80. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/pyproject.toml +1 -5
  81. ngpiris-5.2.0.dev1/tests/data/incomplete_creds_0.json +14 -0
  82. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/test_hci.py +1 -5
  83. ngpiris-5.2.0.dev1/tests/test_hcp.py +216 -0
  84. ngpiris-5.2.0/NGPIris.egg-info/SOURCES.txt +0 -52
  85. ngpiris-5.2.0/tests/test_hcp.py +0 -213
  86. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/LICENSE +0 -0
  87. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/MANIFEST.in +0 -0
  88. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/__init__.py +0 -0
  89. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hci/__init__.py +0 -0
  90. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hci/exceptions.py +0 -0
  91. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hci/hci.py +0 -0
  92. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hci/helpers.py +0 -0
  93. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hcp/__init__.py +0 -0
  94. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hcp/exceptions.py +0 -0
  95. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hcp/helpers.py +0 -0
  96. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/hcp/statistics.py +0 -0
  97. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/parse_credentials/__init__.py +0 -0
  98. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/parse_credentials/parse_credentials.py +0 -0
  99. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/utils/__init__.py +0 -0
  100. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris/utils/utils.py +0 -0
  101. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris.egg-info/dependency_links.txt +0 -0
  102. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris.egg-info/entry_points.txt +0 -0
  103. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris.egg-info/requires.txt +0 -0
  104. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/NGPIris.egg-info/top_level.txt +0 -0
  105. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/README.md +0 -0
  106. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/IRIS_5_changelog.md +0 -0
  107. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/Makefile +0 -0
  108. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.cli.rst +0 -0
  109. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.hci.rst +0 -0
  110. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.hcp.rst +0 -0
  111. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.parse_credentials.rst +0 -0
  112. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.rst +0 -0
  113. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/NGPIris.utils.rst +0 -0
  114. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/Tutorial.md +0 -0
  115. /ngpiris-5.2.0/tests/data/incomplete_creds_0.json → /ngpiris-5.2.0.dev1/docs/_build/html/_downloads/ee00c4f6f22dc2671c766f728f00006f/credentials_template.json +0 -0
  116. /ngpiris-5.2.0/docs/index.rst → /ngpiris-5.2.0.dev1/docs/_build/html/_sources/index.rst.txt +0 -0
  117. /ngpiris-5.2.0/docs/modules.rst → /ngpiris-5.2.0.dev1/docs/_build/html/_sources/modules.rst.txt +0 -0
  118. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/conf.py +0 -0
  119. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/docs/make.bat +0 -0
  120. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/setup.cfg +0 -0
  121. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/80MB_test_file +0 -0
  122. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/a folder of data/80MB_test_file_0 +0 -0
  123. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/a folder of data/80MB_test_file_1 +0 -0
  124. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/complete_creds_0.json +0 -0
  125. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/complete_creds_1.json +0 -0
  126. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/complete_creds_2.json +0 -0
  127. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/incomplete_creds_1.json +0 -0
  128. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/incomplete_creds_2.json +0 -0
  129. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/incomplete_creds_3.json +0 -0
  130. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/data/incomplete_creds_4.json +0 -0
  131. {ngpiris-5.2.0 → ngpiris-5.2.0.dev1}/tests/test_parse_credentials.py +0 -0
@@ -94,13 +94,11 @@ def upload(context : Context, bucket : str, source : str, destination : str):
94
94
  """
95
95
  hcph : HCPHandler = get_HCPHandler(context)
96
96
  hcph.mount_bucket(bucket)
97
+ source = add_trailing_slash(source)
97
98
  destination = add_trailing_slash(destination)
98
99
  if Path(source).is_dir():
99
- source = add_trailing_slash(source)
100
100
  hcph.upload_folder(source, destination)
101
101
  else:
102
- file_name = Path(source).name
103
- destination += file_name
104
102
  hcph.upload_file(source, destination)
105
103
 
106
104
  @cli.command()
@@ -403,9 +403,6 @@ class HCPHandler:
403
403
  file_name = Path(local_file_path).name
404
404
  key = file_name
405
405
 
406
- if "\\" in local_file_path:
407
- raise RuntimeError("The \"\\\" character is not allowed in the file path")
408
-
409
406
  if self.object_exists(key):
410
407
  raise ObjectAlreadyExist("The object \"" + key + "\" already exist in the mounted bucket")
411
408
  else:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: NGPIris
3
- Version: 5.2.0
3
+ Version: 5.2.0.dev1
4
4
  Author-email: Erik Brink <erik.brink@gu.se>, Isak Sylvin <isak.sylvin@gu.se>
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -0,0 +1,127 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ NGPIris/__init__.py
6
+ NGPIris.egg-info/PKG-INFO
7
+ NGPIris.egg-info/SOURCES.txt
8
+ NGPIris.egg-info/dependency_links.txt
9
+ NGPIris.egg-info/entry_points.txt
10
+ NGPIris.egg-info/requires.txt
11
+ NGPIris.egg-info/top_level.txt
12
+ NGPIris/cli/__init__.py
13
+ NGPIris/hci/__init__.py
14
+ NGPIris/hci/exceptions.py
15
+ NGPIris/hci/hci.py
16
+ NGPIris/hci/helpers.py
17
+ NGPIris/hcp/__init__.py
18
+ NGPIris/hcp/exceptions.py
19
+ NGPIris/hcp/hcp.py
20
+ NGPIris/hcp/helpers.py
21
+ NGPIris/hcp/statistics.py
22
+ NGPIris/parse_credentials/__init__.py
23
+ NGPIris/parse_credentials/parse_credentials.py
24
+ NGPIris/utils/__init__.py
25
+ NGPIris/utils/utils.py
26
+ docs/IRIS_5_changelog.md
27
+ docs/Makefile
28
+ docs/NGPIris.cli.rst
29
+ docs/NGPIris.hci.rst
30
+ docs/NGPIris.hcp.rst
31
+ docs/NGPIris.parse_credentials.rst
32
+ docs/NGPIris.rst
33
+ docs/NGPIris.utils.rst
34
+ docs/Tutorial.md
35
+ docs/conf.py
36
+ docs/index.rst
37
+ docs/make.bat
38
+ docs/modules.rst
39
+ docs/_build/.DS_Store
40
+ docs/_build/doctrees/IRIS_5_changelog.doctree
41
+ docs/_build/doctrees/NGPIris.cli.doctree
42
+ docs/_build/doctrees/NGPIris.doctree
43
+ docs/_build/doctrees/NGPIris.hci.doctree
44
+ docs/_build/doctrees/NGPIris.hcp.doctree
45
+ docs/_build/doctrees/NGPIris.parse_credentials.doctree
46
+ docs/_build/doctrees/NGPIris.utils.doctree
47
+ docs/_build/doctrees/README.doctree
48
+ docs/_build/doctrees/Tutorial.doctree
49
+ docs/_build/doctrees/environment.pickle
50
+ docs/_build/doctrees/index.doctree
51
+ docs/_build/doctrees/modules.doctree
52
+ docs/_build/html/.buildinfo
53
+ docs/_build/html/IRIS_5_changelog.html
54
+ docs/_build/html/NGPIris.cli.html
55
+ docs/_build/html/NGPIris.hci.html
56
+ docs/_build/html/NGPIris.hcp.html
57
+ docs/_build/html/NGPIris.html
58
+ docs/_build/html/NGPIris.parse_credentials.html
59
+ docs/_build/html/NGPIris.utils.html
60
+ docs/_build/html/README.html
61
+ docs/_build/html/Tutorial.html
62
+ docs/_build/html/genindex.html
63
+ docs/_build/html/index.html
64
+ docs/_build/html/modules.html
65
+ docs/_build/html/objects.inv
66
+ docs/_build/html/py-modindex.html
67
+ docs/_build/html/search.html
68
+ docs/_build/html/searchindex.js
69
+ docs/_build/html/_downloads/ee00c4f6f22dc2671c766f728f00006f/credentials_template.json
70
+ docs/_build/html/_modules/index.html
71
+ docs/_build/html/_modules/NGPIris/cli.html
72
+ docs/_build/html/_modules/NGPIris/hci/exceptions.html
73
+ docs/_build/html/_modules/NGPIris/hci/hci.html
74
+ docs/_build/html/_modules/NGPIris/hci/helpers.html
75
+ docs/_build/html/_modules/NGPIris/hcp/exceptions.html
76
+ docs/_build/html/_modules/NGPIris/hcp/hcp.html
77
+ docs/_build/html/_modules/NGPIris/hcp/helpers.html
78
+ docs/_build/html/_modules/NGPIris/hcp/statistics.html
79
+ docs/_build/html/_modules/NGPIris/parse_credentials/parse_credentials.html
80
+ docs/_build/html/_modules/NGPIris/utils/utils.html
81
+ docs/_build/html/_sources/IRIS_5_changelog.md.txt
82
+ docs/_build/html/_sources/NGPIris.cli.rst.txt
83
+ docs/_build/html/_sources/NGPIris.hci.rst.txt
84
+ docs/_build/html/_sources/NGPIris.hcp.rst.txt
85
+ docs/_build/html/_sources/NGPIris.parse_credentials.rst.txt
86
+ docs/_build/html/_sources/NGPIris.rst.txt
87
+ docs/_build/html/_sources/NGPIris.utils.rst.txt
88
+ docs/_build/html/_sources/README.md.txt
89
+ docs/_build/html/_sources/Tutorial.md.txt
90
+ docs/_build/html/_sources/index.rst.txt
91
+ docs/_build/html/_sources/modules.rst.txt
92
+ docs/_build/html/_static/alabaster.css
93
+ docs/_build/html/_static/basic.css
94
+ docs/_build/html/_static/custom.css
95
+ docs/_build/html/_static/debug.css
96
+ docs/_build/html/_static/doctools.js
97
+ docs/_build/html/_static/documentation_options.js
98
+ docs/_build/html/_static/file.png
99
+ docs/_build/html/_static/language_data.js
100
+ docs/_build/html/_static/minus.png
101
+ docs/_build/html/_static/plus.png
102
+ docs/_build/html/_static/pygments.css
103
+ docs/_build/html/_static/searchtools.js
104
+ docs/_build/html/_static/skeleton.css
105
+ docs/_build/html/_static/sphinx_highlight.js
106
+ docs/_build/html/_static/scripts/furo-extensions.js
107
+ docs/_build/html/_static/scripts/furo.js
108
+ docs/_build/html/_static/scripts/furo.js.LICENSE.txt
109
+ docs/_build/html/_static/scripts/furo.js.map
110
+ docs/_build/html/_static/styles/furo-extensions.css
111
+ docs/_build/html/_static/styles/furo-extensions.css.map
112
+ docs/_build/html/_static/styles/furo.css
113
+ docs/_build/html/_static/styles/furo.css.map
114
+ tests/test_hci.py
115
+ tests/test_hcp.py
116
+ tests/test_parse_credentials.py
117
+ tests/data/80MB_test_file
118
+ tests/data/complete_creds_0.json
119
+ tests/data/complete_creds_1.json
120
+ tests/data/complete_creds_2.json
121
+ tests/data/incomplete_creds_0.json
122
+ tests/data/incomplete_creds_1.json
123
+ tests/data/incomplete_creds_2.json
124
+ tests/data/incomplete_creds_3.json
125
+ tests/data/incomplete_creds_4.json
126
+ tests/data/a folder of data/80MB_test_file_0
127
+ tests/data/a folder of data/80MB_test_file_1
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: NGPIris
3
- Version: 5.2.0
3
+ Version: 5.2.0.dev1
4
4
  Author-email: Erik Brink <erik.brink@gu.se>, Isak Sylvin <isak.sylvin@gu.se>
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
Binary file
@@ -0,0 +1,4 @@
1
+ # Sphinx build info version 1
2
+ # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
3
+ config: d9c1d66de873cf4315be327a96406c4d
4
+ tags: 645f666f9bcd5a90fca523b33c5a78b7