Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions data/distrodefs/fedora/imagetypes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -411,8 +411,9 @@
default_menu: 1
lorax_template_package: lorax-templates-generic
lorax_templates:
- 99-generic/runtime-postinstall.tmpl
- 99-generic/runtime-cleanup.tmpl
- path: 99-generic/runtime-postinstall.tmpl
- path: 99-generic/runtime-cleanup.tmpl
after_dracut: true
lorax_logos_package: fedora-logos
lorax_release_package: fedora-release
conditions: &default_installer_config_conditions
Expand Down
5 changes: 3 additions & 2 deletions data/distrodefs/rhel-10/imagetypes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,9 @@
iso_rootfs_type: "squashfs"
lorax_template_package: lorax-templates-rhel
lorax_templates:
- 80-rhel/runtime-postinstall.tmpl
- 80-rhel/runtime-cleanup.tmpl
- path: 80-rhel/runtime-postinstall.tmpl
- path: 80-rhel/runtime-cleanup.tmpl
after_dracut: true
lorax_logos_package: redhat-logos
lorax_release_package: redhat-release
conditions:
Expand Down
5 changes: 3 additions & 2 deletions data/distrodefs/rhel-8/imagetypes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -937,8 +937,9 @@
iso_rootfs_type: "squashfs-ext4"
lorax_template_package: lorax-templates-rhel
lorax_templates:
- 80-rhel/runtime-postinstall.tmpl
- 80-rhel/runtime-cleanup.tmpl
- path: 80-rhel/runtime-postinstall.tmpl
- path: 80-rhel/runtime-cleanup.tmpl
after_dracut: true
lorax_logos_package: redhat-logos
lorax_release_package: redhat-release
conditions:
Expand Down
5 changes: 3 additions & 2 deletions data/distrodefs/rhel-9/imagetypes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1222,8 +1222,9 @@
default_menu: 1
lorax_template_package: lorax-templates-rhel
lorax_templates:
- 80-rhel/runtime-postinstall.tmpl
- 80-rhel/runtime-cleanup.tmpl
- path: 80-rhel/runtime-postinstall.tmpl
- path: 80-rhel/runtime-cleanup.tmpl
after_dracut: true
lorax_logos_package: redhat-logos
lorax_release_package: redhat-release
conditions:
Expand Down
8 changes: 7 additions & 1 deletion pkg/distro/generic/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,13 @@ func installerCustomizations(t *imageType, c *blueprint.Customizations) (manifes
isc.ISOBoot = *isoboot
}

isc.LoraxTemplates = installerConfig.LoraxTemplates
for _, tmpl := range installerConfig.LoraxTemplates {
isc.LoraxTemplates = append(isc.LoraxTemplates, manifest.InstallerLoraxTemplate{
Path: tmpl.Path,
AfterDracut: tmpl.AfterDracut,
})
}

if pkg := installerConfig.LoraxTemplatePackage; pkg != nil {
isc.LoraxTemplatePackage = *pkg
}
Expand Down
13 changes: 9 additions & 4 deletions pkg/distro/installer_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,15 @@ type InstallerConfig struct {
ISOBootType *manifest.ISOBootType `yaml:"iso_boot_type,omitempty"`

// Lorax template settings for org.osbuild.lorax stage
LoraxTemplates []string `yaml:"lorax_templates,omitempty"`
LoraxTemplatePackage *string `yaml:"lorax_template_package"`
LoraxLogosPackage *string `yaml:"lorax_logos_package"`
LoraxReleasePackage *string `yaml:"lorax_release_package"`
LoraxTemplates []InstallerLoraxTemplate `yaml:"lorax_templates,omitempty"`
LoraxTemplatePackage *string `yaml:"lorax_template_package"`
LoraxLogosPackage *string `yaml:"lorax_logos_package"`
LoraxReleasePackage *string `yaml:"lorax_release_package"`
}

type InstallerLoraxTemplate struct {
Path string `yaml:"path"`
AfterDracut bool `yaml:"after_dracut,omitempty"`
}

