s3arch 0.1.3 → 0.1.4
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.
- checksums.yaml +4 -4
- data/lib/s3arch/version.rb +1 -1
- data/lib/tasks/s3arch.rake +115 -84
- metadata +2 -30
- checksums.yaml.gz.sig +0 -2
- data/certs/stowzilla.pem +0 -26
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e94c87e16c5a1c133e8b155aa86f7993fda2e29c1f25b1039d4344eb28c5e8f
|
|
4
|
+
data.tar.gz: fa25590c4becae78ca1a79c6a76bc5e884819c472bafcca5e996a2439d70112a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eb5464878dad0a59d3dfc2b0f23737eb99a88fa1c15889557a3c9d41eef9686b6614d3e647ad463143bbe6f3a388b7516d67515ec7b90044b2332d634b49e6a7
|
|
7
|
+
data.tar.gz: d504be859a8a49b19be69c5fd354e9823b48bf67ce6bee7753b69e3ef6f88763323e6582ba7ed7ae227a0c6b8f20ec09903efcbac294cf7227e21fd7638030bc
|
data/lib/s3arch/version.rb
CHANGED
data/lib/tasks/s3arch.rake
CHANGED
|
@@ -2,98 +2,129 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative '../s3arch/version'
|
|
4
4
|
|
|
5
|
+
module S3archLayerBuilder
|
|
6
|
+
module_function
|
|
7
|
+
|
|
8
|
+
def build_layer(ruby_version:, architecture:, output_file:, s3arch_version:)
|
|
9
|
+
require 'tmpdir'
|
|
10
|
+
require 'fileutils'
|
|
11
|
+
|
|
12
|
+
FileUtils.mkdir_p(File.dirname(output_file))
|
|
13
|
+
|
|
14
|
+
puts "🔨 Building Lambda layer (Ruby #{ruby_version} / #{architecture}, s3arch #{s3arch_version})..."
|
|
15
|
+
|
|
16
|
+
tmpdir = Dir.mktmpdir('s3arch-layer')
|
|
17
|
+
begin
|
|
18
|
+
write_gemfile(tmpdir, s3arch_version)
|
|
19
|
+
run_docker_build(tmpdir, ruby_version, architecture)
|
|
20
|
+
strip_layer("#{tmpdir}/layer")
|
|
21
|
+
verify_layer("#{tmpdir}/layer")
|
|
22
|
+
create_zip("#{tmpdir}/layer", output_file)
|
|
23
|
+
ensure
|
|
24
|
+
system('sudo', 'rm', '-rf', tmpdir) || FileUtils.rm_rf(tmpdir)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def write_gemfile(tmpdir, s3arch_version)
|
|
29
|
+
File.write("#{tmpdir}/Gemfile", <<~GEMFILE)
|
|
30
|
+
source 'https://rubygems.org'
|
|
31
|
+
gem 's3arch', '#{s3arch_version}'
|
|
32
|
+
GEMFILE
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def run_docker_build(tmpdir, ruby_version, architecture)
|
|
36
|
+
docker_image = "public.ecr.aws/sam/build-ruby#{ruby_version}:latest-#{architecture}"
|
|
37
|
+
platform = architecture == 'x86_64' ? 'linux/amd64' : 'linux/arm64'
|
|
38
|
+
|
|
39
|
+
build_script = docker_build_script(ruby_version)
|
|
40
|
+
|
|
41
|
+
docker_cmd = [
|
|
42
|
+
'docker', 'run', '--rm',
|
|
43
|
+
'--platform', platform,
|
|
44
|
+
'-v', "#{tmpdir}:/build",
|
|
45
|
+
'-w', '/build',
|
|
46
|
+
docker_image,
|
|
47
|
+
'/bin/bash', '-c', build_script
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
puts "🐳 Building in Docker (#{docker_image})..."
|
|
51
|
+
abort '❌ Docker build failed' unless system(*docker_cmd)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def docker_build_script(ruby_version)
|
|
55
|
+
<<~BASH
|
|
56
|
+
yum install -y sqlite-devel 2>/dev/null || dnf install -y sqlite-devel 2>/dev/null
|
|
57
|
+
bundle config set --local path /build/layer/ruby/gems/#{ruby_version}.0
|
|
58
|
+
bundle config set --local without "development test"
|
|
59
|
+
bundle config set --local deployment false
|
|
60
|
+
bundle install
|
|
61
|
+
NESTED="/build/layer/ruby/gems/#{ruby_version}.0/ruby/#{ruby_version}.0"
|
|
62
|
+
if [ -d "$NESTED" ]; then
|
|
63
|
+
mkdir -p /build/layer-final/ruby/gems/#{ruby_version}.0
|
|
64
|
+
cp -a "$NESTED"/* /build/layer-final/ruby/gems/#{ruby_version}.0/
|
|
65
|
+
rm -rf /build/layer
|
|
66
|
+
mv /build/layer-final /build/layer
|
|
67
|
+
fi
|
|
68
|
+
BASH
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def strip_layer(layer_dir)
|
|
72
|
+
puts '🧹 Stripping layer...'
|
|
73
|
+
|
|
74
|
+
Dir.glob("#{layer_dir}/ruby/gems/*/gems/*/").each do |gem_dir|
|
|
75
|
+
%w[spec test tests doc docs examples benchmarks].each do |fat_dir|
|
|
76
|
+
FileUtils.rm_rf("#{gem_dir}#{fat_dir}")
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
junk_patterns = %w[
|
|
81
|
+
*.md *.rdoc *.txt *.c *.h *.o Makefile *.log
|
|
82
|
+
CHANGELOG* HISTORY* LICENSE* README* .gitignore Rakefile
|
|
83
|
+
]
|
|
84
|
+
junk_patterns.each do |pattern|
|
|
85
|
+
Dir.glob("#{layer_dir}/**/#{pattern}").each { |f| FileUtils.rm_f(f) }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
Dir.glob("#{layer_dir}/**/*.so").each do |so|
|
|
89
|
+
system('strip', '--strip-debug', so, err: File::NULL)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def verify_layer(layer_dir)
|
|
94
|
+
sqlite_so = Dir.glob("#{layer_dir}/**/sqlite3_native.so") +
|
|
95
|
+
Dir.glob("#{layer_dir}/**/sqlite3.so")
|
|
96
|
+
abort '❌ sqlite3 native extension NOT found in layer' if sqlite_so.empty?
|
|
97
|
+
puts '✅ sqlite3 native extension included'
|
|
98
|
+
|
|
99
|
+
s3arch_lib = Dir.glob("#{layer_dir}/**/gems/s3arch-*/lib/s3arch.rb")
|
|
100
|
+
abort '❌ s3arch gem NOT found in layer' if s3arch_lib.empty?
|
|
101
|
+
puts '✅ s3arch gem included'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def create_zip(layer_dir, output_file)
|
|
105
|
+
FileUtils.rm_f(output_file)
|
|
106
|
+
abort '❌ Failed to create zip' unless system('zip', '-qr', output_file, 'ruby/', chdir: layer_dir)
|
|
107
|
+
|
|
108
|
+
size = `du -h #{output_file}`.split("\t").first
|
|
109
|
+
puts "✅ Layer built: #{output_file} (#{size})"
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
5
113
|
namespace :s3arch do
|
|
6
114
|
namespace :layer do
|
|
7
115
|
desc 'Build the Lambda layer zip (defaults: RUBY_VERSION=3.4, ARCHITECTURE=x86_64)'
|
|
8
116
|
task :build do
|
|
9
|
-
require 'tmpdir'
|
|
10
|
-
require 'fileutils'
|
|
11
|
-
|
|
12
117
|
ruby_version = ENV.fetch('RUBY_VERSION', '3.4')
|
|
13
118
|
architecture = ENV.fetch('ARCHITECTURE', 'x86_64')
|
|
14
119
|
output_file = File.expand_path(ENV.fetch('OUTPUT', 'pkg/sqlite-layer.zip'))
|
|
15
120
|
s3arch_version = ENV.fetch('S3ARCH_VERSION', "~> #{S3arch::VERSION.sub(/\.\d+$/, '.0')}")
|
|
16
121
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
File.write("#{tmpdir}/Gemfile", <<~GEMFILE)
|
|
24
|
-
source 'https://rubygems.org'
|
|
25
|
-
gem 'sqlite3', '~> 2.0'
|
|
26
|
-
gem 's3arch', '#{s3arch_version}'
|
|
27
|
-
GEMFILE
|
|
28
|
-
|
|
29
|
-
docker_image = "public.ecr.aws/sam/build-ruby#{ruby_version}:latest-#{architecture}"
|
|
30
|
-
platform = architecture == 'x86_64' ? 'linux/amd64' : 'linux/arm64'
|
|
31
|
-
|
|
32
|
-
build_script = <<~BASH
|
|
33
|
-
yum install -y sqlite-devel 2>/dev/null || dnf install -y sqlite-devel 2>/dev/null
|
|
34
|
-
bundle config set --local path /build/layer/ruby/gems/#{ruby_version}.0
|
|
35
|
-
bundle config set --local without "development test"
|
|
36
|
-
bundle config set --local deployment false
|
|
37
|
-
bundle install
|
|
38
|
-
NESTED="/build/layer/ruby/gems/#{ruby_version}.0/ruby/#{ruby_version}.0"
|
|
39
|
-
if [ -d "$NESTED" ]; then
|
|
40
|
-
mkdir -p /build/layer-final/ruby/gems/#{ruby_version}.0
|
|
41
|
-
cp -a "$NESTED"/* /build/layer-final/ruby/gems/#{ruby_version}.0/
|
|
42
|
-
rm -rf /build/layer
|
|
43
|
-
mv /build/layer-final /build/layer
|
|
44
|
-
fi
|
|
45
|
-
BASH
|
|
46
|
-
|
|
47
|
-
docker_cmd = [
|
|
48
|
-
'docker', 'run', '--rm',
|
|
49
|
-
'--platform', platform,
|
|
50
|
-
'-v', "#{tmpdir}:/build",
|
|
51
|
-
'-w', '/build',
|
|
52
|
-
docker_image,
|
|
53
|
-
'/bin/bash', '-c', build_script
|
|
54
|
-
]
|
|
55
|
-
|
|
56
|
-
puts "🐳 Building in Docker (#{docker_image})..."
|
|
57
|
-
abort '❌ Docker build failed' unless system(*docker_cmd)
|
|
58
|
-
|
|
59
|
-
layer_dir = "#{tmpdir}/layer"
|
|
60
|
-
|
|
61
|
-
puts '🧹 Stripping layer...'
|
|
62
|
-
Dir.glob("#{layer_dir}/ruby/gems/*/gems/*/").each do |gem_dir|
|
|
63
|
-
%w[spec test tests doc docs examples benchmarks].each do |fat_dir|
|
|
64
|
-
FileUtils.rm_rf("#{gem_dir}#{fat_dir}")
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
junk_patterns = %w[
|
|
69
|
-
*.md *.rdoc *.txt *.c *.h *.o Makefile *.log
|
|
70
|
-
CHANGELOG* HISTORY* LICENSE* README* .gitignore Rakefile
|
|
71
|
-
]
|
|
72
|
-
junk_patterns.each do |pattern|
|
|
73
|
-
Dir.glob("#{layer_dir}/**/#{pattern}").each { |f| FileUtils.rm_f(f) }
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
Dir.glob("#{layer_dir}/**/*.so").each do |so|
|
|
77
|
-
system('strip', '--strip-debug', so, err: File::NULL)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
sqlite_so = Dir.glob("#{layer_dir}/**/sqlite3_native.so") +
|
|
81
|
-
Dir.glob("#{layer_dir}/**/sqlite3.so")
|
|
82
|
-
abort '❌ sqlite3 native extension NOT found in layer' if sqlite_so.empty?
|
|
83
|
-
puts '✅ sqlite3 native extension included'
|
|
84
|
-
|
|
85
|
-
s3arch_lib = Dir.glob("#{layer_dir}/**/gems/s3arch-*/lib/s3arch.rb")
|
|
86
|
-
abort '❌ s3arch gem NOT found in layer' if s3arch_lib.empty?
|
|
87
|
-
puts '✅ s3arch gem included'
|
|
88
|
-
|
|
89
|
-
FileUtils.rm_f(output_file)
|
|
90
|
-
abort '❌ Failed to create zip' unless system('zip', '-qr', output_file, 'ruby/', chdir: layer_dir)
|
|
91
|
-
|
|
92
|
-
size = `du -h #{output_file}`.split("\t").first
|
|
93
|
-
puts "✅ Layer built: #{output_file} (#{size})"
|
|
94
|
-
ensure
|
|
95
|
-
system('sudo', 'rm', '-rf', tmpdir) || FileUtils.rm_rf(tmpdir)
|
|
96
|
-
end
|
|
122
|
+
S3archLayerBuilder.build_layer(
|
|
123
|
+
ruby_version: ruby_version,
|
|
124
|
+
architecture: architecture,
|
|
125
|
+
output_file: output_file,
|
|
126
|
+
s3arch_version: s3arch_version
|
|
127
|
+
)
|
|
97
128
|
end
|
|
98
129
|
|
|
99
130
|
desc 'Build and publish the Lambda layer (set AWS_PROFILE, LAYER_NAME=stowzilla-sqlite3-ruby)'
|
|
@@ -127,7 +158,7 @@ namespace :s3arch do
|
|
|
127
158
|
owner_id = args.owner_id || ENV.fetch('OWNER_ID', nil)
|
|
128
159
|
abort '❌ Usage: rake s3arch:rebuild[OWNER_ID]' unless owner_id
|
|
129
160
|
|
|
130
|
-
S3arch.configure
|
|
161
|
+
S3arch.configure(&:from_env!)
|
|
131
162
|
|
|
132
163
|
puts "🔄 Rebuilding index for #{owner_id}..."
|
|
133
164
|
S3arch::Indexer.new.rebuild(owner_id)
|
metadata
CHANGED
|
@@ -1,39 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: s3arch
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Dalton
|
|
8
8
|
bindir: bin
|
|
9
|
-
cert_chain:
|
|
10
|
-
- |
|
|
11
|
-
-----BEGIN CERTIFICATE-----
|
|
12
|
-
MIIEdDCCAtygAwIBAgIBATANBgkqhkiG9w0BAQsFADBAMQ4wDAYDVQQDDAVhZ2Vu
|
|
13
|
-
dDEZMBcGCgmSJomT8ixkARkWCXN0b3d6aWxsYTETMBEGCgmSJomT8ixkARkWA2Nv
|
|
14
|
-
bTAeFw0yNjA2MDgxOTExNTlaFw0yNzA2MDgxOTExNTlaMEAxDjAMBgNVBAMMBWFn
|
|
15
|
-
ZW50MRkwFwYKCZImiZPyLGQBGRYJc3Rvd3ppbGxhMRMwEQYKCZImiZPyLGQBGRYD
|
|
16
|
-
Y29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAupBquKI/4WvXOgND
|
|
17
|
-
pXyqH2GllZs1wG4TWWdn/DoMg45UoCwD+AWEuGrIdInBCpPN8vEJNJWPoM/RrU+b
|
|
18
|
-
xRBZT4uUk00bnZRW2SYh5GJSqBoBR+rWc2DGkXyGfdRU2sQvkB0+is6ChgQ61WMM
|
|
19
|
-
33LE9+loBlVsZ6EVtrc18Uh2OW0mJpe0hN2nmBrxZqqOZigxC4DKRMFHvpRkxSb6
|
|
20
|
-
mD4kit1AcwX9NEWJsXxrPaetL/SB/VbXaEZX93XAvp6USaXvCWt4slkDS2mIvqtn
|
|
21
|
-
9DtGC43LFC7SDGbnsG9PVenQgVCi8UWFPUAab0PqZSlmi3Qlbhw8qTGPp5Cbv4vz
|
|
22
|
-
qjC2UGPOQigA/7lbbGRhCohMrjOVHMAQwkcgiIqtolUoYlnvPMIy+m3pdvgDv/PH
|
|
23
|
-
bsZGvXQ7i0458xsmp1vaKthZocVAR+GboHbuIiYPUnO45ccXUQ00x6365tTe7mZi
|
|
24
|
-
NvmUYdAGbQmVvFqyxF7IYA6sF74L2Lstu0knSfss557bAe1HAgMBAAGjeTB3MAkG
|
|
25
|
-
A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSnxTL/lNBCeLqpeVIX6AUY
|
|
26
|
-
kel4zjAeBgNVHREEFzAVgRNhZ2VudEBzdG93emlsbGEuY29tMB4GA1UdEgQXMBWB
|
|
27
|
-
E2FnZW50QHN0b3d6aWxsYS5jb20wDQYJKoZIhvcNAQELBQADggGBACm9Fjit/UCv
|
|
28
|
-
FxlKqeiCTIG94cIx+QrWAOJSx9knKydwUec1u04D/DbfZjTn3C2Bj227QgxeUn+6
|
|
29
|
-
if3e2v7zAk1896hLmGYzML0+nxQPb0vmtdLR7HETUlSKTVabcv1fbwLyjsuGrBvk
|
|
30
|
-
y51vOEzUEZ508a9yepLYqrQu1kOju4d57c9oA5l3H0mMKWz7av9tFj0B+STvuaWk
|
|
31
|
-
HRYDWc5HgOEVTyV+w0uFt2Kw4OCb8C42uSvC5RfYYtw78MSP+5Ru+LXJ7XOtmuN0
|
|
32
|
-
E6GVmofQ17ig9O3rgfFbMendSInrRmvPIGswvM1yivq9NOllFbdck2OJKPx6FCJF
|
|
33
|
-
7SJIkXQfc9P4B5iASIV1d1FsE0YX+g3jHXPJK/4mGL5bAyBKzpMfQB/mg6vQBzkh
|
|
34
|
-
aOKPwcreFj7TznBl89R5tNS9wZQfPVR98zgPyocddWhK18eQNMSBUnv4eeJ8PPbk
|
|
35
|
-
DovL+G8ajHDZ9fjH/+GVYHEMuiVdLarXrKJpHC1VfGTTUAp4NSEpUQ==
|
|
36
|
-
-----END CERTIFICATE-----
|
|
9
|
+
cert_chain: []
|
|
37
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
38
11
|
dependencies:
|
|
39
12
|
- !ruby/object:Gem::Dependency
|
|
@@ -117,7 +90,6 @@ files:
|
|
|
117
90
|
- CHANGELOG.md
|
|
118
91
|
- LICENSE.txt
|
|
119
92
|
- README.md
|
|
120
|
-
- certs/stowzilla.pem
|
|
121
93
|
- infrastructure/routes.tf.rb
|
|
122
94
|
- infrastructure/schema.tf.rb
|
|
123
95
|
- lambda/controllers/s3arch_controller.rb
|
checksums.yaml.gz.sig
DELETED
data/certs/stowzilla.pem
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIEdDCCAtygAwIBAgIBATANBgkqhkiG9w0BAQsFADBAMQ4wDAYDVQQDDAVhZ2Vu
|
|
3
|
-
dDEZMBcGCgmSJomT8ixkARkWCXN0b3d6aWxsYTETMBEGCgmSJomT8ixkARkWA2Nv
|
|
4
|
-
bTAeFw0yNjA2MDgxOTExNTlaFw0yNzA2MDgxOTExNTlaMEAxDjAMBgNVBAMMBWFn
|
|
5
|
-
ZW50MRkwFwYKCZImiZPyLGQBGRYJc3Rvd3ppbGxhMRMwEQYKCZImiZPyLGQBGRYD
|
|
6
|
-
Y29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAupBquKI/4WvXOgND
|
|
7
|
-
pXyqH2GllZs1wG4TWWdn/DoMg45UoCwD+AWEuGrIdInBCpPN8vEJNJWPoM/RrU+b
|
|
8
|
-
xRBZT4uUk00bnZRW2SYh5GJSqBoBR+rWc2DGkXyGfdRU2sQvkB0+is6ChgQ61WMM
|
|
9
|
-
33LE9+loBlVsZ6EVtrc18Uh2OW0mJpe0hN2nmBrxZqqOZigxC4DKRMFHvpRkxSb6
|
|
10
|
-
mD4kit1AcwX9NEWJsXxrPaetL/SB/VbXaEZX93XAvp6USaXvCWt4slkDS2mIvqtn
|
|
11
|
-
9DtGC43LFC7SDGbnsG9PVenQgVCi8UWFPUAab0PqZSlmi3Qlbhw8qTGPp5Cbv4vz
|
|
12
|
-
qjC2UGPOQigA/7lbbGRhCohMrjOVHMAQwkcgiIqtolUoYlnvPMIy+m3pdvgDv/PH
|
|
13
|
-
bsZGvXQ7i0458xsmp1vaKthZocVAR+GboHbuIiYPUnO45ccXUQ00x6365tTe7mZi
|
|
14
|
-
NvmUYdAGbQmVvFqyxF7IYA6sF74L2Lstu0knSfss557bAe1HAgMBAAGjeTB3MAkG
|
|
15
|
-
A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSnxTL/lNBCeLqpeVIX6AUY
|
|
16
|
-
kel4zjAeBgNVHREEFzAVgRNhZ2VudEBzdG93emlsbGEuY29tMB4GA1UdEgQXMBWB
|
|
17
|
-
E2FnZW50QHN0b3d6aWxsYS5jb20wDQYJKoZIhvcNAQELBQADggGBACm9Fjit/UCv
|
|
18
|
-
FxlKqeiCTIG94cIx+QrWAOJSx9knKydwUec1u04D/DbfZjTn3C2Bj227QgxeUn+6
|
|
19
|
-
if3e2v7zAk1896hLmGYzML0+nxQPb0vmtdLR7HETUlSKTVabcv1fbwLyjsuGrBvk
|
|
20
|
-
y51vOEzUEZ508a9yepLYqrQu1kOju4d57c9oA5l3H0mMKWz7av9tFj0B+STvuaWk
|
|
21
|
-
HRYDWc5HgOEVTyV+w0uFt2Kw4OCb8C42uSvC5RfYYtw78MSP+5Ru+LXJ7XOtmuN0
|
|
22
|
-
E6GVmofQ17ig9O3rgfFbMendSInrRmvPIGswvM1yivq9NOllFbdck2OJKPx6FCJF
|
|
23
|
-
7SJIkXQfc9P4B5iASIV1d1FsE0YX+g3jHXPJK/4mGL5bAyBKzpMfQB/mg6vQBzkh
|
|
24
|
-
aOKPwcreFj7TznBl89R5tNS9wZQfPVR98zgPyocddWhK18eQNMSBUnv4eeJ8PPbk
|
|
25
|
-
DovL+G8ajHDZ9fjH/+GVYHEMuiVdLarXrKJpHC1VfGTTUAp4NSEpUQ==
|
|
26
|
-
-----END CERTIFICATE-----
|
data.tar.gz.sig
DELETED
|
Binary file
|
metadata.gz.sig
DELETED
|
Binary file
|