mod_expires.xml revision 6fbd2e53c97ea6976d93e0ac521adabc55e0fb73
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<?xml version="1.0"?>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<!--
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny Copyright 2002-2004 The Apache Software Foundation
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny Licensed under the Apache License, Version 2.0 (the "License");
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny you may not use this file except in compliance with the License.
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny You may obtain a copy of the License at
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny http://www.apache.org/licenses/LICENSE-2.0
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny Unless required by applicable law or agreed to in writing, software
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny distributed under the License is distributed on an "AS IS" BASIS,
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny See the License for the specific language governing permissions and
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny limitations under the License.
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny-->
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<modulesynopsis metafile="mod_expires.xml.meta">
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<name>mod_expires</name>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<description>Generation of <code>Expires</code> HTTP headers according to
f26c954658dfd7461f290f0b5d924951a6db219aJan Zelenyuser-specified criteria</description>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<status>Extension</status>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<sourcefile>mod_expires.c</sourcefile>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher<identifier>expires_module</identifier>
fae99bfe4bfc8b4a12e9c2a0ad01b3684c22f934Simo Sorce
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<summary>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>This module controls the setting of the <code>Expires</code>
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose HTTP header in server responses. The expiration date can set to
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose be relative to either the time the source file was last
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose modified, or to the time of the client access.</p>
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose <p>The <code>Expires</code> HTTP header is an instruction to
d81d8d3dc151ebc95cd0e3f3b14c1cdaa48980f1Sumit Bose the client about the document's validity and persistence. If
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny cached, the document may be fetched from the cache rather than
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny from the source until this time has passed. After that, the
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny cache copy is considered "expired" and invalid, and a new copy
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny must be obtained from the source.</p>
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek</summary>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek<section id="AltSyn"><title>Alternate Interval Syntax</title>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>The <directive module="mod_expires">ExpiresDefault</directive> and
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <directive module="mod_expires">ExpiresByType</directive> directives
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny can also be defined in a more readable syntax of the form:</p>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <example>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny ExpiresDefault "&lt;base&gt; [plus] {&lt;num&gt;
684d1b48b5582a1bf7812b8c3c663592dc6dfed9Pavel Březina &lt;type&gt;}*"<br />
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose ExpiresByType type/encoding "&lt;base&gt; [plus]
b56b06e199f15a8a840b36bc7cb8010e39ae761dSumit Bose {&lt;num&gt; &lt;type&gt;}*"
b9fbeb75e7a4f50f98d979a70a710f9221892483Lukas Slebodnik </example>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>where &lt;base&gt; is one of:</p>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <ul>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <li><code>access</code></li>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <li><code>now</code> (equivalent to
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny '<code>access</code>')</li>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <li><code>modification</code></li>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny </ul>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>The <code>plus</code> keyword is optional. &lt;num&gt;
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny should be an integer value [acceptable to <code>atoi()</code>],
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny and &lt;type&gt; is one of:</p>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <ul>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>years</code></li>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>months</code></li>
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov <li><code>weeks</code></li>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>days</code></li>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>hours</code></li>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>minutes</code></li>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose <li><code>seconds</code></li>
4c08db0fb0dda3d27b1184248ca5c800d7ce23f0Michal Zidek </ul>
4c08db0fb0dda3d27b1184248ca5c800d7ce23f0Michal Zidek
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>For example, any of the following directives can be used to
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny make documents expire 1 month after being accessed, by
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny default:</p>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose
83bf46f4066e3d5e838a32357c201de9bd6ecdfdNikolai Kondrashov <example>
15b5d885e28afcd6c3c19f900eea2a8e00c3e6d3Sumit Bose ExpiresDefault "access plus 1 month"<br />
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov ExpiresDefault "access plus 4 weeks"<br />
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny ExpiresDefault "access plus 30 days"
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny </example>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
83bf46f4066e3d5e838a32357c201de9bd6ecdfdNikolai Kondrashov <p>The expiry time can be fine-tuned by adding several
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov '&lt;num&gt; &lt;type&gt;' clauses:</p>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <example>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny ExpiresByType text/html "access plus 1 month 15
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny days 2 hours"<br />
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny ExpiresByType image/gif "modification plus 5 hours 3
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny minutes"
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny </example>
326f4fc3125e155ee2d484fe921aafddd6b5a49dPavel Březina
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>Note that if you use a modification date based setting, the
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny Expires header will <strong>not</strong> be added to content
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny that does not come from a file on disk. This is due to the fact
b56b06e199f15a8a840b36bc7cb8010e39ae761dSumit Bose that there is no modification time for such content.</p>
fdda4b659fa3be3027df91a2b053835186ec2c59Sumit Bose</section>
b56b06e199f15a8a840b36bc7cb8010e39ae761dSumit Bose
b56b06e199f15a8a840b36bc7cb8010e39ae761dSumit Bose<directivesynopsis>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<name>ExpiresActive</name>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<description>Enables generation of <code>Expires</code>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidekheaders</description>
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov<syntax>ExpiresActive On|Off</syntax>
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov<contextlist><context>server config</context>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<context>virtual host</context><context>directory</context>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<context>.htaccess</context></contextlist>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<override>Indexes</override>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek<usage>
684d1b48b5582a1bf7812b8c3c663592dc6dfed9Pavel Březina <p>This directive enables or disables the generation of the
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <code>Expires</code> header for the document realm in question.
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny (That is, if found in an <code>.htaccess</code> file, for
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny instance, it applies only to documents generated from that
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek directory.) If set to <code>Off</code>, no <code>Expires</code> header
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek will be generated for any document in the realm (unless overridden at
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny a lower level, such as an <code>.htaccess</code> file overriding a
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek server config file). If set to <code>On</code>, the header will be
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov added to served documents according to the criteria defined by the
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek <directive module="mod_expires">ExpiresByType</directive> and
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <directive module="mod_expires">ExpiresDefault</directive> directives
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny (<em>q.v.</em>).</p>
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>Note that this directive does not guarantee that an
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <code>Expires</code> header will be generated. If the criteria
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose aren't met, no header will be sent, and the effect will be as
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose though this directive wasn't even specified.</p>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose</usage>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose</directivesynopsis>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<directivesynopsis>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher<name>ExpiresByType</name>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<description>Value of the <code>Expires</code> header configured
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovby MIME type</description>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<syntax>ExpiresByType <var>MIME-type</var>
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov<var>&lt;code&gt;seconds</var></syntax>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<contextlist><context>server config</context><context>virtual host</context>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<context>directory</context><context>.htaccess</context></contextlist>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose<override>Indexes</override>
75dd4b05e1dacc76dc9d5f16be31978f84a71dc5Sumit Bose
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher<usage>
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov <p>This directive defines the value of the <code>Expires</code>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher header generated for documents of the specified type (<em>e.g.</em>,
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <code>text/html</code>). The second argument sets the number of
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov seconds that will be added to a base time to construct the expiration
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov date.</p>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <p>The base time is either the last modification time of the
8be5e4497e5008f7807178acdfcbf97365ec4e73Stephen Gallagher file, or the time of the client's access to the document. Which
8be5e4497e5008f7807178acdfcbf97365ec4e73Stephen Gallagher should be used is specified by the
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher <code><var>&lt;code&gt;</var></code> field; <code>M</code>
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher means that the file's last modification time should be used as
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov the base time, and <code>A</code> means the client's access
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov time should be used.</p>
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher <p>The difference in effect is subtle. If <code>M</code> is used,
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher all current copies of the document in all caches will expire at
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher the same time, which can be good for something like a weekly
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher notice that's always found at the same URL. If <code>A</code> is
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov used, the date of expiration is different for each client; this
c20a339d54b39120b4051f690ca759e6d079f177Stephen Gallagher can be good for image files that don't change very often,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov particularly for a set of related documents that all refer to
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher the same images (<em>i.e.</em>, the images will be accessed
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher repeatedly within a relatively short timespan).</p>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <example><title>Example:</title>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher # enable expirations<br />
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher ExpiresActive On<br />
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher # expire GIF images after a month in the client's cache<br />
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov ExpiresByType image/gif A2592000<br />
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov # HTML documents are good for a week from the<br />
bfd59d1a2d0d45125e5164ef12c425690d519f61Jakub Hrozek # time they were changed<br />
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov ExpiresByType text/html M604800
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov </example>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <p>Note that this directive only has effect if
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher <code>ExpiresActive On</code> has been specified. It overrides,
83bf46f4066e3d5e838a32357c201de9bd6ecdfdNikolai Kondrashov for the specified MIME type <em>only</em>, any expiration date
83bf46f4066e3d5e838a32357c201de9bd6ecdfdNikolai Kondrashov set by the <directive module="mod_expires">ExpiresDefault</directive>
21d485184df986e1a123f70c689517386e51a5ceMichal Zidek directive.</p>
58d02e0d3d6d48c97fccdb2ad7212e065671ad6dStephen Gallagher
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny <p>You can also specify the expiration time calculation using
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny an <a href="#AltSyn">alternate syntax</a>, described earlier in
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny this document.</p>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny</usage>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny</directivesynopsis>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny
83bf46f4066e3d5e838a32357c201de9bd6ecdfdNikolai Kondrashov<directivesynopsis>
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek<name>ExpiresDefault</name>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<description>Default algorithm for calculating expiration time</description>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<syntax>ExpiresDefault <var>&lt;code&gt;seconds</var></syntax>
f26c954658dfd7461f290f0b5d924951a6db219aJan Zeleny<contextlist><context>server config</context><context>virtual host</context>
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose<context>directory</context><context>.htaccess</context></contextlist>
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose<override>Indexes</override>
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose<usage>
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose <p>This directive sets the default algorithm for calculating the
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek expiration time for all documents in the affected realm. It can be
1d93029624d708119bbf803e6647a2cbb271f001Sumit Bose overridden on a type-by-type basis by the <directive
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek module="mod_expires">ExpiresByType</directive> directive. See the
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek description of that directive for details about the syntax of the
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek argument, and the <a href="#AltSyn">alternate syntax</a>
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek description as well.</p>
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek</usage>
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek</directivesynopsis>
108db0e3b9e06e530364ef8228634f5e3f6bd3b5Jakub Hrozek</modulesynopsis>
b9fbeb75e7a4f50f98d979a70a710f9221892483Lukas Slebodnik
b9fbeb75e7a4f50f98d979a70a710f9221892483Lukas Slebodnik