// InheritFrom inherits unset values from the provided parent configuration and
Expand Down
30 changes: 26 additions & 4 deletions pkg/manifest/anaconda_installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,18 +318,40 @@ func (p *AnacondaInstaller) payloadStages() ([]*osbuild.Stage, error) {
stages = append(stages, osbuild.NewAnacondaStage(anacondaStageOptions))
}

// Some lorax templates have to run before initramfs re-generation and some of
// them afterwards
deferredTemplates := []InstallerLoraxTemplate{}

// Run lorax scripts to setup booting the iso and removing unneeded files
for _, tmpl := range p.InstallerCustomizations.LoraxTemplates {
// If a template is marked to run after dracut generation we put it in our
// deferreds and continue
if tmpl.AfterDracut {
deferredTemplates = append(deferredTemplates, tmpl)
continue
}

stages = append(stages, osbuild.NewLoraxScriptStage(&osbuild.LoraxScriptStageOptions{
Path: tmpl.Path,
Branding: osbuild.Branding{
Release: p.InstallerCustomizations.LoraxReleasePackage,
Logos: p.InstallerCustomizations.LoraxLogosPackage,
},
BaseArch: p.platform.GetArch().String(),
}))
}

// Create a generic initrd suitable for booting Anaconda and activating supported hardware
dracutOptions, err := p.dracutStageOptions()
if err != nil {
return nil, fmt.Errorf("cannot get dracut stage options: %w", err)
}
stages = append(stages, osbuild.NewDracutStage(dracutOptions))

// Run lorax scripts to setup booting the iso and removing unneeded files
// NOTE: MUST run after dracut stage, it removes some of the dracut files from the rootfs
for _, tmpl := range p.InstallerCustomizations.LoraxTemplates {
// Run lorax scripts that were deferred to after initramfs
for _, tmpl := range deferredTemplates {
stages = append(stages, osbuild.NewLoraxScriptStage(&osbuild.LoraxScriptStageOptions{
Path: tmpl,
Path: tmpl.Path,
Branding: osbuild.Branding{
Release: p.InstallerCustomizations.LoraxReleasePackage,
Logos: p.InstallerCustomizations.LoraxLogosPackage,
Expand Down
4 changes: 2 additions & 2 deletions pkg/manifest/anaconda_installer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,8 @@ func TestAnacondaInstallerConfigLorax(t *testing.T) {
installerPipeline.InstallerCustomizations.LoraxTemplatePackage = "lorax-templates-generic"
installerPipeline.InstallerCustomizations.LoraxLogosPackage = "fedora-logos"
installerPipeline.InstallerCustomizations.LoraxReleasePackage = "fedora-release"
installerPipeline.InstallerCustomizations.LoraxTemplates = []string{
"99-generic/runtime-postinstall.tmpl",
installerPipeline.InstallerCustomizations.LoraxTemplates = []manifest.InstallerLoraxTemplate{
manifest.InstallerLoraxTemplate{Path: "99-generic/runtime-postinstall.tmpl"},
}
pipeline, err := manifest.SerializeWith(installerPipeline, manifest.Inputs{Depsolved: depsolvednf.DepsolveResult{Packages: pkgs}})
require.NoError(err)
Expand Down
13 changes: 9 additions & 4 deletions pkg/manifest/installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ type InstallerCustomizations struct {
// Only for RHEL 8.
UseLegacyAnacondaConfig bool

LoraxTemplates []string // Templates to run with org.osbuild.lorax
LoraxTemplatePackage string // Package containing lorax templates, added to build pipeline
LoraxLogosPackage string // eg. fedora-logos, fedora-eln-logos, redhat-logos
LoraxReleasePackage string // eg. fedora-release, fedora-release-eln, redhat-release
LoraxTemplates []InstallerLoraxTemplate // Templates to run with org.osbuild.lorax
LoraxTemplatePackage string // Package containing lorax templates, added to build pipeline
LoraxLogosPackage string // eg. fedora-logos, fedora-eln-logos, redhat-logos
LoraxReleasePackage string // eg. fedora-release, fedora-release-eln, redhat-release

ISORootfsType ISORootfsType
ISOBoot ISOBootType
Expand All @@ -34,3 +34,8 @@ type InstallerCustomizations struct {
Release string
Preview bool
}

type InstallerLoraxTemplate struct {
Path string
AfterDracut bool // Should this template be executed after dracut? Defaults to not.
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b6d32ef27d4b2ba6ea47c57a84b67061eb229fc0
c6cfb76a9b43b8915c30431dce5d4d1416663cca
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1b7358bf7ccf80372f0cd51eb810b30d12613f34
7c8374108e89e52bd85779d4b0ffe53dc969d8bb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7e4b1dfe8eec367b014967ea8d91e445d24d9c82
c5744fd40bcc878c7c9a85795bb7442560961f80
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5899818f4d2be181a529b7f0e235f7f4052d4702
9b54a14d20d47a172df8675648c39ccf6ac1c98d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
63812296035f266a012ebe3710f99983ded8e7d8
ac341aae894322c6ec5d23cc090e59bdbecbfec8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
679cfb5b61013bae5e715c675ef575c249376191
bb496717041b0fe1b80a238d008dff3f58304d57
Original file line number Diff line number Diff line change
@@ -1 +1 @@
70648275b196799112231877957979f2e6519ad8
86301d519e39934910dbe8d8251a0ea3dfc8c950
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d50c968552c2a90ce9123be05ac3ada0c5dce631
e0bb54e2f65455bbf34a0a5633a987daa77316bd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
448e1c4f8c75c6d05393eddbaff870068d21ff9a
361b292c14a36815d35b97d0c0d17c6829cb45ee
Original file line number Diff line number Diff line change
@@ -1 +1 @@
cbccedfb157bfdc3ea144e68c1895e0bc5f3e89c
c003f27de7368b2fbde3d6fc6ba5ef19dafce937
Original file line number Diff line number Diff line change
@@ -1 +1 @@
62ec2a159cc17bbacf2a64d1c89e1ced348fee1a
a3c086ff0e3e5dc07e68a420065d0ad5d020219a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5c681cbc1b2061d48c317b7376a34cdc25c508d8
deb7f8d184b9b8a6dc56e6ee8bf491a483c55c3c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ca59be94dffa45a34bde034914558915f8e957c1
c6240329ebc37c127d736b238a513048d8b2e4ac
Original file line number Diff line number Diff line change
@@ -1 +1 @@
39eca673ddd8c690695237bceeb9a566adc3ca7a
976d3cf5bd4a60de4dc545c34cd179388849c56b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
48204b987aaec12324365c5ab0db1f5e24dd0b20
346125432f274abcebeb241226425796e111427c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ff2acf83806b8d258bba6b1980aad107fe71bb04
69b7f6abe44220b263b4911c331dc7f981ff09df
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e7e45d74fd4ec3e21738a8914b779b77c153874e
4bda6a4c8ac1a461881a5e48e44c4cb0ecba1dc4
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2149185c6b6179ab3c12612e843f15b11dce1288
1ae331a55eefe42bdbecccd03251f3d85d38bb12
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3e8723be1a3aad252dec4e64d9e479ecdd04ae1d
b92dbd05f3ac1f9fd00bc86f410c95153b7c2ec4
Original file line number Diff line number Diff line change
@@ -1 +1 @@
639152ead65eb9b34f6b0c0b27d62f7202b3db20
625ad1e5df59709920f6c75f446eecefb1f63f4c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fc07c6961c6d48d86b8a6a48d346a6291d7fc2d4
cbd27e492a70e0b62f2ca7ef6a0fffeb5f8f6ff9
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8e155538dc9af2de793a9cf51d138947a69451c5
2dfa9c3feb77ba08a0dd8c01af0e3f7acbce8c06
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b2f5720f8f198cb9a8ec5935160a2def1bf748f5
9d74549ff9736b75d8aa401f46d6094653a1a24b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
002bc711704e217bbe66ee9ca07d41874a3b58e6
14c7560b16746449aeead1ee332dc322c1c0ae98
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7badf3d07b313779079c7a6f22e332cdd568ec19
13b8a990f810f2a5fd59e8d2d79fb83b410a8bcc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f0e463bc39d046ba2c8ea788ad6e4d178ad9a9b1
44830951ec3321f67183d631f3f01d9a47cbd088
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18983cc7d7bbdc854618ccca6f15b73f2c47c849
faeacda879cd0b9dc88c3ff16733ba5960b975c2
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ad9353c817a744b101253463f50dd31396f327ab
41882e41aa692c628a8fef9e55f540e5f4bd8402
Original file line number Diff line number Diff line change
@@ -1 +1 @@
718c95c69f86b67a71e1700db23d84c0df45d4a0
917de6c7179da2076b67b173934fc9176a30bb65
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d03ae953a9eee6b88bbacf646f3e44497649a07a
85d99b920ba9dee448de0c236f7ba535beaa80e7
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a4fdc8fdb6fcaf16a71cfb3f52245186f81e8928
75206f2853234ad33d52c1228938334ce391571e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a2ee3e16948becd262570e422e85384fae6245df
8d36fc24cbc3bd342409d0dd682522142b0a929b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6c59218e5cca61cb784906909e4a4850b961d21e
f3f0d918de3bb50a77055f567e4e4b098f52aa0c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ff6722f71a2790370457c34d37f24f3768f7b884
59bf036851c0e255baadaa325dd520ba828f154d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f612d95d8b3d5114d1821ad85847fe2252386c7a
d7f04c23babb621a17050dd4eddd5a7fa72299b2
Original file line number Diff line number Diff line change
@@ -1 +1 @@
dd32e9a1fc485c3b42d5961321bb386bc28362c8
d7a6da2b8735f47eef6ae97f2f59eb6ead3f65f9
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f4df01aec36ec77dd504de133a731ad73d17dc40
52956cd7cfb7c3bc06fbad575dc7c0c4ae9ee354
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1a5d27b96c6dd21723111273444b35ae17888344
1f9f0c18827472cd5e84e8aa0eeec614f505f756
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9dbdca51ee864c0453ed3eb98df27b23e8e5c993
4e7bd706ac53f699f8c50ad2de6081abc1ba45e6
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7a41d630c3912ec8d9fa442f9c4ba86e24dccf4f
5a78db5d53c11e3f00b91e52826974d0f7b6f118
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a4fd0e02ef3b69d071f4f6a19446f96a2a1a3698
98e30cb389a77fc1ce3603b1cfa63067bf772ff8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
203add58e7c84df788492245c40998a1cd82dc01
1f821ec6581bda50f806a09dbd2d1c5af51ea7d8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
40ebcadb4109aedb5f7d563687eed5bcb6219bbf
7c6307874f23be438a4fdf673d29c37271496ffe
Original file line number Diff line number Diff line change
@@ -1 +1 @@
62506f3f371c8425bd84148bcc7692e6dab49c43
5d9055510fe49ba263c5f73457a7ea9dad378496
Original file line number Diff line number Diff line change
@@ -1 +1 @@
55b9d9ba9180ac5377c737fd0f17eae549560694
f21d72125dc923fdfb237193d9a3ecd28ef66b14
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0a595d0e0e3fb30e9727140e04a07f42ba3ad282
3693a89b1d8344bdf1f31078db7604c830ac9c9e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
442f81e36463872f78344f784d77c7269ededf2b
04a34aac6d9592a6a2a82501d70cb4ad39b742f0
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b81e105028e6fde0e6e74a8be81d43af9ec53af6
8a2c651c7f4bb7717f6bfa07d6a4520e7992943e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
65325ee291e48e7f09315f1b35d0aac1d5bb3108
af839222914a716532a3597c8b67ca2dd64f8430
Original file line number Diff line number Diff line change
@@ -1 +1 @@
51e1b04fbbfc287d2a942dca1ca2ac043089617b
519b30ad086ad04ba3858c74d8490d251180e0be
Original file line number Diff line number Diff line change
@@ -1 +1 @@
781df4692d1d70f878c086ec37fe6e287c1ca3a0
b818282e6140bd1674c470537d0fc71e776fbacb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
94adfe92c7289e653055b47273bf7cb41b7ba84f
c9896e56c51f6437e2f3b5195aa37431a2637ee5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
716d3e02c4951b161bc22163926c7136b8a62862
27f0e640c3dbb725d674d43cd137bb1d4737627d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
145c7876a3c066cd0eeee860e8603b7f02dae11f
c6a5f21240885cdb70fd1139ce386655b5cbb1ff
Original file line number Diff line number Diff line change
@@ -1 +1 @@
93b2e588a3b1fe2cc9ed0e5186b9f7efbb572d1a
455cbd9a81b90e7341ab4cebfc5e092e8d26405f
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0646251c6a860b58fe849815f7d055494fd660d5
e145176c5a799df0cac90b4c3f4e4e2e1bf880ad
Original file line number Diff line number Diff line change
@@ -1 +1 @@
889ba9f2484ee94240ba0012867ae5e801e84fca
29e3ef377ef3a0d5df96be1e265a1bbbd15ca3a9
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5af595e4ed3705df642c84ea2e557c31384d4277
866ab3f35e7b43a8107553292335e5babe9011dd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fb9ad2ec173b634b5b00c8a36721a1ae1767b219
b90ec99277b352632bdd7332be85a85548e0e686
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e7ac21be16ef41545c07fa66a41c29b1bc27ace0
774ab73f12213c6a547f800385fa4287cd5530b5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f3d5d17c616d4b26654a87f7846e44d61974e296
dcb2369de1b3c3c26597818ef09fc7f00ad7254c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
135ced9ee0defacbfabb636450b3c16e2afe3a6b
6c954cc23360e7102c20438dc03b7b397d098df3
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1369dd525992536a7832600824dd0c7ac84528da
4a8fc0950049e4b327c3585d3697a20490b4fb09
Original file line number Diff line number Diff line change
@@ -1 +1 @@
47a21f30abe51b9974462179a77b0e1a83ccf3e7
b909b897062f195c0491c57ee8f7ce964e966fc8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ee21e3b0fe4b27871ae8d93f57bc5a58849a2924
4b3a8915f7e7579d6329f8811463b10ea1e1b698
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6974187a8a6f0f80513cf5bc049e7160269ec6e8
baffa15e76b4df252b4a12a08680213851e9ba6f
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eb7b0aaa37ef990c81708e82d9aae141ca4f2986
124eba79f44e67a4f329e9638189f43b06a0e40d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b7bfe945c998b9a05cfa214ffe0c40fcd5d4fcd2
b07b0a3cdb2fd6b5f38c42bab8ca02cb14ef39fd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
26c83b3ed45d798b286c85f83f2266893003cd3b
1e45a707ba22fccd0528752c6e9bd100f2497c6c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a2340c0470441938b7c8be5bf2c02defa8082992
34e38cdad7b459abe6c493534740cc213c908743
Original file line number Diff line number Diff line change
@@ -1 +1 @@
128d5669d0884753a230f4a58b94cd09058d6e28
1195d3b4352c3fb9a8ef6964d03e9f2af8a6d4f0
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1662aa0e61954fed3b8161a83878b04ae7f7c20d
bbd1e044d91a779adae77c55587a0eb4f5935b01
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d1cdb9686b06c91b6102c5c737eb9f1d83577868
fd268d6f7e8db28bf00f24434aada17b219369c4
Original file line number Diff line number Diff line change
@@ -1 +1 @@
259ac988270bad73e616353ae6da4a7562ab328b
4ca03092d573512639b819ec2c25e43ac96959a2
Original file line number Diff line number Diff line change
@@ -1 +1 @@
806ad7a1433cae85897d2d0f90388db59128ff96
2c517c3f207c4d7c24a056899131ab632a949212
Original file line number Diff line number Diff line change
@@ -1 +1 @@
793dee1edb0ac42f1de82501c9b1089f1889c7fb
1e5690c68aa67fee7b96e01afeb5bf0c2c28e956
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9aec22b292a89034bcbde29f036d2882f85e9d7f
a6712c15115621df3ba1b7018987639037a43944
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8a8ff9c3d2e7ff36d5a19fb8d7f05b83d198874d
9dfd3c080e4180a77a76a736bf3405d6a0a69505
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2149ff5664a17d2ff3499e0cf7d457d4725e3b44
89ff9dd7949cd18f186ef42ae95340e5e7a5fb35
Loading
Loading